Changeset: d998debe17db for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d998debe17db Modified Files: monetdb5/mal/Tests/tst275.stable.out sql/server/rel_unnest.c sql/test/mergetables/Tests/sqlsmith-exist-lateral.stable.out Branch: sq2default Log Message:
small fixes, make sure we only use one expression inside an exists diffs (84 lines): diff --git a/monetdb5/mal/Tests/tst275.stable.out b/monetdb5/mal/Tests/tst275.stable.out --- a/monetdb5/mal/Tests/tst275.stable.out +++ b/monetdb5/mal/Tests/tst275.stable.out @@ -33,8 +33,8 @@ stdout of test 'tst275` in directory 'mo # t t t # name # void str str # type #--------------------------# -[ 0@0, "batId", "tmp_15" ] -[ 1@0, "batCacheid", "13" ] +[ 0@0, "batId", "tmp_264" ] +[ 1@0, "batCacheid", "180" ] [ 2@0, "tparentid", "0" ] [ 3@0, "batSharecnt", "0" ] [ 4@0, "batCount", "0" ] @@ -49,7 +49,7 @@ stdout of test 'tst275` in directory 'mo [ 13@0, "hseqbase", "0@0" ] [ 14@0, "tident", "t" ] [ 15@0, "tdense", "0" ] -[ 16@0, "tseqbase", "0@0" ] +[ 16@0, "tseqbase", nil ] [ 17@0, "tsorted", "1" ] [ 18@0, "trevsorted", "1" ] [ 19@0, "tkey", "1" ] @@ -69,7 +69,7 @@ stdout of test 'tst275` in directory 'mo [ 33@0, "tail.size", "1024" ] [ 34@0, "tail.storage", "malloced" ] [ 35@0, "tail.newstorage", "malloced" ] -[ 36@0, "tail.filename", "15.tail" ] +[ 36@0, "tail.filename", "02/264.tail" ] [ 37@0, "tvheap->dirty", "clean" ] #~EndVariableOutput~# #--------------------------# 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 @@ -517,6 +517,27 @@ exp_rewrite(mvc *sql, sql_rel *rel, sql_ } static sql_exp * +rel_reduce2one_exp(mvc *sql, sql_rel *sq) +{ + sql_exp *e = NULL; + + if (list_empty(sq->exps)) + return NULL; + if (list_length(sq->exps) == 1) + return sq->exps->t->data; + for(node *n = sq->exps->h; n && !e; n = n->next) { + sql_exp *t = n->data; + + if (!is_freevar(t)) + e = t; + } + if (!e) + e = sq->exps->t->data; + sq->exps = append(sa_list(sql->sa), e); + return e; +} + +static sql_exp * rel_bound_exp(mvc *sql, sql_rel *rel ) { while (rel->l) { @@ -2169,7 +2190,7 @@ rewrite_exists(mvc *sql, sql_rel *rel, s sq = exp_rel_get_rel(sql->sa, ie); /* get subquery */ - le = sq->exps->t->data; + le = rel_reduce2one_exp(sql, sq); if (!exp_name(le)) le = exp_label(sql->sa, le, ++sql->label); le = exp_ref(sql->sa, le); diff --git a/sql/test/mergetables/Tests/sqlsmith-exist-lateral.stable.out b/sql/test/mergetables/Tests/sqlsmith-exist-lateral.stable.out --- a/sql/test/mergetables/Tests/sqlsmith-exist-lateral.stable.out +++ b/sql/test/mergetables/Tests/sqlsmith-exist-lateral.stable.out @@ -42,7 +42,7 @@ stdout of test 'sqlsmith-exist-lateral` # ref_13.var_id as c1, # ref_11.commit_action as c2, # ref_11.system as c3 -% .L35, .L37 # table_name +% .ref_11, .ref_12 # table_name % c0, c1 # name % smallint, boolean # type % 1, 5 # length _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list