Changeset: ccf1d4d1828a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ccf1d4d1828a
Modified Files:
sql/server/rel_rewriter.c
sql/server/rel_rewriter.h
sql/test/BugTracker-2023/Tests/misc-crashes-7390.test
Branch: reducedstack
Log Message:
only run test when hugeint is there
cleanup multi -(-(x)) cases in rewriter.
diffs (50 lines):
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
@@ -197,6 +197,24 @@ rewrite_simplify_exp(visitor *v, sql_rel
return ie;
}
}
+ if (is_func(e->type) && list_length(e->l) == 1 && is_neg_func(sf)) {
+ list *args = e->l;
+ sql_exp *ie = args->h->data;
+
+ if (!ie)
+ return e;
+
+ sql_subfunc *sf = ie->f;
+ if (is_func(ie->type) && list_length(ie->l) == 1 &&
is_neg_func(sf)) {
+ args = ie->l;
+
+ ie = args->h->data;
+ if (exp_name(e))
+ exp_prop_alias(v->sql->sa, ie, e);
+ v->changes++;
+ return ie;
+ }
+ }
if (is_compare(e->type) && e->flag == cmp_equal && !is_semantics(e)) {
/* predicate_func = TRUE */
sql_exp *l = e->l, *r = e->r;
if (is_func(l->type) && exp_is_true(r) &&
(is_anyequal_func(((sql_subfunc*)l->f)) ||
is_exists_func(((sql_subfunc*)l->f))))
diff --git a/sql/server/rel_rewriter.h b/sql/server/rel_rewriter.h
--- a/sql/server/rel_rewriter.h
+++ b/sql/server/rel_rewriter.h
@@ -26,6 +26,7 @@
strcmp((sf)->func->base.name, "nullif") == 0)
#define is_case_func(sf) (strcmp((sf)->func->base.name, "case") == 0)
#define is_casewhen_func(sf) (strcmp((sf)->func->base.name, "casewhen") == 0)
+#define is_neg_func(sf) (!(sf)->func->s && strcmp((sf)->func->base.name,
"sql_neg") == 0)
extern sql_exp *rewrite_simplify_exp(visitor *v, sql_rel *rel, sql_exp *e, int
depth);
extern sql_rel *rewrite_simplify(visitor *v, uint8_t cycle, bool
value_based_opt, sql_rel *rel);
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
@@ -457,6 +457,7 @@ statement ok
DROP TABLE v0
-- 31.sql
+onlyif has-hugeint
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 )
----
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]