@@ -908,15 +908,29 @@ MergeInsert MergeInsertClause() : {
908908Column Column() #Column :
909909{
910910 String databaseName = null, schemaName = null, tableName = null, columnName = null;
911+ String token = null;
911912}
912913{
913- (
914+ columnName = RelObjectName()
915+ ( "." [LOOKAHEAD(2) token = RelObjectName()] { tableName = columnName; columnName = token; token = null;}
916+ ( "." token = RelObjectName() { schemaName = tableName; tableName = columnName; columnName = token; token = null;}
917+ ( "." token = RelObjectName() { databaseName = schemaName; schemaName = tableName; tableName = columnName; columnName = token; }
918+ )?
919+ )?
920+ )?
921+
922+ /*(
914923 LOOKAHEAD(7) databaseName=RelObjectName() "." [schemaName=RelObjectName()] "." tableName=RelObjectName() "." columnName=RelObjectName()
915924 | LOOKAHEAD(5) schemaName=RelObjectName() "." tableName=RelObjectName() "." columnName=RelObjectName()
916925 | LOOKAHEAD(3) tableName=RelObjectName() "." columnName=RelObjectName()
917926 | columnName=RelObjectName()
918- )
927+ )*/
928+
919929 {
930+ if (tableName==null && (databaseName!=null || schemaName!=null)) {
931+ throw generateParseException();
932+ }
933+
920934 final Database database = new Database(databaseName);
921935 final Table table = new Table(database, schemaName, tableName);
922936 Column col = new Column(table, columnName);
@@ -2372,7 +2386,7 @@ Expression PrimaryExpression():
23722386
23732387 | LOOKAHEAD(2) retval=DateTimeLiteralExpression()
23742388
2375- | LOOKAHEAD(Column()) retval=Column()
2389+ | retval=Column()
23762390
23772391 | LOOKAHEAD("(" SimpleExpression() ")") "(" retval=SimpleExpression() ")" {retval = new Parenthesis(retval); }
23782392
0 commit comments