Changeset: bea33ccbab2e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bea33ccbab2e
Modified Files:
sql/backends/monet5/rel_bin.c
sql/server/rel_exp.c
sql/server/rel_partition.c
sql/server/rel_propagate.c
sql/server/rel_psm.c
sql/server/rel_select.c
sql/server/sql_partition.c
Branch: Jan2022
Log Message:
Use faster mvc_highwater call for stack overflows
diffs (237 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -1110,7 +1110,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
mvc *sql = be->mvc;
stmt *s = NULL;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(be->mvc, 10, SQLSTATE(42000) "Query too
complex: running out of stack space");
if (!e) {
@@ -1868,7 +1868,7 @@ exp2bin_args(backend *be, sql_exp *e, li
{
mvc *sql = be->mvc;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (!e || !args)
@@ -1948,7 +1948,7 @@ exps2bin_args(backend *be, list *exps, l
static list *
rel2bin_args(backend *be, sql_rel *rel, list *args)
{
- if (THRhighwater())
+ if (mvc_highwater(be->mvc))
return sql_error(be->mvc, 10, SQLSTATE(42000) "Query too
complex: running out of stack space");
if (!rel || !args)
@@ -5601,7 +5601,7 @@ check_for_foreign_key_references(mvc *sq
sql_trans *tr = sql->session->tr;
sqlstore *store = sql->session->tr->store;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (t->keys) { /* Check for foreign key references */
@@ -6292,7 +6292,7 @@ subrel_bin(backend *be, sql_rel *rel, li
mvc *sql = be->mvc;
stmt *s = NULL;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(be->mvc, 10, SQLSTATE(42000) "Query too
complex: running out of stack space");
if (!rel)
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -2729,7 +2729,7 @@ exps_copy(mvc *sql, list *exps)
{
list *nl;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (!exps)
@@ -2751,7 +2751,7 @@ exp_copy(mvc *sql, sql_exp * e)
{
sql_exp *l, *r, *r2, *ne = NULL;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (!e)
@@ -3180,7 +3180,7 @@ exp_values_set_supertype(mvc *sql, sql_e
static int
exp_set_list_recurse(mvc *sql, sql_subtype *type, sql_exp *e, const char
**relname, const char** expname)
{
- if (THRhighwater()) {
+ if (mvc_highwater(sql)) {
(void) sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
return -1;
}
@@ -3219,7 +3219,7 @@ exp_set_list_recurse(mvc *sql, sql_subty
static int
exp_set_type_recurse(mvc *sql, sql_subtype *type, sql_exp *e, const char
**relname, const char** expname)
{
- if (THRhighwater()) {
+ if (mvc_highwater(sql)) {
(void) sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
return -1;
}
@@ -3311,7 +3311,7 @@ exp_set_type_recurse(mvc *sql, sql_subty
int
rel_set_type_recurse(mvc *sql, sql_subtype *type, sql_rel *rel, const char
**relname, const char **expname)
{
- if (THRhighwater()) {
+ if (mvc_highwater(sql)) {
(void) sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
return -1;
}
diff --git a/sql/server/rel_partition.c b/sql/server/rel_partition.c
--- a/sql/server/rel_partition.c
+++ b/sql/server/rel_partition.c
@@ -39,7 +39,7 @@ rel_getcount(mvc *sql, sql_rel *rel)
static void
find_basetables(mvc *sql, sql_rel *rel, list *tables )
{
- if (THRhighwater()) {
+ if (mvc_highwater(sql)) {
(void) sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
return;
}
@@ -157,7 +157,7 @@ has_groupby(sql_rel *rel)
sql_rel *
rel_partition(mvc *sql, sql_rel *rel)
{
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (is_basetable(rel->op)) {
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -446,7 +446,7 @@ static sql_rel* rel_change_base_table(mv
static sql_exp*
exp_change_column_table(mvc *sql, sql_exp *e, sql_table* oldt, sql_table* newt)
{
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (!e)
@@ -522,7 +522,7 @@ exp_change_column_table(mvc *sql, sql_ex
static sql_rel*
rel_change_base_table(mvc* sql, sql_rel* rel, sql_table* oldt, sql_table* newt)
{
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (!rel)
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -619,7 +619,7 @@ sequential_block(sql_query *query, sql_s
assert(!restype || !restypelist);
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (blk->h)
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
@@ -33,7 +33,7 @@ rel_table_projections( mvc *sql, sql_rel
{
list *exps;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (!rel)
@@ -2207,7 +2207,7 @@ rel_logical_value_exp(sql_query *query,
if (!sc)
return NULL;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
switch (sc->token) {
@@ -2480,7 +2480,7 @@ rel_logical_exp(sql_query *query, sql_re
if (!sc)
return NULL;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
switch (sc->token) {
@@ -4252,7 +4252,7 @@ rel_groupings(sql_query *query, sql_rel
mvc *sql = query->sql;
list *exps = new_exp_list(sql->sa);
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
for (dnode *o = groupby->data.lval->h; o; o = o->next) {
@@ -4671,7 +4671,7 @@ get_window_clauses(mvc *sql, char* ident
char *window_ident;
int pos;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if ((window_specification = frame_get_window_def(sql, ident, &pos)) ==
NULL)
@@ -5067,7 +5067,7 @@ rel_value_exp2(sql_query *query, sql_rel
if (!se)
return NULL;
- if (THRhighwater())
+ if (mvc_highwater(sql))
return sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
if (rel && *rel && (*rel)->card == CARD_AGGR) { /* group by expression
case, handle it before */
@@ -5229,7 +5229,7 @@ rel_value_exp(sql_query *query, sql_rel
if (se->token == SQL_SELECT)
sn = (SelectNode*)se;
- if (THRhighwater())
+ if (mvc_highwater(query->sql))
return sql_error(query->sql, 10, SQLSTATE(42000) "Query too
complex: running out of stack space");
e = rel_value_exp2(query, rel, se, f, ek);
diff --git a/sql/server/sql_partition.c b/sql/server/sql_partition.c
--- a/sql/server/sql_partition.c
+++ b/sql/server/sql_partition.c
@@ -104,7 +104,7 @@ static void exp_find_table_columns(mvc *
static void
rel_find_table_columns(mvc* sql, sql_rel* rel, sql_table *t, list *cols)
{
- if (THRhighwater()) {
+ if (mvc_highwater(sql)) {
(void) sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
return;
}
@@ -172,7 +172,7 @@ rel_find_table_columns(mvc* sql, sql_rel
static void
exp_find_table_columns(mvc *sql, sql_exp *e, sql_table *t, list *cols)
{
- if (THRhighwater()) {
+ if (mvc_highwater(sql)) {
(void) sql_error(sql, 10, SQLSTATE(42000) "Query too complex:
running out of stack space");
return;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list