revert: only [LEFT|RIGHT] is allowed for non-inner-join
This commit is contained in:
parent
26ba35c883
commit
3d9b243f85
|
@ -1480,10 +1480,6 @@ inner_joined(A) ::=
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_NONE, A, B, E, F, G, H); }
|
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_FULL, JOIN_STYPE_NONE, A, B, E, F, G, H); }
|
||||||
|
|
||||||
/************************************************ outer join **********************************************************/
|
/************************************************ outer join **********************************************************/
|
||||||
outer_joined(A) ::=
|
|
||||||
table_reference(B) OUTER JOIN table_reference(E) join_on_clause_opt(F)
|
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_OUTER, A, B, E, F, G, H); }
|
|
||||||
|
|
||||||
outer_joined(A) ::=
|
outer_joined(A) ::=
|
||||||
table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause_opt(F)
|
table_reference(B) LEFT OUTER JOIN table_reference(E) join_on_clause_opt(F)
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, G, H); }
|
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_OUTER, A, B, E, F, G, H); }
|
||||||
|
@ -1492,15 +1488,7 @@ outer_joined(A) ::=
|
||||||
table_reference(B) RIGHT OUTER JOIN table_reference(E) join_on_clause_opt(F)
|
table_reference(B) RIGHT OUTER 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_OUTER, A, B, E, F, G, H); }
|
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_RIGHT, JOIN_STYPE_OUTER, A, B, E, F, G, H); }
|
||||||
|
|
||||||
outer_joined(A) ::=
|
|
||||||
table_reference(B) FULL OUTER 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_OUTER, A, B, E, F, G, H); }
|
|
||||||
|
|
||||||
/************************************************ semi join ***********************************************************/
|
/************************************************ semi join ***********************************************************/
|
||||||
semi_joined(A) ::=
|
|
||||||
table_reference(B) SEMI JOIN table_reference(E) join_on_clause_opt(F)
|
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_SEMI, A, B, E, F, G, H); }
|
|
||||||
|
|
||||||
semi_joined(A) ::=
|
semi_joined(A) ::=
|
||||||
table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause_opt(F)
|
table_reference(B) LEFT SEMI JOIN table_reference(E) join_on_clause_opt(F)
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, G, H); }
|
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_SEMI, A, B, E, F, G, H); }
|
||||||
|
@ -1509,15 +1497,7 @@ semi_joined(A) ::=
|
||||||
table_reference(B) RIGHT SEMI JOIN table_reference(E) join_on_clause_opt(F)
|
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); }
|
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 ***********************************************************/
|
/************************************************ ansi join ***********************************************************/
|
||||||
anti_joined(A) ::=
|
|
||||||
table_reference(B) ANTI JOIN table_reference(E) join_on_clause_opt(F)
|
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_ANTI, A, B, E, F, G, H); }
|
|
||||||
|
|
||||||
anti_joined(A) ::=
|
anti_joined(A) ::=
|
||||||
table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause_opt(F)
|
table_reference(B) LEFT ANTI JOIN table_reference(E) join_on_clause_opt(F)
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, G, H); }
|
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ANTI, A, B, E, F, G, H); }
|
||||||
|
@ -1526,15 +1506,7 @@ anti_joined(A) ::=
|
||||||
table_reference(B) RIGHT ANTI JOIN table_reference(E) join_on_clause_opt(F)
|
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); }
|
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 join ***********************************************************/
|
||||||
asof_joined(A) ::=
|
|
||||||
table_reference(B) ASOF JOIN table_reference(E) join_on_clause_opt(F)
|
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_ASOF, A, B, E, F, G, H); }
|
|
||||||
|
|
||||||
asof_joined(A) ::=
|
asof_joined(A) ::=
|
||||||
table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F)
|
table_reference(B) LEFT ASOF JOIN table_reference(E) join_on_clause_opt(F)
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); }
|
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_ASOF, A, B, E, F, G, H); }
|
||||||
|
@ -1543,15 +1515,7 @@ asof_joined(A) ::=
|
||||||
table_reference(B) RIGHT ASOF JOIN table_reference(E) join_on_clause_opt(F)
|
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); }
|
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 *********************************************************/
|
/************************************************ window join *********************************************************/
|
||||||
win_joined(A) ::=
|
|
||||||
table_reference(B) WINDOW JOIN table_reference(E) join_on_clause_opt(F)
|
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_INNER, JOIN_STYPE_WIN, A, B, E, F, G, H); }
|
|
||||||
|
|
||||||
win_joined(A) ::=
|
win_joined(A) ::=
|
||||||
table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F)
|
table_reference(B) LEFT WINDOW JOIN table_reference(E) join_on_clause_opt(F)
|
||||||
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); }
|
window_offset_clause_opt(G) jlimit_clause_opt(H). { JOINED_TABLE_MK(JOIN_TYPE_LEFT, JOIN_STYPE_WIN, A, B, E, F, G, H); }
|
||||||
|
@ -1560,10 +1524,6 @@ win_joined(A) ::=
|
||||||
table_reference(B) RIGHT WINDOW JOIN table_reference(E) join_on_clause_opt(F)
|
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); }
|
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] { A = NULL; }
|
||||||
join_on_clause_opt(A) ::= ON search_condition(B). { A = B; }
|
join_on_clause_opt(A) ::= ON search_condition(B). { A = B; }
|
||||||
|
|
||||||
|
|
|
@ -356,11 +356,6 @@ class TDTestCase:
|
||||||
def join_semantic_test(self, dbname=DBNAME):
|
def join_semantic_test(self, dbname=DBNAME):
|
||||||
tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts")
|
tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts")
|
||||||
tdSql.checkRows(self.rows)
|
tdSql.checkRows(self.rows)
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
|
|
||||||
tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts")
|
tdSql.query("select ct1.c_int from db.ct1 as ct1 join db1.ct1 as cy1 on ct1.ts=cy1.ts")
|
||||||
tdSql.checkRows(self.rows)
|
tdSql.checkRows(self.rows)
|
||||||
|
@ -390,12 +385,7 @@ class TDTestCase:
|
||||||
|
|
||||||
tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts")
|
tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts")
|
||||||
tdSql.checkRows(self.rows)
|
tdSql.checkRows(self.rows)
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 full semi join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 full anti join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.query("select ct1.c_int from db.ct1 as ct1 full outer join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.checkRows(self.rows)
|
tdSql.checkRows(self.rows)
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 full asof join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
tdSql.error("select ct1.c_int from db.ct1 as ct1 full window join db1.ct1 as cy1 on ct1.ts=cy1.ts", TSDB_CODE_TSC_INVALID_OPERATION)
|
|
||||||
|
|
||||||
|
|
||||||
tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts join db1.ct1 as cy2 on ct1.ts=cy2.ts")
|
tdSql.query("select ct1.c_int from db.ct1 as ct1 full join db1.ct1 as cy1 on ct1.ts=cy1.ts join db1.ct1 as cy2 on ct1.ts=cy2.ts")
|
||||||
|
|
Loading…
Reference in New Issue