Changeset: b7a89741dabf for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b7a89741dabf
Modified Files:
sql/server/rel_optimize_exps.c
Branch: default
Log Message:
Fixes failing test because isnotnull() case was not handled
diffs (36 lines):
diff --git a/sql/server/rel_optimize_exps.c b/sql/server/rel_optimize_exps.c
--- a/sql/server/rel_optimize_exps.c
+++ b/sql/server/rel_optimize_exps.c
@@ -489,8 +489,15 @@ simplify_isnull_isnotnull_equals_bool(vi
}
v->changes++;
} else {
- /* case isnull/isnotnull(x) = TRUE/FALSE => x =/<> NULL
*/
- int flag = a->data.val.bval;
+ /* case isnull(x) = TRUE => x = NULL */
+ /* case isnull(x) != TRUE => x != NULL */
+ /* case isnull(x) = FALSE => x != NULL <-- op switch */
+ /* case isnull(x) != FALSE => x = NULL <-- op switch */
+ /* case isnotnull(x) = TRUE => x != NULL <-- op
switch */
+ /* case isnotnull(x) != TRUE => x = NULL <-- op
switch */
+ /* case isnotnull(x) = FALSE => x = NULL */
+ /* case isnotnull(x) != FALSE => x != NULL */
+ bool bval = a->data.val.bval;
assert(list_length(args) == 1);
@@ -498,9 +505,12 @@ simplify_isnull_isnotnull_equals_bool(vi
if (exp_subtype(l)->type) {
r = exp_atom(v->sql->sa,
atom_general(v->sql->sa, exp_subtype(l), NULL, 0));
e = exp_compare(v->sql->sa, l, r, e->flag);
- if (e && !flag)
- if (is_isnull_func(f))
+ if (e) {
+ if (bval == false && is_isnull_func(f))
set_anti(e);
+ if (bval == true &&
is_isnotnull_func(f))
+ set_anti(e);
+ }
if (e)
set_semantics(e);
v->changes++;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]