Changeset: 903dcfa042cb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=903dcfa042cb
Modified Files:
sql/backends/monet5/sql_statement.c
sql/test/SQLancer/Tests/sqlancer06.sql
sql/test/SQLancer/Tests/sqlancer06.stable.out
Branch: Oct2020
Log Message:
Making SQLancer happy. bat.appendBulk accepts either scalar or vector
arguments. In the interleaved case, upgrade inputs into vectors
diffs (88 lines):
diff --git a/sql/backends/monet5/sql_statement.c
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -2858,10 +2858,25 @@ stmt_append_bulk(backend *be, stmt *c, l
{
MalBlkPtr mb = be->mb;
InstrPtr q = NULL;
+ bool needs_columns = false;
if (c->nr < 0)
return NULL;
+ /* currently appendBulk accepts its inputs all either scalar or vectors
+ if there is one vector and any scala, then the scalars mut be
upgraded to vectors */
+ for (node *n = l->h; n; n = n->next) {
+ stmt *t = n->data;
+ needs_columns |= t->nrcols > 0;
+ }
+ if (needs_columns) {
+ for (node *n = l->h; n; n = n->next) {
+ stmt *t = n->data;
+ if (t->nrcols == 0)
+ n->data = const_column(be, t);
+ }
+ }
+
q = newStmtArgs(mb, batRef, appendBulkRef, list_length(l) + 3);
q = pushArgument(mb, q, c->nr);
q = pushBit(mb, q, TRUE);
diff --git a/sql/test/SQLancer/Tests/sqlancer06.sql
b/sql/test/SQLancer/Tests/sqlancer06.sql
--- a/sql/test/SQLancer/Tests/sqlancer06.sql
+++ b/sql/test/SQLancer/Tests/sqlancer06.sql
@@ -162,3 +162,9 @@ select 1 from t2 join t1 on t1.c0 not li
select cast((((coalesce(t2.c0, t2.c0))not ilike(t2.c0))) = true as int) as
count from v0, t2 right outer join t1 on not (not (((t1.c0)not ilike(t2.c0))));
-- 6 NULLs, 57 0s, 63 rows in total
ROLLBACK;
+
+START TRANSACTION;
+CREATE TABLE "sys"."t1" ("c0" BOOLEAN);
+INSERT INTO t1(c0) VALUES(TRUE), ((EXISTS (SELECT DATE '1970-01-06' FROM t1))
BETWEEN (TRUE) AND ((1) IN (1)));
+SELECT c0 from t1;
+ROLLBACK;
diff --git a/sql/test/SQLancer/Tests/sqlancer06.stable.out
b/sql/test/SQLancer/Tests/sqlancer06.stable.out
--- a/sql/test/SQLancer/Tests/sqlancer06.stable.out
+++ b/sql/test/SQLancer/Tests/sqlancer06.stable.out
@@ -93,6 +93,23 @@ stdout of test 'sqlancer06` in directory
#540568573,NULL,false
#NULL,NULL,false
[ 4 ]
+#SELECT 1 FROM t2 LEFT JOIN t0 ON CASE CAST(t2.c0 AS VARCHAR(32)) WHEN
CAST(t2.c2 AS VARCHAR(32)) THEN 4 WHEN COALESCE('a', 'b') THEN 3 END IS NOT
NULL;
+% .%13 # table_name
+% %13 # name
+% tinyint # type
+% 1 # length
+[ 1 ]
+[ 1 ]
+[ 1 ]
+[ 1 ]
+#SELECT CAST(SUM(count) AS BIGINT) FROM (SELECT CAST(t2.c2 AS INT) as count
FROM t2 LEFT OUTER JOIN t0 ON (CASE CAST(t2.c0 AS VARCHAR(32)) WHEN CAST('*D'
AS VARCHAR(32)) THEN CASE 'u--'
+#WHEN 'Q' THEN 0.81 END WHEN CAST(t2.c2 AS VARCHAR(32)) THEN CASE 51854410
WHEN 0.6132552 THEN 134188918 END WHEN COALESCE('鈋', 'Nb|k', 's{%g.8Bj') THEN
CAST(571120738 AS INT)
+#ELSE CAST(0.13 AS REAL) END) IS NOT NULL CROSS JOIN (SELECT ALL
COALESCE(t1.c0, t0.c0) FROM t0, t1) AS sub0) as res;
+% .%13 # table_name
+% %13 # name
+% bigint # type
+% 2 # length
+[ 54 ]
#ROLLBACK;
#START TRANSACTION;
#CREATE TABLE "sys"."t0" ("c0" BOOLEAN NOT NULL,CONSTRAINT "t0_c0_pkey"
PRIMARY KEY ("c0"),CONSTRAINT "t0_c0_unique" UNIQUE ("c0"));
@@ -292,6 +309,18 @@ stdout of test 'sqlancer06` in directory
[ NULL ]
[ NULL ]
#ROLLBACK;
+#START TRANSACTION;
+#CREATE TABLE "sys"."t1" ("c0" BOOLEAN);
+#INSERT INTO t1(c0) VALUES(TRUE), ((EXISTS (SELECT DATE '1970-01-06' FROM t1))
BETWEEN (TRUE) AND ((1) IN (1)));
+[ 2 ]
+#SELECT c0 from t1;
+% sys.t1 # table_name
+% c0 # name
+% boolean # type
+% 5 # length
+[ true ]
+[ false ]
+#ROLLBACK;
# 19:38:32 >
# 19:38:32 > "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list