Changeset: 2f38db7ff498 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2f38db7ff498 Modified Files: sql/benchmarks/tpcds/Tests/54.stable.out sql/server/rel_optimizer.c sql/test/SQLancer/Tests/sqlancer07.sql sql/test/SQLancer/Tests/sqlancer07.stable.err sql/test/SQLancer/Tests/sqlancer07.stable.out Branch: Oct2020 Log Message:
fixed problem with rel_push_select_down_join, ie make sure a select is created when there is non under the join. diffs (73 lines): diff --git a/sql/benchmarks/tpcds/Tests/54.stable.out b/sql/benchmarks/tpcds/Tests/54.stable.out --- a/sql/benchmarks/tpcds/Tests/54.stable.out +++ b/sql/benchmarks/tpcds/Tests/54.stable.out @@ -39,7 +39,7 @@ stdout of test '54` in directory 'sql/be # date_dim, # customer # WHERE sold_date_sk = d_date_sk -% sys.segments, sys., sys. # table_name +% .segments, ., . # table_name % segment, num_customers, segment_base # name % int, bigint, bigint # type % 5, 1, 6 # length 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 @@ -4670,14 +4670,18 @@ rel_push_select_down_join(visitor *v, sq sql_exp *e = n->data; if (rel_rebind_exp(v->sql, rel->l, e)) { sql_rel *l = rel->l; - if (!is_select(l->op)) + if (!is_select(l->op)) { + set_processed(l); rel->l = l = rel_select(v->sql->sa, rel->l, NULL); + } rel_select_add_exp(v->sql->sa, rel->l, e); v->changes++; } else if (rel_rebind_exp(v->sql, rel->r, e)) { sql_rel *r = rel->r; - if (!is_select(r->op)) + if (!is_select(r->op)) { + set_processed(r); rel->r = r = rel_select(v->sql->sa, rel->r, NULL); + } rel_select_add_exp(v->sql->sa, rel->r, e); v->changes++; } else { diff --git a/sql/test/SQLancer/Tests/sqlancer07.sql b/sql/test/SQLancer/Tests/sqlancer07.sql --- a/sql/test/SQLancer/Tests/sqlancer07.sql +++ b/sql/test/SQLancer/Tests/sqlancer07.sql @@ -1,6 +1,6 @@ START TRANSACTION; CREATE TABLE "t1" ("c0" DECIMAL(18,3),"c1" BINARY LARGE OBJECT NOT NULL,"c2" DECIMAL(18,3),CONSTRAINT "t1_c1_unique" UNIQUE ("c1")); -PREPARE SELECT DISTINCT (SELECT DISTINCT r'|m<kv' FROM t1 WHERE ((t1.c0)<(?)) GROUP BY t1.c2, ?), ?, t1.c2 FROM t1 WHERE CAST(? AS BOOLEAN) LIMIT 2103332269785059850; +PREPARE SELECT DISTINCT (SELECT DISTINCT r'|m<v' FROM t1 WHERE ((t1.c0)<(?)) GROUP BY t1.c2, ?), ?, t1.c2 FROM t1 WHERE CAST(? AS BOOLEAN) LIMIT 2103332269785059850; -- Could not determine type for argument number 2 ROLLBACK; diff --git a/sql/test/SQLancer/Tests/sqlancer07.stable.err b/sql/test/SQLancer/Tests/sqlancer07.stable.err --- a/sql/test/SQLancer/Tests/sqlancer07.stable.err +++ b/sql/test/SQLancer/Tests/sqlancer07.stable.err @@ -5,8 +5,8 @@ stderr of test 'sqlancer07` in directory # 10:16:14 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-52758" "--port=31957" # 10:16:14 > -MAPI = (monetdb) /var/tmp/mtest-52758/.s.monetdb.31957 -QUERY = PREPARE SELECT DISTINCT (SELECT DISTINCT r'|m<kv' FROM t1 WHERE ((t1.c0)<(?)) GROUP BY t1.c2, ?), ?, t1.c2 FROM t1 WHERE CAST(? AS BOOLEAN) LIMIT 2103332269785059850; +MAPI = (monetdb) /var/tmp/mtest-1050883/.s.monetdb.36353 +QUERY = PREPARE SELECT DISTINCT (SELECT DISTINCT r'|m<v' FROM t1 WHERE ((t1.c0)<(?)) GROUP BY t1.c2, ?), ?, t1.c2 FROM t1 WHERE CAST(? AS BOOLEAN) LIMIT 2103332269785059850; ERROR = !Could not determine type for argument number 2 CODE = 42000 MAPI = (monetdb) /var/tmp/mtest-81449/.s.monetdb.32416 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 @@ -206,7 +206,7 @@ stdout of test 'sqlancer07` in directory % tinyint # type % 1 # length #SELECT t1.c0 FROM t2, t0 CROSS JOIN t1 WHERE ((((t0.c0)%((SELECT DISTINCT t0.c0 FROM t1, t0, t2 WHERE FALSE))))<=(t1.c0)); -% sys.t1 # table_name +% .t1 # table_name % c0 # name % bigint # type % 1 # length _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list