Changeset: e68fc4ed5ee8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e68fc4ed5ee8
Modified Files:
        sql/server/rel_dump.c
        sql/server/rel_rewriter.c
        
sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
        sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
        sql/test/BugTracker-2024/Tests/7477-atom_cmp.test
        sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
        sql/test/SQLancer/Tests/sqlancer13.test
        sql/test/SQLancer/Tests/sqlancer17.test
        sql/test/SQLancer/Tests/sqlancer18.test
        sql/test/Tests/select_window_pushdown.test
        sql/test/rel-optimizers/Tests/groupjoin.test
        sql/test/sys-schema/Tests/webExamplesComparisonFunctionsOperators.test
Branch: reducedstack
Log Message:

approved some tests
optimize X or X -> X and X and X -> X
output (initial steps) .OR/.AND into nested () or () like old still to be 
backward compatible


diffs (truncated from 341 to 300 lines):

diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -115,6 +115,39 @@ static void exps_print(mvc *sql, stream 
 
 static void rel_print_rel(mvc *sql, stream  *fout, sql_rel *rel, int depth, 
list *refs, int decorate);
 
+static void
+exp_or_print(mvc *sql, stream *fout, node *n, int anti, int depth, list *refs, 
int decorate)
+{
+       assert(n->next);
+       sql_exp *l = n->data;
+       sql_exp *r = n->next->data;
+
+       if (l->type == e_cmp && l->flag == cmp_con) {
+               exps_print(sql, fout, l->l, depth, refs, 0, 1, decorate, 0);
+       } else {
+               mnstr_printf(fout, "(");
+               exp_print(sql, fout, l, depth+1, refs, 0, 0, decorate);
+               mnstr_printf(fout, ")");
+       }
+       if (anti)
+               mnstr_printf(fout, " !");
+       mnstr_printf(fout, " or ");
+
+       if (n->next->next) {
+               mnstr_printf(fout, "(");
+               exp_or_print(sql, fout, n->next, anti, depth, refs, decorate);
+               mnstr_printf(fout, ")");
+       } else {
+               if (r->type == e_cmp && r->flag == cmp_con) {
+                       exps_print(sql, fout, r->l, depth, refs, 0, 1, 
decorate, 0);
+               } else {
+                       mnstr_printf(fout, "(");
+                       exp_print(sql, fout, r, depth+1, refs, 0, 0, decorate);
+                       mnstr_printf(fout, ")");
+               }
+       }
+}
+
 void
 exp_print(mvc *sql, stream *fout, sql_exp *e, int depth, list *refs, int 
comma, int alias, int decorate)
 {
@@ -279,6 +312,9 @@ exp_print(mvc *sql, stream *fout, sql_ex
                                mnstr_printf(fout, " !");
                        cmp_print(sql, fout, e->flag);
                        exps_print(sql, fout, e->r, depth, refs, 0, 1, 
decorate, 0);
+               } else if (e->flag == cmp_dis && (!is_anti(e) || 
list_length(e->l) == 2)) { /* output as old cmp_or right nested tree */
+                       list *l = e->l;
+                       exp_or_print(sql, fout, l->h, is_anti(e), depth, refs, 
decorate);
                } else if (e->flag == cmp_con || e->flag == cmp_dis) {
                        if (is_anti(e))
                                mnstr_printf(fout, " !");
diff --git a/sql/server/rel_rewriter.c b/sql/server/rel_rewriter.c
--- a/sql/server/rel_rewriter.c
+++ b/sql/server/rel_rewriter.c
@@ -41,8 +41,7 @@ exps_simplify_exp(visitor *v, list *exps
                for (node *n=exps->h; n; n = n->next) {
                        sql_exp *e = n->data;
 
-                       /* TRUE and X -> X */
-                       /* FALSE and X -> FALSE */
+                       /* TRUE and X -> X, FALSE and X -> FALSE, X and X -> X 
*/
                        if (is_compare(e->type) && e->flag == cmp_con) {
                                sql_exp *te = NULL;
                                list *l = e->l;
@@ -64,6 +63,10 @@ exps_simplify_exp(visitor *v, list *exps
                                                e = ie;
                                                nexps = NULL;
                                                break;
+                                       } else if (m->next) {
+                                               sql_exp *ie2 = m->next->data;
+                                               if (exp_equal(ie, ie2) == 0)
+                                                       continue; /* skip */
                                        }
                                        append(nexps, ie);
                                }
@@ -80,8 +83,7 @@ exps_simplify_exp(visitor *v, list *exps
                                        }
                                }
                        } else
-                       /* TRUE or X -> TRUE
-                       * FALSE or X -> X */
+                       /* TRUE or X -> TRUE, FALSE or X -> X, X OR X -> X */
                        if (is_compare(e->type) && e->flag == cmp_dis) {
                                sql_exp *fe = NULL;
                                list *l = e->l;
@@ -103,6 +105,10 @@ exps_simplify_exp(visitor *v, list *exps
                                        } else if (exp_is_false(ie)) { /* x or 
false -> x */
                                                fe = ie;
                                                continue;
+                                       } else if (m->next) {
+                                               sql_exp *ie2 = m->next->data;
+                                               if (exp_equal(ie, ie2) == 0)
+                                                       continue; /* skip */
                                        }
                                        append(nexps, ie);
                                }
diff --git 
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
 
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
--- 
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
+++ 
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.test
@@ -21,7 +21,7 @@ project (
 | | | | table("sys"."tab0") [ "tab0"."col0" UNIQUE as "cor0"."col0", 
"tab0"."col1" UNIQUE as "cor0"."col1" ]
 | | | ) [ ("cor0"."col0" UNIQUE) * = (int(31) NULL) ]
 | | ) [ "cor0"."col1" UNIQUE, "cor0"."col0" UNIQUE ] [ "cor0"."col1" UNIQUE, 
"cor0"."col0" UNIQUE, "sys"."avg" no nil ("cor0"."col0" UNIQUE) as "%1"."%1" ]
-| ) [ ("sys"."sql_add"(double(53)["sys"."sql_neg"("cor0"."col1" UNIQUE)], 
"%1"."%1")) ! * = (double(53) NULL) ]
+| ) [ ("sys"."sql_add"(double(53)["sys"."sql_neg"("cor0"."col1" UNIQUE)], 
"%1"."%1")) * != (double(53) NULL) ]
 ) [ "sys"."sql_neg"("cor0"."col0" UNIQUE) as "col1" ]
 
 statement ok
diff --git a/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test 
b/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
--- a/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
+++ b/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
@@ -259,9 +259,8 @@ query I nosort
 WITH v0 (v1) AS (SELECT 127 FROM v0 WHERE (v1 < 2147483647 OR v1 > -1) AND v1 
/ v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 ^ v1 FROM v0 AS v3 WINDOW v2 AS ( 
), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 OFFSET 8
 ----
 
-statement error 42000!
+statement ok
 UPDATE v0 SET v1 = (WITH v0 (v1) AS (SELECT 127 WHERE (v1 < 2147483647 OR v1 > 
-1) AND v1 / v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 FROM v0 AS v3 WINDOW v2 
AS ( ), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 
OFFSET 8) ^ v1
--- sql/server/rel_select.c:3104: rel_binop_: Assertion `t1 && t2' failed.
 
 statement ok
 DROP TABLE v0
@@ -401,7 +400,7 @@ INSERT INTO v0 VALUES (-1),(127),(4),(-1
 statement error 42000!SELECT: identifier 'v1' ambiguous
 WITH v0 AS (SELECT -1, * FROM v0) INSERT INTO v0 SELECT v1 * 29 FROM v0 AS v3, 
v0, v0 AS v2, v0 AS v4, v0 ORDER BY v1 * 0 ^ 83
 
-statement error 42000!row frame bound must be non negative and non null.
+statement ok
 UPDATE v0 SET v1 = -1 WHERE CASE WHEN v1 > -1 THEN (SELECT STDDEV_SAMP((18 * 
v1 + (v1 IN (21 , -1)))) OVER (ROWS BETWEEN CURRENT ROW AND v1 - NULL 
FOLLOWING) * 17) > v1 / (SELECT -1 WHERE (88 IN (96))) ELSE 82 END ^ -128 ^ v1
 
 statement ok
@@ -458,8 +457,11 @@ statement ok
 DROP TABLE v0
 
 -- 31.sql
-statement error 22003!overflow ...
+query I
 SELECT ALL ( SELECT - - - - - - - - - - - 1 - - - - - - 16 FROM ( SELECT NULL 
- - - - - - - - - - - - - - - - 1 FROM ( SELECT - - - - 1 * - - - - - - 
2147483648 * - - - 43 * 77745222.000000 ) AS v1 ( v1 ) GROUP BY GROUPING SETS ( 
GROUPING SETS ( CUBE ( v1 ) ) ) ORDER BY v1 , - - - 86 + - - 93 ^ v1 , v1 LIMIT 
21 ) AS v1 UNION SELECT - - - - - - - - - - - - 93 WHERE - v1 < - 
63226945.000000 - - - - - - - - - - 68 ) FROM ( VALUES ( - - - - - - - - - 40 / 
- ( SELECT - - - - - - - - 0 WHERE - - - - - - - 40 = - - - - - 0 ) ) , ( - - 
88 ) ) v1 ( v1 )
+----
+15
+15
 
 -- 32.sql
 statement ok
diff --git a/sql/test/BugTracker-2024/Tests/7477-atom_cmp.test 
b/sql/test/BugTracker-2024/Tests/7477-atom_cmp.test
--- a/sql/test/BugTracker-2024/Tests/7477-atom_cmp.test
+++ b/sql/test/BugTracker-2024/Tests/7477-atom_cmp.test
@@ -1,6 +1,7 @@
 -- trying first without function "abs ( x )"
-statement error 22018!conversion of string to type bte failed.
+query I nosort
 SELECT - 66 x GROUP BY x HAVING ( x IN ( SELECT '' x WHERE ( x = ( x = 1 ) ) 
UNION SELECT 1 ) )
+----
 
 -- changing '' into 1, so a string into int
 query I nosort
diff --git a/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test 
b/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
--- a/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
+++ b/sql/test/BugTracker-2025/Tests/7615_join_reordering_2.test
@@ -35,7 +35,7 @@ project (
 | | | | | |  [ "sys"."cnt"(varchar "sys", varchar "x3") NOT NULL as "%1"."%1" 
],
 | | | | | |  [ "sys"."cnt"(varchar "sys", varchar "x4") NOT NULL as "%3"."%3" ]
 | | | | | ) [  ]
-| | | | ) [ "sys"."case"("sys"."="("%1"."%1" NOT NULL, "%3"."%3" NOT NULL) NOT 
NULL, tinyint(1) "1", tinyint(1) "0") as "foox3"."a1" ]
+| | | | ) [ "sys"."case"(("%1"."%1" NOT NULL) = ("%3"."%3" NOT NULL), 
tinyint(1) "1", tinyint(1) "0") as "foox3"."a1" ]
 | | | ) [ ("foox3"."a1") = (tinyint(1) "1") ]
 | | ) [  ]
 | ) [ "x1"."a1" NOT NULL as "a1", "x1"."a2" NOT NULL as "a2", "x4"."a1" NOT 
NULL as "a3", "x4"."a2" NOT NULL as "a4", "x4"."a3" NOT NULL as "a5", 
"sys"."sql_mul"("x1"."p" NOT NULL, "x4"."p" NOT NULL) NOT NULL as "p" ]
diff --git a/sql/test/SQLancer/Tests/sqlancer13.test 
b/sql/test/SQLancer/Tests/sqlancer13.test
--- a/sql/test/SQLancer/Tests/sqlancer13.test
+++ b/sql/test/SQLancer/Tests/sqlancer13.test
@@ -27,14 +27,14 @@ COPY 1 RECORDS INTO "t2" FROM stdin USIN
 <COPY_INTO_DATA>
 3      0.800   ""
 
-statement error 21000!Cardinality violation, scalar value expected
+statement error GDK reported error: BATsubcross: more than one match
 select ((((select 1.75) union all (select 4))) between ((select 3 from t1)) 
and 2) = true
 
-statement error 21000!Cardinality violation, scalar value expected
+statement error GDK reported error: BATsubcross: more than one match
 select cast(sum(count) as bigint) from (select all cast(((((select all 
-1.75501356E8 from t0 as l3t0 where l3t0.c1) union all (select 1699564541 from 
t0 as l3t0 where l3t0.c1)))
 not between symmetric ((select -1732113123 from t2 as l3t2, t1 as l3t1 where 
l3t1.c5)) and (((0)%(6)))) = true as int) as count from t2) as res
 
-statement error 21000!Cardinality violation, scalar value expected
+statement error GDK reported error: BATsubcross: more than one match
 select substr(((select 'i') union all (select 'am')),(select 3 where false), 
2) = 'wrong'
 
 statement ok
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
@@ -406,7 +406,7 @@ 0.071
 statement ok
 ALTER TABLE t0 ADD COLUMN c2 UUID
 
-statement error GDK reported error: BATsubcross: more than one match
+statement ok
 UPDATE t2 SET c0 = 1 FROM t0 WHERE (least(TRUE, FALSE) AND 0.63 = t2.c0) OR 
(0.23 <= 0.1)
 
 statement ok
diff --git a/sql/test/SQLancer/Tests/sqlancer18.test 
b/sql/test/SQLancer/Tests/sqlancer18.test
--- a/sql/test/SQLancer/Tests/sqlancer18.test
+++ b/sql/test/SQLancer/Tests/sqlancer18.test
@@ -644,8 +644,9 @@ create or replace view v102(vc0) as (sel
 statement ok
 commit
 
-statement error 42000!COUNT: aggregate functions not allowed in WHERE clause
+query I
 SELECT 1 FROM v100 AS vx WHERE vx.vc0 = ANY(SELECT 1 FROM v100 HAVING 
count(vx.vc0 = vx.vc0 AND (SELECT TRUE FROM v102)))
+----
 
 statement error 42000!COUNT: aggregate functions not allowed in WHERE clause
 SELECT 1 FROM v100 WHERE (SELECT 1 HAVING count(v100.vc0 + (SELECT 1 FROM 
v104)))
diff --git a/sql/test/Tests/select_window_pushdown.test 
b/sql/test/Tests/select_window_pushdown.test
--- a/sql/test/Tests/select_window_pushdown.test
+++ b/sql/test/Tests/select_window_pushdown.test
@@ -26,7 +26,7 @@ project (
 | | | | | select (
 | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
 | | | | | ) [ ("test"."k" NOT NULL) = (int(31) "10") ]
-| | | | ) [ int(31) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as "t1"."v", 
"sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as "%1"."%1", 
"sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ int(31) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as "t1"."v", 
("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = (int(31) "0") 
as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL), 
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
 | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31) 
"1") ]
@@ -52,7 +52,7 @@ project (
 | | | | | select (
 | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
 | | | | | ) [ (int(31) "10") <= ("test"."k" NOT NULL) <= (int(31) "50") ]
-| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as 
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", ("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = 
(int(31) "0") as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL), 
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
 | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31) 
"1") ]
@@ -78,7 +78,7 @@ project (
 | | | | | select (
 | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
 | | | | | ) [ ("test"."k" NOT NULL) notin (int(31) "10", int(31) "20", int(31) 
"30") ]
-| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as 
"%2"."%2", "sys"."="("%2"."%2" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", ("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = 
(int(31) "0") as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL), 
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
 | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31) 
"1") ]
@@ -104,7 +104,7 @@ project (
 | | | | | select (
 | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
 | | | | | ) [ ("test"."k" NOT NULL) = (int(31) "10") ]
-| | | | ) [ int(31) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as "t1"."v", 
"sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as "%1"."%1", 
"sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ int(31) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as "t1"."v", 
("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = (int(31) "0") 
as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL), 
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
 | ) [ ("t1"."v" NOT NULL UNIQUE) = (int(31) "15"), ("t1"."flag" NOT NULL) = 
(boolean(1) "false"), ("t2"."rank") = (int(31) "1") ]
@@ -131,7 +131,7 @@ project (
 | | | | | select (
 | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
 | | | | | ) [ ("test"."v" NOT NULL UNIQUE) = (int(31) "15") ]
-| | | | ) [ "test"."k" NOT NULL as "t1"."k", int(31) "15" as "t1"."v", 
"sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as "%1"."%1", 
"sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ "test"."k" NOT NULL as "t1"."k", int(31) "15" as "t1"."v", 
("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = (int(31) "0") 
as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."v" PART NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."k" NOT NULL, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."v" PART NOT NULL 
UNIQUE), "sys"."diff"("t1"."v" PART NOT NULL UNIQUE)) as "t2"."rank" ]
 | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31) 
"1"), ("t1"."k" NOT NULL) = (int(31) "10") ]
@@ -158,7 +158,7 @@ project (
 | | | | | project (
 | | | | | | project (
 | | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
-| | | | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as 
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", ("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = 
(int(31) "0") as "t1"."flag" ]
 | | | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT 
NULL ] [ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
 | | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL), 
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
 | | | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = 
(int(31) "1") ]
@@ -184,7 +184,7 @@ project (
 | | | project (
 | | | | project (
 | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
-| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as 
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", ("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = 
(int(31) "0") as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL), 
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
 | ) [ ("t2"."rank") = (int(31) "1"), (("t1"."flag" NOT NULL) = (boolean(1) 
"false")) or (("t1"."k" NOT NULL) = (int(31) "10")) ]
@@ -210,7 +210,7 @@ project (
 | | | | | select (
 | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
 | | | | | ) [ ("test"."k" NOT NULL) <= (int(31) "10"), ("test"."v" NOT NULL 
UNIQUE) in (int(31) "1", int(31) "2", int(31) "3") ]
-| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as 
"%2"."%2", "sys"."="("%2"."%2" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ "test"."k" NOT NULL as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", ("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = 
(int(31) "0") as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."k" PART ASC NOT NULL, "t1"."v" PART NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("sys"."diff"("t1"."k" PART 
NOT NULL), "t1"."v" PART NOT NULL UNIQUE), "sys"."diff"("t1"."v" PART NOT NULL 
UNIQUE)) as "t2"."rank" ]
 | ) [ ("t1"."flag" NOT NULL) = (boolean(1) "false"), ("t2"."rank") = (int(31) 
"1") ]
@@ -246,7 +246,7 @@ project (
 | | | | | select (
 | | | | | | table("sys"."test") [ "test"."k" NOT NULL, "test"."v" NOT NULL 
UNIQUE ]
 | | | | | ) [ ("test"."k" NOT NULL) = (varchar(100) "10") ]
-| | | | ) [ varchar(100) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", "sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL as 
"%1"."%1", "sys"."="("%1"."%1" NOT NULL, int(31) "0") NOT NULL as "t1"."flag" ]
+| | | | ) [ varchar(100) "10" as "t1"."k", "test"."v" NOT NULL UNIQUE as 
"t1"."v", ("sys"."mod"("test"."v" NOT NULL UNIQUE, int(2) "2") NOT NULL) = 
(int(31) "0") as "t1"."flag" ]
 | | | ) [ "t1"."k" NOT NULL, "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL ] 
[ "t1"."k" PART ASC NOT NULL, "t1"."v" NULLS LAST NOT NULL UNIQUE ]
 | | ) [ "t1"."v" NOT NULL UNIQUE, "t1"."flag" NOT NULL, 
"sys"."rank"(varchar["sys"."star"()], "sys"."diff"("t1"."k" PART NOT NULL), 
"sys"."diff"("t1"."v" NOT NULL UNIQUE)) as "t2"."rank" ]
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to