Changeset: 045d372a3f76 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=045d372a3f76
Modified Files:
        sql/backends/monet5/sql_statement.c
        sql/test/SQLancer/Tests/sqlancer09.sql
Branch: Oct2020
Log Message:

Real fix for SQLancer bug, add missing 'key' property set for statements 
generated from comparisons, as they are now allowed in projections


diffs (39 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
@@ -1406,6 +1406,7 @@ stmt_genselect(backend *be, stmt *lops, 
                s->op1 = lops;
                s->op2 = rops;
                s->op3 = sub;
+               s->key = lops->nrcols == 0 && rops->nrcols == 0;
                s->flag = cmp_filter;
                s->nrcols = lops->nrcols;
                s->nr = getDestVar(q);
@@ -1570,6 +1571,7 @@ stmt_uselect(backend *be, stmt *op1, stm
        s->op2 = op2;
        s->op3 = sub;
        s->flag = cmptype;
+       s->key = op1->nrcols == 0 && op2->nrcols == 0;
        s->nrcols = op1->nrcols;
        s->nr = getDestVar(q);
        s->q = q;
@@ -1823,6 +1825,7 @@ stmt_uselect2(backend *be, stmt *op1, st
                s->op4.stval = sub;
                s->flag = cmp;
                s->nrcols = op1->nrcols;
+               s->key = op1->nrcols == 0 && op2->nrcols == 0 && op3->nrcols == 
0;
                s->nr = getDestVar(q);
                s->q = q;
                s->cand = sub;
diff --git a/sql/test/SQLancer/Tests/sqlancer09.sql 
b/sql/test/SQLancer/Tests/sqlancer09.sql
--- a/sql/test/SQLancer/Tests/sqlancer09.sql
+++ b/sql/test/SQLancer/Tests/sqlancer09.sql
@@ -90,6 +90,8 @@ WHEN TRUE THEN 1702709680 WHEN r'TRUE' T
 WHEN (UUID 'baF49A5B-1862-19aa-E6F8-b3C5A7F4b1FF') BETWEEN SYMMETRIC (UUID 
'63A9aBBe-87b1-683a-2c68-eCd5cC7FE7E9') 
 AND (UUID '82eb84EF-dF3D-a45e-f92b-E42BdfFEB1B9') THEN - (1129823324) END) 
WHEN MATCHED THEN DELETE;
 
+create or replace view v0(vc0) as (values (1 between 1 and 2));
+
 SELECT 1 FROM (SELECT 1 FROM v0) AS v0(v0) inner join t1 ON 1 BETWEEN 2 AND 1;
 -- Disable rel_simplify_ifthenelse optimizer
 SELECT 1 FROM (SELECT 1 FROM v0) AS v0(v0) inner join t1 ON 1 BETWEEN 2 AND 
(CASE WHEN 1 BETWEEN 2 AND 3 THEN 2 END);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to