@@ -829,7 +829,8 @@ protected SQLTableSource parseTableSourceRest(OracleSelectTableSource tableSourc
829
829
tableSource .setAlias (tableAlias (true ));
830
830
} else if ((tableSource .getAlias () == null ) || (tableSource .getAlias ().length () == 0 )) {
831
831
if (lexer .token () != Token .LEFT && lexer .token () != Token .RIGHT && lexer .token () != Token .FULL ) {
832
- tableSource .setAlias (tableAlias ());
832
+ final String tableAlias = tableAlias ();
833
+ tableSource .setAlias (tableAlias );
833
834
}
834
835
}
835
836
@@ -866,10 +867,19 @@ protected SQLTableSource parseTableSourceRest(OracleSelectTableSource tableSourc
866
867
joinType = SQLJoinTableSource .JoinType .FULL_OUTER_JOIN ;
867
868
}
868
869
870
+ boolean natural = lexer .identifierEquals (FnvHash .Constants .NATURAL );
871
+ if (natural ) {
872
+ lexer .nextToken ();
873
+ }
874
+
869
875
if (lexer .token () == Token .INNER ) {
870
876
lexer .nextToken ();
871
877
accept (Token .JOIN );
872
- joinType = SQLJoinTableSource .JoinType .INNER_JOIN ;
878
+ if (natural ) {
879
+ joinType = SQLJoinTableSource .JoinType .NATURAL_INNER_JOIN ;
880
+ } else {
881
+ joinType = SQLJoinTableSource .JoinType .INNER_JOIN ;
882
+ }
873
883
}
874
884
if (lexer .token () == Token .CROSS ) {
875
885
lexer .nextToken ();
@@ -879,7 +889,11 @@ protected SQLTableSource parseTableSourceRest(OracleSelectTableSource tableSourc
879
889
880
890
if (lexer .token () == Token .JOIN ) {
881
891
lexer .nextToken ();
882
- joinType = SQLJoinTableSource .JoinType .JOIN ;
892
+ if (natural ) {
893
+ joinType = SQLJoinTableSource .JoinType .NATURAL_JOIN ;
894
+ } else {
895
+ joinType = SQLJoinTableSource .JoinType .JOIN ;
896
+ }
883
897
}
884
898
885
899
if (lexer .token () == (Token .COMMA )) {
@@ -894,7 +908,8 @@ protected SQLTableSource parseTableSourceRest(OracleSelectTableSource tableSourc
894
908
895
909
SQLTableSource right ;
896
910
right = parseTableSourcePrimary ();
897
- right .setAlias (this .tableAlias ());
911
+ String tableAlias = tableAlias ();
912
+ right .setAlias (tableAlias );
898
913
join .setRight (right );
899
914
900
915
if (lexer .token () == Token .ON ) {
@@ -918,6 +933,10 @@ protected SQLTableSource parseTableSourceRest(OracleSelectTableSource tableSourc
918
933
parsePivot (join );
919
934
920
935
return parseTableSourceRest (join );
936
+ } else {
937
+ if (lexer .identifierEquals (FnvHash .Constants .PIVOT )) {
938
+ parsePivot (tableSource );
939
+ }
921
940
}
922
941
923
942
return tableSource ;
0 commit comments