Changeset: 31c668505b8c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=31c668505b8c Modified Files: sql/server/rel_unnest.c sql/test/SQLancer/Tests/sqlancer07.stable.out Branch: octbugs Log Message:
Union lists of values with subrelations diffs (50 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 @@ -3203,7 +3203,7 @@ rewrite_values(visitor *v, sql_rel *rel) return rel; sql_exp *e = rel->exps->h->data; - if (!is_values(e) || list_length(exp_get_values(e))<=1 || !rel_has_freevar(v->sql, rel)) + if (!is_values(e) || list_length(exp_get_values(e))<=1 || (!rel_has_freevar(v->sql, rel) && !exp_has_rel(e))) return rel; list *exps = sa_list(v->sql->sa); @@ -3267,7 +3267,7 @@ rel_unnest(mvc *sql, sql_rel *rel) rel = rel_exp_visitor_bottomup(&v, rel, &rewrite_ifthenelse, false); /* add isnull handling */ rel = rel_exp_visitor_bottomup(&v, rel, &reset_exp_used, false); /* reset used flag from ifthenelse re-writer, so it can be used again by the rel_dce optimizer */ - rel = rel_visitor_bottomup(&v, rel, &rewrite_values); + rel = rel_visitor_bottomup(&v, rel, &rewrite_values); /* must come before rewrite_exp_rel */ rel = rel_exp_visitor_bottomup(&v, rel, &rewrite_exp_rel, true); rel = rel_visitor_bottomup(&v, rel, &rewrite_join2semi); /* where possible convert anyequal functions into marks */ if (v.changes > 0) diff --git a/sql/test/SQLancer/Tests/sqlancer07.stable.out b/sql/test/SQLancer/Tests/sqlancer07.stable.out --- a/sql/test/SQLancer/Tests/sqlancer07.stable.out +++ b/sql/test/SQLancer/Tests/sqlancer07.stable.out @@ -276,6 +276,13 @@ stdout of test 'sqlancer07` in directory #ROLLBACK; #START TRANSACTION; #CREATE TABLE "t1" ("c0" DOUBLE PRECISION NOT NULL); +#select 1 from (values (0.86), ((select 3 from t1))) as sub0(c0); +% .%6 # table_name +% %6 # name +% tinyint # type +% 1 # length +[ 1 ] +[ 1 ] #select sub0.c0 from (values (0.86), ((select 3 from t1))) as sub0(c0); -- this one is right % .sub0 # table_name % c0 # name @@ -283,6 +290,11 @@ stdout of test 'sqlancer07` in directory % 5 # length [ 0.86 ] [ NULL ] +#select sub0.c0 from (values (0.86), ((select 3 from t1))) as sub0(c0) WHERE NOT TRUE; +% .sub0 # table_name +% c0 # name +% decimal # type +% 5 # length #select sub0.c0 from (values (0.86), ((select 3))) as sub0(c0); % .sub0 # table_name % c0 # name _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list