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:
Hayden
2023-10-11 17:15:06 +08:00
committed by GitHub
parent c4030929b2
commit 53ead45ff5
15 changed files with 10825 additions and 9925 deletions

View File

@ -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 */

View File

@ -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:

View File

@ -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;
}