From 26ba35c8837118b80f9f34e0b110fbbee52b946a Mon Sep 17 00:00:00 2001 From: freemine Date: Tue, 31 Dec 2024 07:37:55 +0800 Subject: [PATCH] re-enable FULL at sql grammar level --- source/libs/parser/inc/sql.y | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 08ec22b420..2a29b5299c 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -1509,6 +1509,10 @@ semi_joined(A) ::= table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_SEMI, A, B, E, F, G, H); } +semi_joined(A) ::= + table_reference(B) FULL SEMI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_SEMI, A, B, E, F, G, H); } + /************************************************ ansi join ***********************************************************/ anti_joined(A) ::= table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F) @@ -1522,6 +1526,10 @@ anti_joined(A) ::= table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ANTI, A, B, E, F, G, H); } +anti_joined(A) ::= + table_reference(B) FULL ANTI JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ANTI, A, B, E, F, G, H); } + /************************************************ asof join ***********************************************************/ asof_joined(A) ::= table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F) @@ -1535,6 +1543,10 @@ asof_joined(A) ::= table_reference(B) RIGHT ASOF JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_ASOF, A, B, E, F, G, H); } +asof_joined(A) ::= + table_reference(B) FULL ASOF JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_ASOF, A, B, E, F, G, H); } + /************************************************ window join *********************************************************/ win_joined(A) ::= table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F) @@ -1548,6 +1560,10 @@ win_joined(A) ::= table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F) window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_WIN, A, B, E, F, G, H); } +win_joined(A) ::= + table_reference(B) FULL WINDOW JOIN table_reference(E) join_on_clause_opt(F) + window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_WIN, A, B, E, F, G, H); } + join_on_clause_opt(A) ::= . [ON] { A = NULL; } join_on_clause_opt(A) ::= ON search_condition(B). { A = B; }