Changeset: 488747d98512 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/488747d98512 Modified Files: sql/server/rel_exp.c sql/server/rel_optimizer.c sql/test/SQLancer/Tests/sqlancer17.test Branch: default Log Message:
Merged with Jan2022 diffs (truncated from 502 to 300 lines): diff --git a/sql/benchmarks/tpcds/Tests/All b/sql/benchmarks/tpcds/Tests/All --- a/sql/benchmarks/tpcds/Tests/All +++ b/sql/benchmarks/tpcds/Tests/All @@ -1,110 +1,1 @@ -HAVE_DATA_PATH?one -#create -#check0 -#HAVE_DATA_PATH?load -#alter -#check1 -#01 -#02 -#03 -#04 -#05 -#06 -#07 -#08 -#09 -#10 -#11 -#12 -#13 -#14a -#14b -#15 -#16 -#17 -#18 -#19 -#20 -#21 -#22 -#23a -#23b -#24a -#24b -#25 -#26 -#27 -#28 -#29 -#30 -#31 -#32 -#33 -#34 -#35 -#36 -#37 -#38 -#39a -#39b -#40 -#41 -#42 -#43 -#44 -#45 -#46 -#47 -#48 -#49 -#50 -#51 -#52 -#53 -#54 -#55 -#56 -#57 -#58 -#59 -#60 -#61 -#62 -#63 -#64 -#65 -#66 -#67 -#68 -#69 -#70 -#71 -#72 -#73 -#74 -#75 -#76 -#77 -#78 -#79 -#80 -#81 -#82 -#83 -#84 -#85 -#86 -#87 -#88 -#89 -#90 -#91 -#92 -#93 -#94 -#95 -#96 -#97 -#98 -#99 -#drop +HAVE_DATA_PATH&!ARCH_BITS32?one diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c --- a/sql/server/rel_exp.c +++ b/sql/server/rel_exp.c @@ -705,6 +705,7 @@ exp_propagate(sql_allocator *sa, sql_exp set_unique(ne); if (is_basecol(oe)) set_basecol(ne); + ne->flag = oe->flag; /* needed if the referenced column is a parameter without type set yet */ ne->p = prop_copy(sa, oe->p); return ne; } 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 @@ -6550,7 +6550,7 @@ exp_mark_used(sql_rel *subrel, sql_exp * case e_column: ne = rel_find_exp(subrel, e); /* if looking in the same projection, make sure 'ne' is projected before the searched column */ - if (ne && local_proj > -1 && list_position(subrel->exps, ne) > local_proj) + if (ne && local_proj > -1 && list_position(subrel->exps, ne) >= local_proj) ne = NULL; break; case e_convert: diff --git a/sql/test/BugTracker-2013/Tests/All b/sql/test/BugTracker-2013/Tests/All --- a/sql/test/BugTracker-2013/Tests/All +++ b/sql/test/BugTracker-2013/Tests/All @@ -10,7 +10,7 @@ stddev-group.Bug-3257 #oid_handling between.Bug-3259 correlated_select.Bug-3250 -empty-strings.Bug-3261 +!ARCH_BITS32?empty-strings.Bug-3261 groupby_on_value_view.Bug-3264 copy-into-decimal.Bug-3265 aggregates-typing-issues.Bug-3277 diff --git a/sql/test/SQLancer/Tests/sqlancer17.test b/sql/test/SQLancer/Tests/sqlancer17.test --- a/sql/test/SQLancer/Tests/sqlancer17.test +++ b/sql/test/SQLancer/Tests/sqlancer17.test @@ -665,3 +665,117 @@ least(3, sub0.c1) FROM vx JOIN (SELECT 4 statement ok ROLLBACK + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 BETWEEN 1 AND min(2) FROM (values (3)) vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 BETWEEN min(1) AND 2 FROM (SELECT 3) vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 BETWEEN vx.vc0 AND min(2) FROM (values (3)) vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT MIN(1) BETWEEN vx.vc0 AND 2 FROM (SELECT 3) vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (values (3)) vx(vc0) HAVING vx.vc0 BETWEEN 1 AND min(2) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (SELECT 3) vx(vc0) HAVING vx.vc0 BETWEEN min(1) AND 2 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (values (3)) vx(vc0) HAVING 1 BETWEEN vx.vc0 AND min(2) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (SELECT 3) vx(vc0) HAVING MIN(1) BETWEEN vx.vc0 AND 2 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 > min(1) FROM (SELECT 3) vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT min(1) < vx.vc0 FROM (SELECT 3) vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (SELECT 3) vx(vc0) HAVING min(1) < vx.vc0 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (SELECT 3) vx(vc0) HAVING vx.vc0 > min(1) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 LIKE MIN('b') FROM (SELECT 'a') vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT MIN('b') LIKE vx.vc0 FROM (SELECT 'a') vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (SELECT 'a') vx(vc0) HAVING vx.vc0 LIKE MIN('b') + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 FROM (SELECT 'a') vx(vc0) HAVING MIN('b') LIKE vx.vc0 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT MIN(2) IS NULL FROM (SELECT 3) vx(vc0) HAVING vx.vc0 > 1 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 FROM (SELECT 3) vx(vc0) HAVING MIN(2) IS NULL + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT 1 IN (MIN(2)) FROM (SELECT 3) vx(vc0) HAVING vx.vc0 > 1 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 FROM (SELECT 3) vx(vc0) HAVING 1 IN (MIN(2)) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT MIN(2) > 2 FROM (SELECT TRUE) vx(vc0) HAVING vx.vc0 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 FROM (SELECT TRUE) vx(vc0) HAVING MIN(2) > 2 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT MIN(2) > 2, vx.vc0 FROM (SELECT 3) vx(vc0) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0, MIN(2) > 2 FROM (SELECT 3) vx(vc0) + +# The subquery ones are doubtful +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT EXISTS (SELECT MIN(2)) FROM (SELECT 3) vx(vc0) HAVING vx.vc0 > 1 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 FROM (SELECT 3) vx(vc0) HAVING EXISTS (SELECT MIN(2)) + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT EXISTS (SELECT MIN(2) FROM (SELECT 4) vy(vc0)) FROM (SELECT 3) vx(vc0) HAVING vx.vc0 > 1 + +statement error 42000!SELECT: cannot use non GROUP BY column 'vx.vc0' in query results without an aggregate function +SELECT vx.vc0 FROM (SELECT 4) vx(vc0) HAVING EXISTS (SELECT MIN(2) FROM (SELECT 3) vy(vc0)) + +# These are right, keep them here +query I nosort +SELECT MIN(2) > 2 FROM (SELECT 1) vx(vc0) HAVING 0 +---- + +query I nosort +SELECT 0 FROM (SELECT 1) vx(vc0) HAVING MIN(2) > 2 +---- + +query II nosort +SELECT MIN(2) > 2, 0 FROM (SELECT 1) vx(vc0) HAVING MIN(2) > 2 +---- + +query II nosort +SELECT 0, MIN(2) > 2 FROM (SELECT 1) vx(vc0) HAVING MIN(2) > 2 +---- + +query II nosort +SELECT MIN(2) > 2, 0 FROM (SELECT 1) vx(vc0) +---- +0 +0 + +query II nosort +SELECT 0, MIN(2) > 2 FROM (SELECT 1) vx(vc0) +---- +0 +0 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 @@ -29,3 +29,26 @@ 1 statement ok ROLLBACK + +statement ok +START TRANSACTION + +statement ok +CREATE TABLE t0 (c0 INT) + +statement ok +INSERT INTO t0 VALUES (1) + +statement ok +CREATE TABLE t1 (c0 INT) + +statement ok +INSERT INTO t1 VALUES (1) + +query I nosort +SELECT 1 = ANY(SELECT 1 FROM t1 JOIN (SELECT count(*) GROUP BY t0.c0) AS x(x) ON TRUE) FROM t0 +---- +1 + +statement ok _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list