Changeset: 974c885dc43d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=974c885dc43d
Modified Files:
        sql/server/rel_rel.h
        sql/server/rel_select.c
        sql/test/BugTracker-2017/Tests/lateral.Bug-6310.sql
        sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out
Branch: subquery
Log Message:

fixes not (or/and) handling.


diffs (truncated from 386 to 300 lines):

diff --git a/sql/server/rel_rel.h b/sql/server/rel_rel.h
--- a/sql/server/rel_rel.h
+++ b/sql/server/rel_rel.h
@@ -20,6 +20,7 @@
 #define sql_groupby 32 //ORed
 #define sql_partitionby 64 //ORed
 #define sql_aggr 128 //ORed
+#define sql_farg 256 //ORed
 
 #define is_sql_from(X)    ((X & sql_from) == sql_from)
 #define is_sql_where(X)   ((X & sql_where) == sql_where)
@@ -29,6 +30,7 @@
 #define is_sql_groupby(X) ((X & sql_groupby) == sql_groupby)
 #define is_sql_partitionby(X) ((X & sql_partitionby) == sql_partitionby)
 #define is_sql_aggr(X)    ((X & sql_aggr) == sql_aggr)
+#define is_sql_farg(X)    ((X & sql_farg) == sql_farg)
 
 #define ERR_AMBIGUOUS          050000
 
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
@@ -2093,7 +2093,7 @@ rel_in_value_exp(sql_query *query, sql_r
                        }
                        if (l_used) 
                                rel_join_add_exp(sql->sa, left, je);
-                       else if (!is_sql_sel(f)) {
+                       else if (!is_sql_sel(f) && !is_sql_farg(f)) {
                                if (!is_select(left->op) || rel_is_ref(left))
                                        left = rel_select(sql->sa, left, e);
                                else
@@ -2729,7 +2729,6 @@ rel_in_exp(sql_query *query, sql_rel *re
                                                return NULL;
                                        exp_label(sql->sa, r, ++sql->label);
                                        r = exp_ref(sql->sa, r);
-                                       //e = exp_compare(sql->sa, l, r, 
cmp_equal );
                                        e = exp_compare(sql->sa, l, r, 
sc->token==SQL_IN?mark_in:mark_notin); 
                                        rel_join_add_exp(sql->sa, left, e);
                                }
@@ -3234,7 +3233,7 @@ rel_logical_exp(sql_query *query, sql_re
                default:
                        break;
                } 
-               le = rel_value_exp(query, &rel, sc->data.sym, f, ek);
+               le = rel_value_exp(query, &rel, sc->data.sym, f|sql_farg, ek);
 
                if (!le)
                        return NULL;
diff --git a/sql/test/BugTracker-2017/Tests/lateral.Bug-6310.sql 
b/sql/test/BugTracker-2017/Tests/lateral.Bug-6310.sql
--- a/sql/test/BugTracker-2017/Tests/lateral.Bug-6310.sql
+++ b/sql/test/BugTracker-2017/Tests/lateral.Bug-6310.sql
@@ -18,7 +18,7 @@ CREATE TABLE PARTSUPP ( PS_PARTKEY     I
                              PRIMARY KEY    (PS_PARTKEY,PS_SUPPKEY),
                              FOREIGN KEY (PS_PARTKEY) references PART );
 
-               plan
+
 select
   ref_0.message as c0
 from
diff --git a/sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out 
b/sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out
--- a/sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out
+++ b/sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out
@@ -1029,6 +1029,7 @@ Ready.
 % L2,  L4,     L6,     c,      L14,    L17,    L21 # name
 % int, bigint, bigint, int,    bigint, bigint, bigint # type
 % 3,   3,      4,      3,      2,      4,      1 # length
+[ 107, 107,    1067,   106,    0,      635,    2       ]
 [ 131, 132,    1325,   134,    4,      793,    1       ]
 [ 149, NULL,   NULL,   147,    7,      880,    4       ]
 [ 153, NULL,   NULL,   150,    8,      905,    2       ]
@@ -1547,7 +1548,9 @@ Ready.
 % L2,  L4,     L11,    L14,    L16,    c # name
 % smallint,    bigint, bigint, bigint, bigint, int # type
 % 3,   3,      2,      1,      2,      3 # length
+[ 444, NULL,   0,      1,      NULL,   102     ]
 [ 222, NULL,   2,      1,      1,      123     ]
+[ 444, NULL,   0,      3,      NULL,   119     ]
 [ 333, 132,    4,      1,      -4,     134     ]
 [ 222, 137,    5,      1,      2,      137     ]
 [ 222, 142,    6,      1,      2,      141     ]
@@ -11446,7 +11449,9 @@ Ready.
 % L2,  L7,     d,      L13,    L15 # name
 % int, bigint, int,    bigint, bigint # type
 % 3,   2,      3,      3,      1 # length
+[ 104, 0,      101,    NULL,   NULL    ]
 [ 121, 2,      122,    NULL,   1       ]
+[ 115, 0,      116,    NULL,   NULL    ]
 [ 131, 4,      133,    132,    4       ]
 [ 138, 5,      136,    137,    2       ]
 [ 142, 6,      140,    142,    2       ]
@@ -18220,6 +18225,7 @@ Ready.
 % a,   L3,     L10 # name
 % int, bigint, bigint # type
 % 3,   4,      2 # length
+[ 107, 635,    0       ]
 [ 131, 793,    4       ]
 [ 149, 880,    7       ]
 [ 153, 905,    8       ]
@@ -23008,6 +23014,7 @@ Ready.
 % bigint,      int,    bigint, bigint # type
 % 4,   3,      2,      2 # length
 [ NULL,        114,    -1,     1       ]
+[ 635, 108,    -1,     0       ]
 [ 738, 122,    1,      2       ]
 [ 793, 133,    -4,     4       ]
 [ 827, 136,    2,      5       ]
@@ -26778,7 +26785,9 @@ Ready.
 % a,   L6,     L15,    L21 # name
 % int, bigint, bigint, bigint # type
 % 3,   2,      1,      4 # length
+[ 104, 0,      0,      NULL    ]
 [ 121, 2,      0,      1226    ]
+[ 115, 0,      0,      NULL    ]
 [ 131, 4,      0,      1325    ]
 [ 138, 5,      0,      1371    ]
 [ 142, 6,      0,      1411    ]
@@ -26801,9 +26810,9 @@ Ready.
 % a,   L6,     L15,    L21 # name
 % int, bigint, bigint, bigint # type
 % 3,   2,      1,      4 # length
-[ NULL,        18,     0,      NULL    ]
 [ 104, 0,      0,      NULL    ]
 [ 115, 0,      0,      NULL    ]
+[ NULL,        18,     0,      NULL    ]
 [ 121, 2,      0,      1226    ]
 [ 131, 4,      0,      1325    ]
 [ 138, 5,      0,      1371    ]
@@ -30215,6 +30224,7 @@ Ready.
 % L2,  d,      L5,     L7,     L11,    L16 # name
 % int, int,    bigint, smallint,       bigint, bigint # type
 % 3,   3,      3,      3,      4,      2 # length
+[ 107, 108,    107,    333,    1067,   0       ]
 [ 121, 122,    NULL,   333,    1226,   2       ]
 [ 127, 128,    127,    333,    1272,   3       ]
 [ 131, 133,    132,    444,    1325,   4       ]
@@ -30295,6 +30305,7 @@ Ready.
 % L2,  d,      L5,     L7,     L11,    L16 # name
 % int, int,    bigint, smallint,       bigint, bigint # type
 % 3,   3,      3,      3,      4,      2 # length
+[ 107, 108,    107,    333,    1067,   0       ]
 [ 121, 122,    NULL,   333,    1226,   2       ]
 [ 127, 128,    127,    333,    1272,   3       ]
 [ 131, 133,    132,    444,    1325,   4       ]
@@ -30375,6 +30386,7 @@ Ready.
 % L2,  d,      L5,     L7,     L11,    L16 # name
 % int, int,    bigint, smallint,       bigint, bigint # type
 % 3,   3,      3,      3,      4,      2 # length
+[ 107, 108,    107,    333,    1067,   0       ]
 [ 121, 122,    NULL,   333,    1226,   2       ]
 [ 127, 128,    127,    333,    1272,   3       ]
 [ 131, 133,    132,    444,    1325,   4       ]
@@ -33356,10 +33368,10 @@ Ready.
 % a,   L3,     e,      L10 # name
 % int, smallint,       int,    bigint # type
 % 3,   3,      3,      2 # length
+[ NULL,        555,    110,    1       ]
 [ 107, 333,    109,    0       ]
-[ NULL,        555,    110,    1       ]
+[ 127, 333,    126,    3       ]
 [ 115, 333,    117,    0       ]
-[ 127, 333,    126,    3       ]
 [ 131, 444,    132,    4       ]
 [ 138, 111,    135,    5       ]
 [ 142, 111,    144,    6       ]
@@ -34934,8 +34946,8 @@ Ready.
 % bigint,      int,    bigint, smallint,       smallint,       bigint # type
 % 3,   3,      2,      3,      3,      2 # length
 [ 317, 107,    0,      333,    333,    2       ]
+[ 385, 127,    3,      333,    222,    -2      ]
 [ NULL,        115,    0,      333,    444,    NULL    ]
-[ 385, 127,    3,      333,    222,    -2      ]
 [ 483, 163,    10,     333,    444,    3       ]
 [ 560, 188,    15,     444,    333,    2       ]
 [ 579, 191,    16,     444,    222,    -3      ]
@@ -36706,8 +36718,8 @@ Ready.
 % 2,   3,      3,      2,      2,      2,      4 # length
 [ 24,  711,    NULL,   NULL,   1,      NULL,   2360    ]
 [ 0,   317,    106,    -1,     -1,     -2,     1050    ]
+[ 3,   385,    125,    4,      2,      -3,     1290    ]
 [ 0,   NULL,   119,    NULL,   -1,     3,      NULL    ]
-[ 3,   385,    125,    4,      2,      -3,     1290    ]
 [ 4,   391,    134,    -4,     1,      1,      1300    ]
 [ 5,   416,    137,    2,      1,      1,      1390    ]
 [ 6,   428,    141,    2,      -4,     1,      1430    ]
@@ -37464,9 +37476,9 @@ Ready.
 % bigint,      bigint, smallint,       bigint, bigint, bigint # type
 % 4,   2,      3,      1,      2,      2 # length
 [ 1050,        0,      333,    0,      -2,     -1      ]
-[ NULL,        0,      333,    0,      3,      -1      ]
 [ 1240,        2,      333,    0,      1,      NULL    ]
 [ 1290,        3,      333,    0,      -3,     2       ]
+[ NULL,        0,      333,    0,      3,      -1      ]
 [ 1300,        4,      444,    0,      1,      1       ]
 [ 1390,        5,      111,    0,      1,      1       ]
 [ 1430,        6,      111,    0,      1,      -4      ]
@@ -39027,6 +39039,7 @@ Ready.
 % 3,   2,      3,      3,      3 # length
 [ 106, 0,      333,    107,    317     ]
 [ 113, 1,      555,    NULL,   NULL    ]
+[ 106, 0,      333,    107,    317     ]
 [ 123, 2,      333,    121,    369     ]
 [ 134, 4,      444,    131,    391     ]
 [ 137, 5,      111,    138,    416     ]
@@ -43644,6 +43657,7 @@ Ready.
 % L6,  L14,    a,      L21,    L23,    L25,    L27 # name
 % bigint,      bigint, int,    bigint, bigint, bigint, smallint # type
 % 4,   2,      3,      4,      4,      2,      3 # length
+[ 1050,        0,      107,    635,    1612,   -2,     333     ]
 [ 1600,        10,     163,    966,    2432,   -3,     444     ]
 [ 1700,        12,     174,    1030,   2579,   1,      444     ]
 [ 364, 14,     182,    1096,   2728,   1,      333     ]
@@ -54249,8 +54263,8 @@ Ready.
 % bigint,      int,    smallint,       bigint, bigint, int # type
 % 4,   3,      3,      2,      3,      3 # length
 [ 1612,        107,    333,    0,      317,    106     ]
+[ 1902,        127,    333,    3,      385,    125     ]
 [ NULL,        115,    333,    0,      NULL,   119     ]
-[ 1902,        127,    333,    3,      385,    125     ]
 [ 2432,        163,    333,    10,     483,    161     ]
 [ 2806,        188,    444,    15,     560,    187     ]
 [ 2878,        191,    444,    16,     579,    193     ]
@@ -55554,9 +55568,9 @@ Ready.
 [ 11,  1,      333,    1670,   NULL,   1       ]
 [ 0,   NULL,   444,    NULL,   101,    NULL    ]
 [ 0,   2,      333,    1050,   108,    -1      ]
-[ 0,   NULL,   444,    NULL,   116,    NULL    ]
 [ 2,   -3,     222,    1240,   122,    1       ]
 [ 3,   -2,     222,    1290,   128,    4       ]
+[ 0,   NULL,   444,    NULL,   116,    NULL    ]
 [ 4,   1,      333,    1300,   133,    -4      ]
 [ 5,   -1,     222,    1390,   136,    2       ]
 [ 6,   -1,     222,    1430,   140,    2       ]
@@ -57986,9 +58000,9 @@ Ready.
 % bigint,      bigint, int,    smallint,       bigint # type
 % 2,   1,      3,      3,      2 # length
 [ 0,   1,      106,    333,    -2      ]
-[ 0,   NULL,   119,    444,    3       ]
 [ 2,   1,      123,    222,    1       ]
 [ 3,   4,      125,    222,    -3      ]
+[ 0,   NULL,   119,    444,    3       ]
 [ 5,   2,      137,    222,    1       ]
 [ 6,   2,      141,    222,    1       ]
 [ 8,   1,      150,    333,    NULL    ]
@@ -64533,6 +64547,7 @@ Ready.
 % L2,  L7,     a,      L13 # name
 % bigint,      bigint, int,    bigint # type
 % 1,   2,      3,      4 # length
+[ 1,   0,      107,    1067    ]
 [ 4,   4,      131,    1325    ]
 [ 2,   7,      149,    NULL    ]
 [ 1,   8,      153,    NULL    ]
@@ -74040,8 +74055,8 @@ Ready.
 % bigint,      int,    smallint,       int,    bigint, bigint, int # type
 % 2,   3,      3,      3,      4,      1,      3 # length
 [ 0,   106,    333,    107,    1067,   0,      107     ]
+[ 3,   125,    222,    127,    1272,   0,      127     ]
 [ 0,   119,    444,    115,    NULL,   0,      115     ]
-[ 3,   125,    222,    127,    1272,   0,      127     ]
 [ 10,  161,    444,    163,    1622,   0,      163     ]
 [ 15,  187,    333,    188,    1861,   0,      188     ]
 [ 16,  193,    222,    191,    1918,   0,      191     ]
@@ -74799,6 +74814,7 @@ Ready.
 % bigint,      bigint, smallint,       bigint # type
 % 4,   4,      3,      2 # length
 [ NULL,        1120,   555,    1       ]
+[ 1612,        1050,   333,    0       ]
 [ NULL,        1240,   333,    2       ]
 [ 1902,        1290,   333,    3       ]
 [ 1985,        1300,   444,    4       ]
@@ -74875,6 +74891,7 @@ Ready.
 % bigint,      bigint, smallint,       bigint # type
 % 4,   4,      3,      2 # length
 [ NULL,        1120,   555,    1       ]
+[ 1612,        1050,   333,    0       ]
 [ NULL,        1240,   333,    2       ]
 [ 1902,        1290,   333,    3       ]
 [ 1985,        1300,   444,    4       ]
@@ -74951,6 +74968,7 @@ Ready.
 % bigint,      bigint, smallint,       bigint # type
 % 4,   4,      3,      2 # length
 [ NULL,        1120,   555,    1       ]
+[ 1612,        1050,   333,    0       ]
 [ NULL,        1240,   333,    2       ]
 [ 1902,        1290,   333,    3       ]
 [ 1985,        1300,   444,    4       ]
@@ -76001,9 +76019,9 @@ Ready.
 % L4,  L13,    b,      L16,    L20,    d # name
 % bigint,      bigint, int,    bigint, bigint, int # type
 % 2,   4,      3,      2,      1,      3 # length
+[ 1,   1120,   112,    4,      1,      114     ]
 [ 0,   NULL,   NULL,   NULL,   NULL,   101     ]
 [ 0,   1050,   105,    -1,     1,      108     ]
-[ 1,   1120,   112,    4,      1,      114     ]
 [ 2,   1240,   124,    NULL,   1,      122     ]
 [ 4,   1300,   130,    1,      4,      133     ]
 [ 5,   1390,   139,    1,      2,      136     ]
@@ -79108,7 +79126,9 @@ Ready.
 % L2,  L4,     L6,     L10,    L15 # name
 % int, smallint,       bigint, bigint, bigint # type
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to