Changeset: 9dcbf27447f4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9dcbf27447f4
Modified Files:
sql/server/rel_rel.c
Branch: default
Log Message:
Stack overflow checks
diffs (46 lines):
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -1801,6 +1801,9 @@ exps_exps_exp_visitor(mvc *sql, sql_rel
static sql_exp *
exp_visitor(mvc *sql, sql_rel *rel, sql_exp *e, int depth, exp_rewrite_fptr
exp_rewriter)
{
+ if (THRhighwater())
+ return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
+
assert(e);
switch(e->type) {
case e_column:
@@ -1883,6 +1886,9 @@ exps_exp_visitor(mvc *sql, sql_rel *rel,
sql_rel *
rel_exp_visitor(mvc *sql, sql_rel *rel, exp_rewrite_fptr exp_rewriter)
{
+ if (THRhighwater())
+ return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
+
if (!rel)
return rel;
@@ -1952,6 +1958,9 @@ static list *exps_rel_visitor(mvc *sql,
static sql_exp *
exp_rel_visitor(mvc *sql, sql_exp *e, rel_rewrite_fptr rel_rewriter, int
*changes, bool topdown)
{
+ if (THRhighwater())
+ return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
+
assert(e);
switch(e->type) {
case e_column:
@@ -2044,8 +2053,12 @@ do_rel_visitor(mvc *sql, sql_rel *rel, r
static inline sql_rel *
rel_visitor(mvc *sql, sql_rel *rel, rel_rewrite_fptr rel_rewriter, int
*changes, bool topdown)
{
+ if (THRhighwater())
+ return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
+
if (!rel)
return rel;
+
if (topdown) {
if (!(rel = do_rel_visitor(sql, rel, rel_rewriter, changes,
true)))
return rel;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list