feat(flink): update flinkSql grammar and add some test
This commit is contained in:
@ -349,7 +349,8 @@ PLUS_ID_LITERAL: PLUS_ID_LITERAL_FRAG;
|
||||
|
||||
fragment EXPONENT_NUM_PART: 'E' [-+]? DEC_DIGIT+;
|
||||
fragment ID_LITERAL_FRAG: [A-Z_0-9a-z]*?[A-Z_a-z]+?[A-Z_0-9a-z]*;
|
||||
fragment PLUS_ID_LITERAL_FRAG: ('a'..'z' | '0'..'9' | '_' | '*' | '@' | '#' | '^' | '$' | '%' | '&')*?[A-Z_a-z]+?('a'..'z' | '0'..'9' | '_' | '*' | '@' | '#' | '^' | '$' | '%' | '&')*;
|
||||
// fragment PLUS_ID_LITERAL_FRAG: ('a'..'z' | '0'..'9' | '_' | '*' | '@' | '#' | '^' | '$' | '%' | '&')*?[A-Z_a-z]+?('a'..'z' | '0'..'9' | '_' | '*' | '@' | '#' | '^' | '$' | '%' | '&')*;
|
||||
fragment PLUS_ID_LITERAL_FRAG: ('a'..'z' | '0'..'9' | '_' | '*' | '@' | '#' | '^' | '$' | '%' | '&')+;
|
||||
fragment DEC_DIGIT: [0-9];
|
||||
fragment DEC_LETTER: [A-Za-z];
|
||||
fragment DQUOTA_STRING: '"' ( '\\'. | '""' | ~('"'| '\\') )* '"';
|
||||
|
@ -238,7 +238,7 @@ selectClause
|
||||
;
|
||||
|
||||
projectItemDefinition
|
||||
: expression (AS? uid)?
|
||||
: expression (AS? expression)?
|
||||
;
|
||||
|
||||
fromClause
|
||||
@ -247,7 +247,7 @@ fromClause
|
||||
|
||||
tableExpression
|
||||
: tableReference (COMMA tableReference)*
|
||||
| tableExpression NATURAL? (LEFT | RIGHT | FULL)? JOIN tableExpression joinCondition?
|
||||
| tableExpression NATURAL? (LEFT | RIGHT | FULL | INNER)? JOIN tableExpression joinCondition?
|
||||
;
|
||||
|
||||
tableReference
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -171,7 +171,7 @@ var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
|
||||
"\u00ff\u0003\u0002\u0104\u011b\u0003\u0002\u00f7\u00f8\u0004\u0002\n",
|
||||
"\n\u00f9\u00f9\u0004\u0002\u00ae\u00ae\u00fb\u00fb\u0004\u0002\u00bf",
|
||||
"\u00bf\u00c1\u00c1\u0004\u0002OO\u0093\u0093\u0004\u0002_`bb\u0004\u0002",
|
||||
"2245\u0003\u0002%&\u0004\u0002CCEE\u0003\u0002\n\u000b\u0003\u0002\"",
|
||||
"1245\u0003\u0002%&\u0004\u0002CCEE\u0003\u0002\n\u000b\u0003\u0002\"",
|
||||
"#\u0004\u0002\u0120\u0120\u0132\u0133\u0006\u0002\u0086\u0086\u0130",
|
||||
"\u0130\u0134\u0134\u0137\u0137\u0004\u0002\u0132\u0133\u0135\u0135\u0003",
|
||||
"\u0002\u0132\u0133\u0003\u0002\u013b\u013c\u0004\u0002\u013b\u013b\u013e",
|
||||
@ -479,7 +479,7 @@ var serializedATN = ["\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
|
||||
"\u0282\u0003\u0002\u0002\u0002\u028ba\u0003\u0002\u0002\u0002\u028c",
|
||||
"\u0291\u0005\u0088E\u0002\u028d\u028f\u0007\t\u0002\u0002\u028e\u028d",
|
||||
"\u0003\u0002\u0002\u0002\u028e\u028f\u0003\u0002\u0002\u0002\u028f\u0290",
|
||||
"\u0003\u0002\u0002\u0002\u0290\u0292\u0005\u00bc_\u0002\u0291\u028e",
|
||||
"\u0003\u0002\u0002\u0002\u0290\u0292\u0005\u0088E\u0002\u0291\u028e",
|
||||
"\u0003\u0002\u0002\u0002\u0291\u0292\u0003\u0002\u0002\u0002\u0292c",
|
||||
"\u0003\u0002\u0002\u0002\u0293\u0294\u0007\u0007\u0002\u0002\u0294\u0295",
|
||||
"\u0005f4\u0002\u0295e\u0003\u0002\u0002\u0002\u0296\u0297\b4\u0001\u0002",
|
||||
@ -6873,12 +6873,15 @@ function ProjectItemDefinitionContext(parser, parent, invokingState) {
|
||||
ProjectItemDefinitionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);
|
||||
ProjectItemDefinitionContext.prototype.constructor = ProjectItemDefinitionContext;
|
||||
|
||||
ProjectItemDefinitionContext.prototype.expression = function() {
|
||||
return this.getTypedRuleContext(ExpressionContext,0);
|
||||
};
|
||||
|
||||
ProjectItemDefinitionContext.prototype.uid = function() {
|
||||
return this.getTypedRuleContext(UidContext,0);
|
||||
ProjectItemDefinitionContext.prototype.expression = function(i) {
|
||||
if(i===undefined) {
|
||||
i = null;
|
||||
}
|
||||
if(i===null) {
|
||||
return this.getTypedRuleContexts(ExpressionContext);
|
||||
} else {
|
||||
return this.getTypedRuleContext(ExpressionContext,i);
|
||||
}
|
||||
};
|
||||
|
||||
ProjectItemDefinitionContext.prototype.AS = function() {
|
||||
@ -6932,7 +6935,7 @@ FlinkSqlParser.prototype.projectItemDefinition = function() {
|
||||
}
|
||||
|
||||
this.state = 654;
|
||||
this.uid();
|
||||
this.expression();
|
||||
|
||||
}
|
||||
} catch (re) {
|
||||
@ -7098,6 +7101,10 @@ TableExpressionContext.prototype.FULL = function() {
|
||||
return this.getToken(FlinkSqlParser.FULL, 0);
|
||||
};
|
||||
|
||||
TableExpressionContext.prototype.INNER = function() {
|
||||
return this.getToken(FlinkSqlParser.INNER, 0);
|
||||
};
|
||||
|
||||
TableExpressionContext.prototype.enterRule = function(listener) {
|
||||
if(listener instanceof FlinkSqlParserListener ) {
|
||||
listener.enterTableExpression(this);
|
||||
@ -7177,10 +7184,10 @@ FlinkSqlParser.prototype.tableExpression = function(_p) {
|
||||
this.state = 674;
|
||||
this._errHandler.sync(this);
|
||||
_la = this._input.LA(1);
|
||||
if(((((_la - 48)) & ~0x1f) == 0 && ((1 << (_la - 48)) & ((1 << (FlinkSqlParser.LEFT - 48)) | (1 << (FlinkSqlParser.RIGHT - 48)) | (1 << (FlinkSqlParser.FULL - 48)))) !== 0)) {
|
||||
if(((((_la - 47)) & ~0x1f) == 0 && ((1 << (_la - 47)) & ((1 << (FlinkSqlParser.INNER - 47)) | (1 << (FlinkSqlParser.LEFT - 47)) | (1 << (FlinkSqlParser.RIGHT - 47)) | (1 << (FlinkSqlParser.FULL - 47)))) !== 0)) {
|
||||
this.state = 673;
|
||||
_la = this._input.LA(1);
|
||||
if(!(((((_la - 48)) & ~0x1f) == 0 && ((1 << (_la - 48)) & ((1 << (FlinkSqlParser.LEFT - 48)) | (1 << (FlinkSqlParser.RIGHT - 48)) | (1 << (FlinkSqlParser.FULL - 48)))) !== 0))) {
|
||||
if(!(((((_la - 47)) & ~0x1f) == 0 && ((1 << (_la - 47)) & ((1 << (FlinkSqlParser.INNER - 47)) | (1 << (FlinkSqlParser.LEFT - 47)) | (1 << (FlinkSqlParser.RIGHT - 47)) | (1 << (FlinkSqlParser.FULL - 47)))) !== 0))) {
|
||||
this._errHandler.recoverInline(this);
|
||||
}
|
||||
else {
|
||||
|
Reference in New Issue
Block a user