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