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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list