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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to