Changeset: 4555852755c0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4555852755c0
Modified Files:
        sql/server/rel_unnest.c
        sql/test/SQLancer/Tests/sqlancer22.test
        sql/test/SQLancer/Tests/sqlancer23.test
Branch: unnest2
Log Message:

fix domain in case of right joins


diffs (55 lines):

diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -5542,10 +5542,10 @@ unnest(visitor *v, sql_rel *parent, sql_
        if (!rel)
                return ;
 
-       if (list_empty(acc) && !rel_is_ref(rel)) { /* unnest ends add join with 
d */
+       if (list_empty(acc) && !rel_is_ref(rel) && (!is_simple_project(rel->op) 
|| rel->l)) { /* unnest ends add join with d */
                sql_rel *d = rel_project(v->sql->sa, rel_dup(info->info->d), 
rel_projections(v->sql, info->info->d, NULL, 1, 1));
                add_outers_repr(v, d, info, true);
-               sql_rel *nrel = rel_crossproduct(v->sql->sa, d, rel,  op_join);
+               sql_rel *nrel = rel_crossproduct(v->sql->sa, d, rel, 
is_right(info->info->join->op) ? info->info->join->op : op_join);
                rel_update_subrel(parent, rel, nrel);
                return;
        }
@@ -5566,7 +5566,7 @@ unnest(visitor *v, sql_rel *parent, sql_
                list *exps = list_merge(rel_projections(v->sql, d, NULL, 0, 1), 
rel_projections(v->sql, rel, NULL, 0, 1), NULL);
                rel = rel_inplace_project(v->sql->sa, rel, NULL, exps);
                rel->nr_outers = list_length(info->info->outer_refs);
-               rel->l = rel_crossproduct(v->sql->sa, d, rel->l,  op_join);
+               rel->l = rel_crossproduct(v->sql->sa, d, rel->l,  
is_right(info->info->join->op) ? info->info->join->op : op_join);
                //rel_update_subrel(parent, rel, nrel);
                return;
        }
diff --git a/sql/test/SQLancer/Tests/sqlancer22.test 
b/sql/test/SQLancer/Tests/sqlancer22.test
--- a/sql/test/SQLancer/Tests/sqlancer22.test
+++ b/sql/test/SQLancer/Tests/sqlancer22.test
@@ -306,10 +306,10 @@ SELECT i IN (SELECT i1.i FROM generate_s
 query I rowsort
 SELECT i IN (SELECT i1.i FROM (SELECT * FROM integers i1 WHERE 
i1.i=integers.i) i1 RIGHT JOIN generate_series(1, 3, 1) tbl(i) ON i1.i=tbl.i) 
FROM integers
 ----
+0
 1
 1
 NULL
-NULL
 
 query I rowsort
 SELECT i IN (SELECT i1.i FROM generate_series(1, 3, 1) tbl(i) LEFT JOIN 
(SELECT * FROM integers i1 WHERE i1.i=integers.i) i1 ON i1.i=tbl.i) FROM 
integers
diff --git a/sql/test/SQLancer/Tests/sqlancer23.test 
b/sql/test/SQLancer/Tests/sqlancer23.test
--- a/sql/test/SQLancer/Tests/sqlancer23.test
+++ b/sql/test/SQLancer/Tests/sqlancer23.test
@@ -168,8 +168,10 @@ SELECT 1 FROM t0 GROUP BY t0.c0 HAVING m
 ----
 
 # Postgres doesn't give an error here, but we are confident it must
-statement error GDK reported error: selectjoin: more than one match
+#statement error GDK reported error: selectjoin: more than one match
+query I
 SELECT 1 FROM t0 CROSS JOIN LATERAL (SELECT (VALUES (y.y), (y.y)) FROM (SELECT 
1) y(y) WHERE t0.c0 = 2) x(x)
+----
 
 statement ok
 ROLLBACK
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to