Changeset: f31f83a403df for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f31f83a403df Modified Files: sql/server/rel_select.c sql/server/rel_unnest.c sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 Branch: default Log Message:
Test approval and fixed identation diffs (truncated from 413 to 300 lines): 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 @@ -2916,7 +2916,7 @@ rel_binop_(mvc *sql, sql_rel *rel, sql_e } if (l && r) return exp_binop(sql->sa, l, r, f); - + /* reset error */ sql->session->status = 0; sql->errstr[0] = '\0'; @@ -2955,7 +2955,7 @@ rel_binop_(mvc *sql, sql_rel *rel, sql_e l = ol; r = or; - } + } } /* try finding function based on both arguments */ if (rel_convert_types(sql, rel, rel, &l, &r, 1/*fix scale*/, type_equal) >= 0){ @@ -3406,7 +3406,7 @@ static sql_exp * if (list_length(exps) != 2 || (!EC_NUMBER(t1->type->eclass) || !a || is_group_concat || subtype_cmp( &((sql_arg*)a->aggr->ops->h->data)->type, &((sql_arg*)a->aggr->ops->h->next->data)->type) != 0) ) { - if(!a && is_group_concat) { + if (!a && is_group_concat) { sql_subtype *tstr = sql_bind_localtype("str"); list *sargs = sa_list(sql->sa); if (list_length(exps) >= 1) @@ -3947,7 +3947,7 @@ rel_groupings(sql_query *query, sql_rel list *exps = new_exp_list(sql->sa); if (THRhighwater()) - return sql_error(sql, 10, SQLSTATE(42000) "SELECT: too many nested grouping clauses"); + 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) { symbol *grouping = o->data.sym; @@ -4258,7 +4258,7 @@ rel_order_by(sql_query *query, sql_rel * static int generate_window_bound(tokens sql_token, bool first_half) { - switch(sql_token) { + switch (sql_token) { case SQL_PRECEDING: return first_half ? BOUND_FIRST_HALF_PRECEDING : BOUND_SECOND_HALF_PRECEDING; case SQL_FOLLOWING: @@ -4280,7 +4280,7 @@ generate_window_bound_call(mvc *sql, sql sql_subfunc *dc1, *dc2; sql_subtype *it = sql_bind_localtype("int"); - if(pe) { + if (pe) { append(targs1, exp_subtype(pe)); append(targs2, exp_subtype(pe)); append(rargs1, exp_copy(sql, pe)); @@ -4325,18 +4325,18 @@ calculate_window_bound(sql_query *query, sql_class bclass = EC_ANY; sql_exp *res = NULL; - if((bound->token == SQL_PRECEDING || bound->token == SQL_FOLLOWING || bound->token == SQL_CURRENT_ROW) && bound->type == type_int) { + if ((bound->token == SQL_PRECEDING || bound->token == SQL_FOLLOWING || bound->token == SQL_CURRENT_ROW) && bound->type == type_int) { atom *a = NULL; bt = (frame_type == FRAME_ROWS || frame_type == FRAME_GROUPS) ? lon : exp_subtype(ie); bclass = bt->type->eclass; - if((bound->data.i_val == UNBOUNDED_PRECEDING_BOUND || bound->data.i_val == UNBOUNDED_FOLLOWING_BOUND)) { - if(EC_NUMBER(bclass)) + if ((bound->data.i_val == UNBOUNDED_PRECEDING_BOUND || bound->data.i_val == UNBOUNDED_FOLLOWING_BOUND)) { + if (EC_NUMBER(bclass)) a = atom_general(sql->sa, bt, NULL); else a = atom_general(sql->sa, it, NULL); - } else if(bound->data.i_val == CURRENT_ROW_BOUND) { - if(EC_NUMBER(bclass)) + } else if (bound->data.i_val == CURRENT_ROW_BOUND) { + if (EC_NUMBER(bclass)) a = atom_zero_value(sql->sa, bt); else a = atom_zero_value(sql->sa, it); @@ -4358,32 +4358,32 @@ calculate_window_bound(sql_query *query, return sql_error(sql, 02, SQLSTATE(42000) "%s offset must not be NULL", bound_desc); } res = rel_value_exp2(query, &p, bound, f, ek, &is_last); - if(!res) + if (!res) return NULL; bt = exp_subtype(res); - if(bt) + if (bt) bclass = bt->type->eclass; - if(!bt || !(bclass == EC_NUM || EC_INTERVAL(bclass) || bclass == EC_DEC || bclass == EC_FLT)) + if (!bt || !(bclass == EC_NUM || EC_INTERVAL(bclass) || bclass == EC_DEC || bclass == EC_FLT)) return sql_error(sql, 02, SQLSTATE(42000) "%s offset must be of a countable SQL type", bound_desc); - if((frame_type == FRAME_ROWS || frame_type == FRAME_GROUPS) && bclass != EC_NUM) { + if ((frame_type == FRAME_ROWS || frame_type == FRAME_GROUPS) && bclass != EC_NUM) { char *err = subtype2string(bt); - if(!err) + if (!err) return sql_error(sql, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL); (void) sql_error(sql, 02, SQLSTATE(42000) "Values on %s boundary on %s frame can't be %s type", bound_desc, (frame_type == FRAME_ROWS) ? "rows":"groups", err); _DELETE(err); return NULL; } - if(frame_type == FRAME_RANGE) { - if(bclass == EC_FLT && iet->type->eclass != EC_FLT) + if (frame_type == FRAME_RANGE) { + if (bclass == EC_FLT && iet->type->eclass != EC_FLT) return sql_error(sql, 02, SQLSTATE(42000) "Values in input aren't floating-point while on %s boundary are", bound_desc); - if(bclass != EC_FLT && iet->type->eclass == EC_FLT) + if (bclass != EC_FLT && iet->type->eclass == EC_FLT) return sql_error(sql, 02, SQLSTATE(42000) "Values on %s boundary aren't floating-point while on input are", bound_desc); - if(bclass == EC_DEC && iet->type->eclass != EC_DEC) + if (bclass == EC_DEC && iet->type->eclass != EC_DEC) return sql_error(sql, 02, SQLSTATE(42000) "Values in input aren't decimals while on %s boundary are", bound_desc); - if(bclass != EC_DEC && iet->type->eclass == EC_DEC) + if (bclass != EC_DEC && iet->type->eclass == EC_DEC) return sql_error(sql, 02, SQLSTATE(42000) "Values on %s boundary aren't decimals while on input are", bound_desc); - if(bclass != EC_SEC && iet->type->eclass == EC_TIME) { + if (bclass != EC_SEC && iet->type->eclass == EC_TIME) { char *err = subtype2string(iet); if(!err) return sql_error(sql, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL); @@ -4391,9 +4391,9 @@ calculate_window_bound(sql_query *query, _DELETE(err); return NULL; } - if(EC_INTERVAL(bclass) && !EC_TEMP(iet->type->eclass)) { + if (EC_INTERVAL(bclass) && !EC_TEMP(iet->type->eclass)) { char *err = subtype2string(iet); - if(!err) + if (!err) return sql_error(sql, 02, SQLSTATE(HY001) MAL_MALLOC_FAIL); (void) sql_error(sql, 02, SQLSTATE(42000) "For %s input the %s boundary must be an interval type", err, bound_desc); _DELETE(err); @@ -4414,32 +4414,32 @@ get_window_clauses(mvc *sql, char* ident if (THRhighwater()) return sql_error(sql, 10, SQLSTATE(42000) "Query too complex: running out of stack space"); - if((window_specification = stack_get_window_def(sql, ident, &pos)) == NULL) + if ((window_specification = stack_get_window_def(sql, ident, &pos)) == NULL) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: window '%s' not found", ident); //avoid infinite lookups - if(stack_check_var_visited(sql, pos)) + if (stack_check_var_visited(sql, pos)) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: cyclic references to window '%s' found", ident); stack_set_var_visited(sql, pos); - if(window_specification->h->next->data.sym) { - if(*partition_by_clause) + if (window_specification->h->next->data.sym) { + if (*partition_by_clause) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: redefinition of PARTITION BY clause from window '%s'", ident); *partition_by_clause = window_specification->h->next->data.sym; } - if(window_specification->h->next->next->data.sym) { - if(*order_by_clause) + if (window_specification->h->next->next->data.sym) { + if (*order_by_clause) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: redefinition of ORDER BY clause from window '%s'", ident); *order_by_clause = window_specification->h->next->next->data.sym; } - if(window_specification->h->next->next->next->data.sym) { - if(*frame_clause) + if (window_specification->h->next->next->next->data.sym) { + if (*frame_clause) return sql_error(sql, 02, SQLSTATE(42000) "SELECT: redefinition of frame clause from window '%s'", ident); *frame_clause = window_specification->h->next->next->next->data.sym; } window_ident = window_specification->h->data.sval; - if(window_ident && !get_window_clauses(sql, window_ident, partition_by_clause, order_by_clause, frame_clause)) + if (window_ident && !get_window_clauses(sql, window_ident, partition_by_clause, order_by_clause, frame_clause)) return NULL; //the error was already set return window_specification; //return something to say there were no errors @@ -4833,7 +4833,7 @@ rel_value_exp2(sql_query *query, sql_rel return NULL; if (exp) { sql_exp *res; - + if (!exp_name(exp)) exp_label(sql->sa, exp, ++sql->label); res = exp_ref(sql->sa, exp); @@ -4976,7 +4976,7 @@ column_exp(sql_query *query, sql_rel **r if (f == sql_sel && rel && *rel && (*rel)->card < CARD_AGGR) ek.card = card_value; - ve = rel_value_exp(query, rel, l->h->data.sym, f, ek); + ve = rel_value_exp(query, rel, l->h->data.sym, f, ek); if (!ve) return NULL; /* AS name */ @@ -5309,7 +5309,7 @@ rel_unique_names(mvc *sql, sql_rel *rel) if (!is_project(rel->op)) return rel; - l = sa_list(sql->sa); + l = sa_list(sql->sa); for (n = rel->exps->h; n; n = n->next) { sql_exp *e = n->data; @@ -5653,7 +5653,7 @@ rel_crossquery(sql_query *query, sql_rel symbol *tab2 = n->next->data.sym; sql_rel *t1 = table_ref(query, rel, tab1, 0); sql_rel *t2 = NULL; - + if (t1) t2 = table_ref(query, rel, tab2, 0); if (!t1 || !t2) @@ -5676,7 +5676,7 @@ rel_unionjoinquery(sql_query *query, sql int found = 0; if (lv) - rv = table_ref(query, rel, n->next->next->data.sym, 0); + rv = table_ref(query, rel, n->next->next->data.sym, 0); assert(n->next->type == type_int); if (!lv || !rv) return NULL; diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c --- a/sql/server/rel_unnest.c +++ b/sql/server/rel_unnest.c @@ -2566,16 +2566,16 @@ rel_unnest(mvc *sql, sql_rel *rel) rel = rel_visitor(sql, rel, &rewrite_or_exp); rel = rel_exp_visitor(sql, rel, &rewrite_rank); rel = rel_exp_visitor(sql, rel, &rewrite_anyequal); - rel = rel_visitor(sql, rel, &rewrite_join2semi); /* where possible convert anyequal functions into marks */ + rel = rel_visitor(sql, rel, &rewrite_join2semi); /* where possible convert anyequal functions into marks */ rel = rel_exp_visitor(sql, rel, &rewrite_compare); rel = rel_exp_visitor(sql, rel, &rewrite_exists); - rel = rel_exp_visitor(sql, rel, &rewrite_ifthenelse); /* add isnull handling */ + rel = rel_exp_visitor(sql, rel, &rewrite_ifthenelse); /* add isnull handling */ rel = rel_exp_visitor(sql, rel, &rewrite_exp_rel); - rel = rel_visitor(sql, rel, &rewrite_compare_exp); /* only allow for e_cmp in selects and handling */ + rel = rel_visitor(sql, rel, &rewrite_compare_exp); /* only allow for e_cmp in selects and handling */ rel = rel_visitor(sql, rel, &rewrite_empty_project); rel = _rel_unnest(sql, rel); rel = rel_visitor(sql, rel, &rewrite_fix_count); /* fix count inside a left join (adds a project (if (cnt IS null) then (0) else (cnt)) */ rel = rel_visitor(sql, rel, &rewrite_remove_xp); /* remove crossproducts with project [ atom ] */ - rel = rel_visitor(sql, rel, &rewrite_groupings); + rel = rel_visitor(sql, rel, &rewrite_groupings); /* transform group combinations into union of group relations */ return rel; } diff --git a/sql/test/emptydb/Tests/check.stable.out b/sql/test/emptydb/Tests/check.stable.out --- a/sql/test/emptydb/Tests/check.stable.out +++ b/sql/test/emptydb/Tests/check.stable.out @@ -557,6 +557,7 @@ SYSTEM FUNCTION sys.getroboturl SYSTEM FUNCTION sys.getuser SYSTEM FUNCTION sys.greatest SYSTEM AGGREGATE sys.group_concat +SYSTEM AGGREGATE sys.grouping SYSTEM FUNCTION sys.has_m SYSTEM FUNCTION sys.has_z SYSTEM FUNCTION sys.hash @@ -2438,6 +2439,11 @@ drop function pcre_replace(string, strin [ "sys", "greatest", "SYSTEM", "max_no_nil", "calc", "Internal C", "Scalar function", false, false, false, "res_0", "any", 0, 0, "out", "arg_1", "any", 0, 0, "in", "arg_2", "any", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "group_concat", "SYSTEM", "create aggregate sys.group_concat(str string) returns string external name \"aggr\".\"str_group_concat\";", "aggr", "MAL", "Aggregate function", false, false, false, "result", "clob", 0, 0, "out", "str", "clob", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "group_concat", "SYSTEM", "create aggregate sys.group_concat(str string, sep string) returns string external name \"aggr\".\"str_group_concat\";", "aggr", "MAL", "Aggregate function", false, false, false, "result", "clob", 0, 0, "out", "str", "clob", 0, 0, "in", "sep", "clob", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "grouping", "SYSTEM", "grouping", "sql", "Internal C", "Aggregate function", false, false, false, "res", "bigint", 64, 0, "out", "arg", "any", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "grouping", "SYSTEM", "grouping", "sql", "Internal C", "Aggregate function", false, false, false, "res", "hugeint", 128, 0, "out", "arg", "any", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "grouping", "SYSTEM", "grouping", "sql", "Internal C", "Aggregate function", false, false, false, "res", "int", 32, 0, "out", "arg", "any", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "grouping", "SYSTEM", "grouping", "sql", "Internal C", "Aggregate function", false, false, false, "res", "smallint", 16, 0, "out", "arg", "any", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] +[ "sys", "grouping", "SYSTEM", "grouping", "sql", "Internal C", "Aggregate function", false, false, false, "res", "tinyint", 8, 0, "out", "arg", "any", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "has_m", "SYSTEM", "create function has_m(info integer) returns integer external name geom.\"hasM\";", "geom", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "info", "int", 32, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "has_z", "SYSTEM", "create function has_z(info integer) returns integer external name geom.\"hasZ\";", "geom", "MAL", "Scalar function", false, false, false, "result", "int", 32, 0, "out", "info", "int", 32, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] [ "sys", "hash", "SYSTEM", "hash", "mkey", "Internal C", "Scalar function", false, false, false, "res_0", "bigint", 64, 0, "out", "arg_1", "any", 0, 0, "in", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ] @@ -5290,6 +5296,7 @@ drop function pcre_replace(string, strin [ "CORRESPONDING" ] [ "CREATE" ] [ "CROSS" ] +[ "CUBE" ] [ "CURRENT" ] [ "CURRENT_DATE" ] [ "CURRENT_ROLE" ] @@ -5332,6 +5339,7 @@ drop function pcre_replace(string, strin [ "GLOBAL" ] [ "GRANT" ] [ "GROUP" ] +[ "GROUPING" ] [ "HAVING" ] [ "HOUR" ] [ "HUGEINT" ] @@ -5408,6 +5416,7 @@ drop function pcre_replace(string, strin [ "REVOKE" ] [ "RIGHT" ] [ "ROLLBACK" ] +[ "ROLLUP" ] [ "ROWS" ] [ "SAMPLE" ] [ "SAVEPOINT" ] @@ -5418,6 +5427,7 @@ drop function pcre_replace(string, strin [ "SERIALIZABLE" ] [ "SESSION_USER" ] [ "SET" ] +[ "SETS" ] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list