Changeset: ddc9b535b7b2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ddc9b535b7b2
Modified Files:
        sql/server/rel_select.c
        sql/test/SQLancer/Tests/sqlancer14.test
Branch: default
Log Message:

Here comparison expressions must be generated


diffs (105 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2675,8 +2675,19 @@ rel_logical_exp(sql_query *query, sql_re
        }
        case SQL_ATOM: {
                /* TRUE or FALSE */
+               sql_rel *or = rel;
                AtomNode *an = (AtomNode *) sc;
                sql_exp *e = exp_atom(sql->sa, atom_dup(sql->sa, an->a));
+
+               if (e) {
+                       sql_subtype bt;
+
+                       sql_find_subtype(&bt, "boolean", 0, 0);
+                       e = exp_check_type(sql, &bt, rel, e, type_equal);
+               }
+               if (!e || or != rel)
+                       return NULL;
+               e = exp_compare(sql->sa, e, exp_atom_bool(sql->sa, 1), 
cmp_equal);
                return rel_select_push_exp_down(sql, rel, e, e, e, e, e, NULL, 
f);
        }
        case SQL_IDENT:
@@ -2692,6 +2703,7 @@ rel_logical_exp(sql_query *query, sql_re
                }
                if (!e || or != rel)
                        return NULL;
+               e = exp_compare(sql->sa, e, exp_atom_bool(sql->sa, 1), 
cmp_equal);
                return rel_select_push_exp_down(sql, rel, e, e, e, e, e, NULL, 
f);
        }
        case SQL_UNION:
diff --git a/sql/test/SQLancer/Tests/sqlancer14.test 
b/sql/test/SQLancer/Tests/sqlancer14.test
--- a/sql/test/SQLancer/Tests/sqlancer14.test
+++ b/sql/test/SQLancer/Tests/sqlancer14.test
@@ -619,3 +619,70 @@ DROP TABLE t0
 
 statement ok
 DROP TABLE t1
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE "sys"."t2" ("c1" INTERVAL MONTH NOT NULL,"c3" VARCHAR(55) NOT 
NULL,"c4" DOUBLE NOT NULL, CONSTRAINT "t2_c1_pkey" PRIMARY KEY ("c1"))
+
+statement ok
+COPY 7 RECORDS INTO "sys"."t2" FROM stdin USING DELIMITERS E'\t',E'\n','"'
+<COPY_INTO_DATA>
+7      "836999245"     0.5209641695747843
+5      "F~\\v\0156"    0.9120966504084695
+6      ""      0.20943431967236137
+4      "zz-N"  1
+8      ""      1420885136
+0      "-366705317"    -3
+3      ""      0.12048574302018378
+
+query T rowsort
+SELECT t2.c1 FROM t2 FULL OUTER JOIN (SELECT 1 FROM t2) AS sub0 ON '1' AND 
t2.c1 <> ALL(VALUES (INTERVAL '5' MONTH))
+----
+0
+0
+0
+0
+0
+0
+0
+3
+3
+3
+3
+3
+3
+3
+4
+4
+4
+4
+4
+4
+4
+5
+6
+6
+6
+6
+6
+6
+6
+7
+7
+7
+7
+7
+7
+7
+8
+8
+8
+8
+8
+8
+8
+
+statement ok
+ROLLBACK
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to