Changeset: d3a2c0438f99 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d3a2c0438f99 Added Files: sql/test/BugTracker-2024/Tests/7524-right-outer-join.test Modified Files: sql/server/rel_select.c sql/test/BugTracker-2024/Tests/All Branch: default Log Message:
fixed issue #7524 diffs (79 lines): diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c --- a/sql/server/rel_select.c +++ b/sql/server/rel_select.c @@ -5556,7 +5556,7 @@ static sql_rel * join_on_column_name(sql_query *query, sql_rel *rel, sql_rel *t1, sql_rel *t2, int op, int l_nil, int r_nil) { mvc *sql = query->sql; - int found = 0, full = (op != op_join); + int found = 0, full = (op == op_full), right = (op == op_right); list *exps = rel_projections(sql, t1, NULL, 1, 0); list *r_exps = rel_projections(sql, t2, NULL, 1, 0); list *outexps = new_exp_list(sql->sa); @@ -5580,18 +5580,22 @@ join_on_column_name(sql_query *query, sq found = 1; if (!(rel = rel_compare_exp(query, rel, le, re, "=", TRUE, 0, 0, 0, 0))) return NULL; + list_remove_data(r_exps, NULL, re); if (full) { sql_exp *cond = rel_unop_(sql, rel, le, "sys", "isnull", card_value); if (!cond) return NULL; set_has_no_nil(cond); + if (rel_convert_types(sql, NULL, NULL, &le, &re, 1, type_equal_no_any) < 0) + return NULL; if (!(le = rel_nop_(sql, rel, cond, re, le, NULL, "sys", "ifthenelse", card_value))) return NULL; + } else if (right) { + le = re; } exp_setname(sql->sa, le, rname, name); set_not_unique(le); append(outexps, le); - list_remove_data(r_exps, NULL, re); } else { if (l_nil) set_has_nil(le); diff --git a/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test b/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7524-right-outer-join.test @@ -0,0 +1,30 @@ + +statement ok +CREATE TABLE t0(c0 INT) + +statement ok +CREATE TABLE t1(c0 VARCHAR) + +query II +SELECT * FROM t1 LEFT JOIN t0 ON t1.c0 = t0.c0 +---- + +query II +SELECT * FROM t1 RIGHT JOIN t0 ON t1.c0 = t0.c0 +---- + +query II +SELECT * FROM t1 FULL JOIN t0 ON t1.c0 = t0.c0 +---- + +query I +SELECT * FROM t1 NATURAL LEFT JOIN t0 +---- + +query I +SELECT * FROM t1 NATURAL RIGHT JOIN t0 +---- + +query I +SELECT * FROM t1 NATURAL FULL JOIN t0 +---- diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -59,3 +59,4 @@ 7511-password-hash-missing-error 7512-concurrent-globaltmp-instantiate-crash 7513-uri-authority-parse-issue 7514-wrong-window-function +7524-right-outer-join _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org