Changeset: 2a530e66354e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2a530e66354e Modified Files: sql/server/rel_optimizer.c sql/test/mergetables/Tests/sqlsmith-exists2.sql sql/test/mergetables/Tests/sqlsmith-exists2.stable.out Branch: Jun2020 Log Message:
exp_propagate is buggy somehow, use exp_setname to keep the expression's original names diffs (102 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -3794,6 +3794,7 @@ rel_project_cse(mvc *sql, sql_rel *rel, sql_exp *ne = exp_alias(sql->sa, exp_relname(e1), exp_name(e1), exp_relname(e2), exp_name(e2), exp_subtype(e2), e2->card, has_nil(e2), is_intern(e1)); ne = exp_propagate(sql->sa, ne, e1); + exp_setname(sql->sa, ne, exp_relname(e1), exp_name(e1)); e1 = ne; break; } diff --git a/sql/test/mergetables/Tests/sqlsmith-exists2.sql b/sql/test/mergetables/Tests/sqlsmith-exists2.sql --- a/sql/test/mergetables/Tests/sqlsmith-exists2.sql +++ b/sql/test/mergetables/Tests/sqlsmith-exists2.sql @@ -519,4 +519,39 @@ where (case when exists ( and (subq_0.c3 is null); -- empty +WITH ss_items AS + (SELECT 1 item_id, + 1 ss_item_rev + FROM another_T, + LongTable + WHERE another_T.col1 = LongTable.col1), + cs_items AS + (SELECT 1 item_id, + 1 cs_item_rev + FROM tab0, + LongTable + WHERE tab0.col1 = LongTable.col1), + ws_items AS + (SELECT 1 item_id, + 1 ws_item_rev + FROM tbl_ProductSales, + LongTable + WHERE tbl_ProductSales.col1 = LongTable.col1) +SELECT ss_items.item_id, + ss_item_rev, + ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev, + cs_item_rev, + cs_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 cs_dev, + ws_item_rev, + ws_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ws_dev, + (ss_item_rev+cs_item_rev+ws_item_rev)/3 average +FROM ss_items, + cs_items, + ws_items +WHERE ss_items.item_id=cs_items.item_id + AND ss_items.item_id=ws_items.item_id +ORDER BY ss_items.item_id, + ss_item_rev +LIMIT 100; + ROLLBACK; diff --git a/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out b/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out --- a/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out +++ b/sql/test/mergetables/Tests/sqlsmith-exists2.stable.out @@ -159,8 +159,8 @@ stdout of test 'sqlsmith-exists2` in dir # 1) # and (ref_4.i is not null)))) # on (ref_1.bb is null); -% .%27 # table_name -% %27 # name +% .%26 # table_name +% %26 # name % tinyint # type % 1 # length #select @@ -434,6 +434,33 @@ stdout of test 'sqlsmith-exists2` in dir % c0, c1, c2, c3, c4 # name % int, int, int, int, int # type % 1, 1, 1, 1, 1 # length +#WITH ss_items AS +# (SELECT 1 item_id, +# 1 ss_item_rev +# FROM another_T, +# LongTable +# WHERE another_T.col1 = LongTable.col1), +# cs_items AS +# (SELECT 1 item_id, +# 1 cs_item_rev +# FROM tab0, +# LongTable +# WHERE tab0.col1 = LongTable.col1), +# ws_items AS +# (SELECT 1 item_id, +# 1 ws_item_rev +# FROM tbl_ProductSales, +# LongTable +# WHERE tbl_ProductSales.col1 = LongTable.col1) +#SELECT ss_items.item_id, +# ss_item_rev, +# ss_item_rev/((ss_item_rev+cs_item_rev+ws_item_rev)/3) * 100 ss_dev, +% .ss_items, .ss_items, ., .cs_items, ., .ws_items, ., . # table_name +% item_id, ss_item_rev, ss_dev, cs_item_rev, cs_dev, ws_item_rev, ws_dev, average # name +% tinyint, tinyint, int, tinyint, int, tinyint, int, smallint # type +% 1, 1, 3, 1, 3, 1, 3, 1 # length +[ 1, 1, 100, 1, 100, 1, 100, 1 ] +[ 1, 1, 100, 1, 100, 1, 100, 1 ] #ROLLBACK; # 22:12:15 > _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list