Optimize/auto complete (#178)
* feat: optimize hive function name auto complete * feat: optimize flink rules that c3 prefer to * feat: optimize flink autoComplete * test: flink auto complete unit tests
This commit is contained in:
@ -15,6 +15,8 @@ export interface CaretPosition {
|
||||
export enum SyntaxContextType {
|
||||
/** catalog name */
|
||||
CATALOG = 'catalog',
|
||||
/** catalog name that will be created */
|
||||
CATALOG_CREATE = 'catalogCreate',
|
||||
/** database name path, such as catalog.db */
|
||||
DATABASE = 'database',
|
||||
/** database name path that will be created */
|
||||
|
@ -23,11 +23,15 @@ export default class FlinkSQL extends BasicParser<FlinkSqlLexer, ProgramContext,
|
||||
}
|
||||
|
||||
protected preferredRules = new Set([
|
||||
FlinkSqlParser.RULE_tablePath, // table name >> select / insert ...
|
||||
FlinkSqlParser.RULE_tablePathCreate, // table name >> create
|
||||
FlinkSqlParser.RULE_databasePath, // database name >> show
|
||||
FlinkSqlParser.RULE_databasePathCreate, // database name >> create
|
||||
FlinkSqlParser.RULE_catalogPath, // catalog name
|
||||
FlinkSqlParser.RULE_databasePath, // database name
|
||||
FlinkSqlParser.RULE_databasePathCreate, // database name that will be created
|
||||
FlinkSqlParser.RULE_tablePath, // table name
|
||||
FlinkSqlParser.RULE_tablePathCreate, // table name that will be created
|
||||
FlinkSqlParser.RULE_viewPath, // view name path
|
||||
FlinkSqlParser.RULE_viewPathCreate, // viewName that will be created
|
||||
FlinkSqlParser.RULE_functionName, // functionName
|
||||
FlinkSqlParser.RULE_functionNameCreate, // functionName that will be created
|
||||
]);
|
||||
|
||||
protected get splitListener () {
|
||||
@ -50,6 +54,18 @@ export default class FlinkSQL extends BasicParser<FlinkSqlLexer, ProgramContext,
|
||||
|
||||
let syntaxContextType: SyntaxContextType;
|
||||
switch (ruleType) {
|
||||
case FlinkSqlParser.RULE_catalogPath: {
|
||||
syntaxContextType = SyntaxContextType.CATALOG;
|
||||
break;
|
||||
}
|
||||
case FlinkSqlParser.RULE_databasePath: {
|
||||
syntaxContextType = SyntaxContextType.DATABASE;
|
||||
break;
|
||||
}
|
||||
case FlinkSqlParser.RULE_databasePathCreate: {
|
||||
syntaxContextType = SyntaxContextType.DATABASE_CREATE;
|
||||
break;
|
||||
}
|
||||
case FlinkSqlParser.RULE_tablePath: {
|
||||
syntaxContextType = SyntaxContextType.TABLE;
|
||||
break;
|
||||
@ -58,16 +74,20 @@ export default class FlinkSQL extends BasicParser<FlinkSqlLexer, ProgramContext,
|
||||
syntaxContextType = SyntaxContextType.TABLE_CREATE;
|
||||
break;
|
||||
}
|
||||
case FlinkSqlParser.RULE_databasePath: {
|
||||
syntaxContextType = SyntaxContextType.DATABASE;
|
||||
case FlinkSqlParser.RULE_viewPath: {
|
||||
syntaxContextType = SyntaxContextType.VIEW;
|
||||
break;
|
||||
}
|
||||
case FlinkSqlParser.RULE_databasePathCreate: {
|
||||
syntaxContextType = SyntaxContextType.DATABASE;
|
||||
case FlinkSqlParser.RULE_viewPathCreate : {
|
||||
syntaxContextType = SyntaxContextType.VIEW_CREATE;
|
||||
break;
|
||||
}
|
||||
case FlinkSqlParser.RULE_catalogPath: {
|
||||
syntaxContextType = SyntaxContextType.CATALOG;
|
||||
case FlinkSqlParser.RULE_functionName : {
|
||||
syntaxContextType = SyntaxContextType.FUNCTION;
|
||||
break;
|
||||
}
|
||||
case FlinkSqlParser.RULE_functionNameCreate : {
|
||||
syntaxContextType = SyntaxContextType.FUNCTION_CREATE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
@ -24,7 +24,8 @@ export default class HiveSQL extends BasicParser<HiveSqlLexer, ProgramContext, H
|
||||
HiveSqlParser.RULE_tableNameCreate, // table name that will be created
|
||||
HiveSqlParser.RULE_viewName, // view name
|
||||
HiveSqlParser.RULE_viewNameCreate, // view name that will be created
|
||||
HiveSqlParser.RULE_userDefinedFuncName, // function name
|
||||
HiveSqlParser.RULE_functionNameForDDL, // function name
|
||||
HiveSqlParser.RULE_functionNameForInvoke, // function name
|
||||
HiveSqlParser.RULE_functionNameCreate, // function name that will be created
|
||||
|
||||
]);
|
||||
@ -72,7 +73,8 @@ export default class HiveSQL extends BasicParser<HiveSqlLexer, ProgramContext, H
|
||||
syntaxContextType = SyntaxContextType.VIEW_CREATE;
|
||||
break;
|
||||
}
|
||||
case HiveSqlParser.RULE_userDefinedFuncName: {
|
||||
case HiveSqlParser.RULE_functionNameForDDL:
|
||||
case HiveSqlParser.RULE_functionNameForInvoke: {
|
||||
syntaxContextType = SyntaxContextType.FUNCTION;
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user