Changeset: 30b704af90f3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=30b704af90f3
Modified Files:
        sql/server/rel_rel.c
        sql/test/SQLancer/Tests/sqlancer06.sql
        sql/test/SQLancer/Tests/sqlancer06.stable.out
Branch: Oct2020
Log Message:

Don't include imprints on the SQL layer. It doesn't handle this index


diffs (102 lines):

diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -833,7 +833,7 @@ rel_basetable(mvc *sql, sql_table *t, co
                        char *iname = NULL;
 
                        /* do not include empty indices in the plan */
-                       if (hash_index(i->type) && list_length(i->columns) <= 1)
+                       if ((hash_index(i->type) && list_length(i->columns) <= 
1) || i->type == no_idx || i->type == imprints_idx)
                                continue;
 
                        if (i->type == join_idx)
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
@@ -84,3 +84,16 @@ 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;
        -- 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"));
+CREATE IMPRINTS INDEX "i0" ON "sys"."t0" ("c0");
+CREATE TABLE "sys"."t2" ("c0" BOOLEAN);
+
+SELECT 1 FROM t0 FULL OUTER JOIN t2 ON CASE WHEN TRUE THEN EXISTS (SELECT 1 
FROM t2) END;
+       -- empty
+SELECT CAST(SUM(count) AS BIGINT) FROM (SELECT ALL CAST((CASE TIMESTAMP 
'1970-01-23 00:06:34' WHEN TIMESTAMP '1970-01-15 23:55:20' THEN 0.1 ELSE 0.7 
END) NOT IN (COALESCE(0.8, 0.2), COALESCE(0.4, 0.5, 0.9, 0.8)) AS INT) as count 
+FROM t0 FULL OUTER JOIN t2 ON CASE WHEN t2.c0 THEN (DATE '1970-01-24') IN 
(DATE '1970-01-11', DATE '1969-12-18') WHEN (t2.c0) NOT BETWEEN SYMMETRIC 
(t0.c0) AND (CASE DATE '1970-01-01' WHEN DATE '1970-01-15' THEN TRUE ELSE t2.c0 
END) 
+THEN t0.c0 WHEN NOT (((t2.c0)<=(t2.c0))) THEN NOT EXISTS (SELECT DISTINCT 
INTERVAL '903334778' SECOND FROM t2 WHERE t2.c0) END) as res;
+       -- empty
+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
@@ -52,6 +52,66 @@ stdout of test 'sqlancer06` in directory
 #INSERT INTO t2(c1) VALUES(1807763525);
 [ 1    ]
 #DROP TABLE t2;
+#START TRANSACTION;
+#CREATE TABLE "sys"."t0" ("c0" DOUBLE,"c1" DOUBLE NOT NULL,CONSTRAINT 
"t0_c1_c0_unique" UNIQUE ("c1", "c0"));
+#COPY 8 RECORDS INTO "sys"."t0" FROM stdin USING DELIMITERS E'\t',E'\n','"';
+#NULL  0.11556091558253245
+#0.29659357385748286   68693719
+#0.9191040589762235    0.5658689286027364
+#NULL  0.1019666413117839
+#NULL  0.64159659402381
+#NULL  0.06945707167931647
+#1696129939    1930440479
+#0.291412016319756     0.19803645886665644
+[ 8    ]
+#CREATE TABLE "sys"."t1" ("c1" DOUBLE,CONSTRAINT "t1_c1_unique" UNIQUE ("c1"));
+#select cast(sum(count) as bigint) from (select cast(not ((-307103413) in 
(0.68224454, 0.9718348)) as int) as count from t0 right outer join t1 
+#on (t0.c1) between symmetric (t1.c1) and (((- 
(-1063131904))&(coalesce(-569972440, 1845997183))))) as res;
+% .%10 # table_name
+% %10 # name
+% bigint # type
+% 1 # length
+[ NULL ]
+#ROLLBACK;
+#START TRANSACTION;
+#CREATE TABLE "sys"."t0" ("c0" TIMESTAMP NOT NULL,CONSTRAINT "t0_c0_pkey" 
PRIMARY KEY ("c0"),CONSTRAINT "t0_c0_unique" UNIQUE ("c0"));
+#COPY 3 RECORDS INTO "sys"."t0" FROM stdin USING DELIMITERS E'\t',E'\n','"';
+#"1970-01-12 10:04:08.000000"
+#"1970-01-06 03:09:33.000000"
+#"1970-01-19 10:03:56.000000"
+[ 3    ]
+#CREATE TABLE "sys"."t1" ("c0" TIMESTAMP);
+#COPY 3 RECORDS INTO "sys"."t1" FROM stdin USING DELIMITERS E'\t',E'\n','"';
+#"1970-01-16 15:26:07.000000"
+#"1970-01-21 09:11:00.000000"
+#"1969-12-24 08:07:10.000000"
+[ 3    ]
+#CREATE TABLE "sys"."t2" ("c0" INTERVAL MONTH,"c1" DOUBLE,"c2" BOOLEAN);
+#COPY 4 RECORDS INTO "sys"."t2" FROM stdin USING DELIMITERS E',',E'\n','"';
+#1293946112,0.3251224351379446,true
+#1293946112,0.3251224351379446,true
+#540568573,NULL,false
+#NULL,NULL,false
+[ 4    ]
+#ROLLBACK;
+#START TRANSACTION;
+#CREATE TABLE "sys"."t0" ("c0" BOOLEAN NOT NULL,CONSTRAINT "t0_c0_pkey" 
PRIMARY KEY ("c0"),CONSTRAINT "t0_c0_unique" UNIQUE ("c0"));
+#CREATE IMPRINTS INDEX "i0" ON "sys"."t0" ("c0");
+#CREATE TABLE "sys"."t2" ("c0" BOOLEAN);
+#SELECT 1 FROM t0 FULL OUTER JOIN t2 ON CASE WHEN TRUE THEN EXISTS (SELECT 1 
FROM t2) END;
+% .%33 # table_name
+% %33 # name
+% tinyint # type
+% 1 # length
+#SELECT CAST(SUM(count) AS BIGINT) FROM (SELECT ALL CAST((CASE TIMESTAMP 
'1970-01-23 00:06:34' WHEN TIMESTAMP '1970-01-15 23:55:20' THEN 0.1 ELSE 0.7 
END) NOT IN (COALESCE(0.8, 0.2), COALESCE(0.4, 0.5, 0.9, 0.8)) AS INT) as count 
+#FROM t0 FULL OUTER JOIN t2 ON CASE WHEN t2.c0 THEN (DATE '1970-01-24') IN 
(DATE '1970-01-11', DATE '1969-12-18') WHEN (t2.c0) NOT BETWEEN SYMMETRIC 
(t0.c0) AND (CASE DATE '1970-01-01' WHEN DATE '1970-01-15' THEN TRUE ELSE t2.c0 
END) 
+#THEN t0.c0 WHEN NOT (((t2.c0)<=(t2.c0))) THEN NOT EXISTS (SELECT DISTINCT 
INTERVAL '903334778' SECOND FROM t2 WHERE t2.c0) END) as res;
+% .%14 # table_name
+% %14 # name
+% bigint # type
+% 1 # length
+[ NULL ]
+#ROLLBACK;
 
 # 19:38:32 >  
 # 19:38:32 >  "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to