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

Reply via email to