Changeset: 05634058c6e2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=05634058c6e2
Modified Files:
        sql/server/rel_select.c
        sql/test/BugTracker-2015/Tests/and_or_expression.Bug-3851.stable.out
Branch: Jul2015
Log Message:

fixed bug 3851, ie handle complex combinations of boolean values


diffs (28 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
@@ -2673,7 +2673,9 @@ rel_or(mvc *sql, sql_rel *l, sql_rel *r,
                return l;
        }
 
-       if (l->op == r->op && ll == rl && l->r == r->r) {
+       if (l->op == r->op && 
+               ((ll == rl && l->r == r->r) ||
+               (exps_card(l->exps) == exps_card(r->exps) && exps_card(l->exps) 
<= CARD_ATOM))) {
                sql_exp *e = exp_or(sql->sa, l->exps, r->exps);
                list *nl = new_exp_list(sql->sa); 
                
diff --git 
a/sql/test/BugTracker-2015/Tests/and_or_expression.Bug-3851.stable.out 
b/sql/test/BugTracker-2015/Tests/and_or_expression.Bug-3851.stable.out
--- a/sql/test/BugTracker-2015/Tests/and_or_expression.Bug-3851.stable.out
+++ b/sql/test/BugTracker-2015/Tests/and_or_expression.Bug-3851.stable.out
@@ -65,8 +65,8 @@ Ready.
 #CREATE TABLE test (pid INTEGER);
 #INSERT INTO test VALUES (1);
 [ 1    ]
-#SELECT t.pid FROM test t WHERE FALSE AND (FALSE OR TRUE) AND (FALSE OR TRUE) 
AND ( (FALSE AND (FALSE OR FALSE)) OR TRUE );
-% .t # table_name
+#SELECT t.pid FROM test t WHERE FALSE AND (FALSE OR TRUE) AND ( (FALSE AND 
(FALSE OR FALSE)) OR TRUE );
+% sys.t # table_name
 % pid # name
 % int # type
 % 1 # length
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to