Changeset: b165c80af1f8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b165c80af1f8
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        monetdb5/modules/mal/wlc.mal
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sqlcatalog.mal
        sql/backends/monet5/wlr.mal
        sql/scripts/22_clients.sql
        sql/server/rel_propagate.c
        sql/server/rel_psm.c
        sql/server/rel_rel.h
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/test/BugTracker-2015/Tests/window_function_crash.Bug-3861.stable.err
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/subquery/Tests/subquery3.sql
        sql/test/subquery/Tests/subquery3.stable.err
        sql/test/subquery/Tests/subquery4.sql
        sql/test/subquery/Tests/subquery4.stable.err
        sql/test/subquery/Tests/subquery4.stable.out
Branch: default
Log Message:

Merged with linear-hashing


diffs (truncated from 840 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -11572,6 +11572,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(sname:str, mtnme:str, psnme:str, 
ptnme:str, nills:int, update:int):void ",        
"SQLalter_add_value_partition;",        "Catalog operation 
alter_add_value_partition"   ]
 [ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(sname:str, mtnme:str, psnme:str, 
ptnme:str, nills:int, update:int, arg:any...):void ",    
"SQLalter_add_value_partition;",        "Catalog operation 
alter_add_value_partition"   ]
 [ "sqlcatalog",        "alter_del_table",      "pattern 
sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_del_table;",  "Catalog operation 
alter_del_table"     ]
+[ "sqlcatalog",        "alter_seq",    "pattern 
sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:bat[:lng]):void ",   
"SQLalter_seq;",        "Catalog operation alter_seq"   ]
 [ "sqlcatalog",        "alter_seq",    "pattern 
sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:lng):void ", 
"SQLalter_seq;",        "Catalog operation alter_seq"   ]
 [ "sqlcatalog",        "alter_set_table",      "pattern 
sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ",    
"SQLalter_set_table;",  "Catalog operation alter_set_table"     ]
 [ "sqlcatalog",        "alter_table",  "pattern 
sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ",      
"SQLalter_table;",      "Catalog operation alter_table" ]
@@ -11789,6 +11790,7 @@ stdout of test 'MAL-signatures` in direc
 [ "wlc",       "alter_add_value_partition",    "pattern 
wlc.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int):void ",       "WLCgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlc",       "alter_add_value_partition",    "pattern 
wlc.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int, arg:str...):void ",   "WLCgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlc",       "alter_del_table",      "pattern wlc.alter_del_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLCgeneric;",  
"Catalog operation alter_del_table"     ]
+[ "wlc",       "alter_seq",    "pattern wlc.alter_seq(sname:str, seqname:str, 
seq:ptr, val:bat[:lng]):void ",  "WLCgeneric;",  "Catalog operation alter_seq"  
 ]
 [ "wlc",       "alter_seq",    "pattern wlc.alter_seq(sname:str, seqname:str, 
val:lng):void ", "WLCgeneric;",  "Catalog operation alter_seq"   ]
 [ "wlc",       "alter_set_table",      "pattern wlc.alter_set_table(sname:str, 
tnme:str, access:int):void ",   "WLCgeneric;",  "Catalog operation 
alter_set_table"     ]
 [ "wlc",       "alter_table",  "pattern wlc.alter_table(sname:str, tname:str, 
action:int):void ",      "WLCgeneric;",  "Catalog operation alter_table" ]
@@ -11858,6 +11860,7 @@ stdout of test 'MAL-signatures` in direc
 [ "wlr",       "alter_add_value_partition",    "pattern 
wlr.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int):void ",       "WLRgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlr",       "alter_add_value_partition",    "pattern 
wlr.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int, arg:str...):void ",   "WLRgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlr",       "alter_del_table",      "pattern wlr.alter_del_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLRgeneric;",  
"Catalog operation alter_del_table"     ]
+[ "wlr",       "alter_seq",    "pattern wlr.alter_seq(sname:str, seqname:str, 
seq:ptr, val:bat[:lng]):void ",  "WLRgeneric;",  "Catalog operation alter_seq"  
 ]
 [ "wlr",       "alter_seq",    "pattern wlr.alter_seq(sname:str, seqname:str, 
val:lng):void ", "WLRgeneric;",  "Catalog operation alter_seq"   ]
 [ "wlr",       "alter_set_table",      "pattern wlr.alter_set_table(sname:str, 
tnme:str, access:int):void ",   "WLRgeneric;",  "Catalog operation 
alter_set_table"     ]
 [ "wlr",       "alter_table",  "pattern wlr.alter_table(sname:str, tname:str, 
action:int):void ",      "WLRgeneric;",  "Catalog operation alter_table" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -16016,6 +16016,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(sname:str, mtnme:str, psnme:str, 
ptnme:str, nills:int, update:int):void ",        
"SQLalter_add_value_partition;",        "Catalog operation 
alter_add_value_partition"   ]
 [ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(sname:str, mtnme:str, psnme:str, 
ptnme:str, nills:int, update:int, arg:any...):void ",    
"SQLalter_add_value_partition;",        "Catalog operation 
alter_add_value_partition"   ]
 [ "sqlcatalog",        "alter_del_table",      "pattern 
sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_del_table;",  "Catalog operation 
alter_del_table"     ]
+[ "sqlcatalog",        "alter_seq",    "pattern 
sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:bat[:lng]):void ",   
"SQLalter_seq;",        "Catalog operation alter_seq"   ]
 [ "sqlcatalog",        "alter_seq",    "pattern 
sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:lng):void ", 
"SQLalter_seq;",        "Catalog operation alter_seq"   ]
 [ "sqlcatalog",        "alter_set_table",      "pattern 
sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ",    
"SQLalter_set_table;",  "Catalog operation alter_set_table"     ]
 [ "sqlcatalog",        "alter_table",  "pattern 
sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ",      
"SQLalter_table;",      "Catalog operation alter_table" ]
@@ -16234,6 +16235,7 @@ stdout of test 'MAL-signatures` in direc
 [ "wlc",       "alter_add_value_partition",    "pattern 
wlc.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int):void ",       "WLCgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlc",       "alter_add_value_partition",    "pattern 
wlc.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int, arg:str...):void ",   "WLCgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlc",       "alter_del_table",      "pattern wlc.alter_del_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLCgeneric;",  
"Catalog operation alter_del_table"     ]
+[ "wlc",       "alter_seq",    "pattern wlc.alter_seq(sname:str, seqname:str, 
seq:ptr, val:bat[:lng]):void ",  "WLCgeneric;",  "Catalog operation alter_seq"  
 ]
 [ "wlc",       "alter_seq",    "pattern wlc.alter_seq(sname:str, seqname:str, 
val:lng):void ", "WLCgeneric;",  "Catalog operation alter_seq"   ]
 [ "wlc",       "alter_set_table",      "pattern wlc.alter_set_table(sname:str, 
tnme:str, access:int):void ",   "WLCgeneric;",  "Catalog operation 
alter_set_table"     ]
 [ "wlc",       "alter_table",  "pattern wlc.alter_table(sname:str, tname:str, 
action:int):void ",      "WLCgeneric;",  "Catalog operation alter_table" ]
@@ -16303,6 +16305,7 @@ stdout of test 'MAL-signatures` in direc
 [ "wlr",       "alter_add_value_partition",    "pattern 
wlr.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int):void ",       "WLRgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlr",       "alter_add_value_partition",    "pattern 
wlr.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int, arg:str...):void ",   "WLRgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlr",       "alter_del_table",      "pattern wlr.alter_del_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLRgeneric;",  
"Catalog operation alter_del_table"     ]
+[ "wlr",       "alter_seq",    "pattern wlr.alter_seq(sname:str, seqname:str, 
seq:ptr, val:bat[:lng]):void ",  "WLRgeneric;",  "Catalog operation alter_seq"  
 ]
 [ "wlr",       "alter_seq",    "pattern wlr.alter_seq(sname:str, seqname:str, 
val:lng):void ", "WLRgeneric;",  "Catalog operation alter_seq"   ]
 [ "wlr",       "alter_set_table",      "pattern wlr.alter_set_table(sname:str, 
tnme:str, access:int):void ",   "WLRgeneric;",  "Catalog operation 
alter_set_table"     ]
 [ "wlr",       "alter_table",  "pattern wlr.alter_table(sname:str, tname:str, 
action:int):void ",      "WLRgeneric;",  "Catalog operation alter_table" ]
diff --git a/monetdb5/modules/mal/wlc.mal b/monetdb5/modules/mal/wlc.mal
--- a/monetdb5/modules/mal/wlc.mal
+++ b/monetdb5/modules/mal/wlc.mal
@@ -99,6 +99,10 @@ pattern alter_seq( sname:str, seqname:st
 address WLCgeneric
 comment "Catalog operation alter_seq";
 
+pattern alter_seq( sname:str, seqname:str, seq:ptr, val:bat[:lng]) 
+address WLCgeneric 
+comment "Catalog operation alter_seq";
+
 pattern drop_seq( sname:str, nme:str, action:int)
 address WLCgeneric
 comment "Catalog operation drop_seq";
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
@@ -1309,7 +1309,7 @@ rel_parse_value(backend *be, char *query
                if (sn->selection->h->data.sym->token == SQL_COLUMN || 
sn->selection->h->data.sym->token == SQL_IDENT) {
                        sql_rel *rel = NULL;
                        sql_query *query = query_create(m);
-                       sql_exp *e = rel_value_exp2(query, &rel, 
sn->selection->h->data.sym->data.lval->h->data.sym, sql_sel, ek);
+                       sql_exp *e = rel_value_exp2(query, &rel, 
sn->selection->h->data.sym->data.lval->h->data.sym, sql_sel | sql_values, ek);
 
                        if (!rel)
                                s = exp_bin(be, e, NULL, NULL, NULL, NULL, 
NULL, NULL); 
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -975,14 +975,31 @@ SQLalter_seq(Client cntxt, MalBlkPtr mb,
        str seqname = *getArgReference_str(stk, pci, 2); 
        sql_sequence *s = *(sql_sequence **) getArgReference(stk, pci, 3);
        lng *val = NULL;
+       BAT *b = NULL;
 
        initcontext();
        if (getArgType(mb, pci, 4) == TYPE_lng)
                val = getArgReference_lng(stk, pci, 4);
+       else if (isaBatType(getArgType(mb, pci, 4))) {
+               bat *bid = getArgReference_bat(stk, pci, 4);
+
+               if (!(b = BATdescriptor(*bid)))
+                       throw(SQL, "sql.alter_seq", SQLSTATE(HY005) "Cannot 
access column descriptor");
+               if (BATcount(b) != 1) {
+                       BBPunfix(b->batCacheid);
+                       throw(SQL, "sql.alter_seq", SQLSTATE(42000) "Only one 
value allowed to alter a sequence value");        
+               }
+               if (getBatType(getArgType(mb, pci, 4)) == TYPE_lng)
+                       val = (lng*)Tloc(b, 0);
+       }
+
        if (val == NULL || is_lng_nil(*val))
                msg = createException(SQL,"sql.alter_seq", SQLSTATE(42M36) 
"ALTER SEQUENCE: cannot (re)start with NULL");
        else
                msg = alter_seq(sql, sname, seqname, s, val);
+
+       if (b)
+               BBPunfix(b->batCacheid);
        return msg;
 }
 
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -2923,7 +2923,7 @@ stmt_Nop(backend *be, stmt *ops, sql_sub
                return NULL;
        mod = sql_func_mod(f->func);
        fimp = sql_func_imp(f->func);
-       if (o && o->nrcols > 0 && f->func->type != F_LOADER) {
+       if (o && o->nrcols > 0 && f->func->type != F_LOADER && f->func->type != 
F_PROC) {
                sql_subtype *res = f->res->h->data;
                fimp = convertMultiplexFcn(fimp);
                q = NULL;
diff --git a/sql/backends/monet5/sqlcatalog.mal 
b/sql/backends/monet5/sqlcatalog.mal
--- a/sql/backends/monet5/sqlcatalog.mal
+++ b/sql/backends/monet5/sqlcatalog.mal
@@ -15,6 +15,10 @@ pattern alter_seq( sname:str, seqname:st
 address SQLalter_seq 
 comment "Catalog operation alter_seq";
 
+pattern alter_seq( sname:str, seqname:str, seq:ptr, val:bat[:lng]) 
+address SQLalter_seq 
+comment "Catalog operation alter_seq";
+
 pattern drop_seq( sname:str, nme:str, action:int) 
 address SQLdrop_seq 
 comment "Catalog operation drop_seq";
diff --git a/sql/backends/monet5/wlr.mal b/sql/backends/monet5/wlr.mal
--- a/sql/backends/monet5/wlr.mal
+++ b/sql/backends/monet5/wlr.mal
@@ -103,6 +103,10 @@ pattern alter_seq( sname:str, seqname:st
 address WLRgeneric
 comment "Catalog operation alter_seq";
 
+pattern alter_seq( sname:str, seqname:str, seq:ptr, val:bat[:lng]) 
+address WLRgeneric 
+comment "Catalog operation alter_seq";
+
 pattern drop_seq( sname:str, nme:str, action:int)
 address WLRgeneric
 comment "Catalog operation drop_seq";
diff --git a/sql/scripts/22_clients.sql b/sql/scripts/22_clients.sql
--- a/sql/scripts/22_clients.sql
+++ b/sql/scripts/22_clients.sql
@@ -26,15 +26,15 @@ returns table(
 )
 external name sql.sessions;
 create view sys.sessions as select * from sys.sessions();
-/* we won't grant sys.sessions to the public */
+-- we won't grant sys.sessions to the public
 
 -- routines to bring the system down quickly
-create procedure sys.shutdown("delay" tinyint)
+create procedure sys.shutdown(delay tinyint)
        external name sql.shutdown;
-/* we won't grant sys.shutdown to the public */
-create procedure sys.shutdown("delay" tinyint, "force" bool)
+-- we won't grant sys.shutdown to the public
+create procedure sys.shutdown(delay tinyint, force bool)
        external name sql.shutdown;
-/* we won't grant sys.shutdown to the public */
+-- we won't grant sys.shutdown to the public
 
 -- control the query and session time out. 
 -- As of December 2019, the procedures settimeout and setsession are 
deprecated.
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
@@ -160,7 +160,7 @@ generate_partition_limits(sql_query *que
                return exp_atom(sql->sa, amax);
        } else {
                exp_kind ek = {type_value, card_value, FALSE};
-               sql_exp *e = rel_value_exp2(query, r, s, sql_sel, ek);
+       sql_exp *e = rel_value_exp2(query, r, s, sql_sel | sql_values, ek);
 
                if (!e)
                        return NULL;
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
@@ -80,7 +80,7 @@ psm_set_exp(sql_query *query, dnode *n)
                        tpe = stack_find_type(sql, name);
                }
 
-               e = rel_value_exp2(query, &rel, val, sql_sel, ek);
+               e = rel_value_exp2(query, &rel, val, sql_sel | sql_update_set, 
ek);
                if (!e)
                        return NULL;
                if (e->card > CARD_AGGR) {
@@ -154,7 +154,7 @@ rel_psm_call(sql_query * query, symbol *
        exp_kind ek = {type_value, card_none, FALSE};
        sql_rel *rel = NULL;
 
-       res = rel_value_exp(query, &rel, se, sql_sel, ek);
+       res = rel_value_exp(query, &rel, se, sql_sel | psm_call, ek);
        if (!res || rel || ((t=exp_subtype(res)) && t->type))  /* only 
procedures */
                return sql_error(sql, 01, SQLSTATE(42000) "Function calls are 
ignored");
        return res;
diff --git a/sql/server/rel_rel.h b/sql/server/rel_rel.h
--- a/sql/server/rel_rel.h
+++ b/sql/server/rel_rel.h
@@ -13,7 +13,7 @@
 #include "sql_relation.h"
 #include "sql_semantic.h"
 
-#define sql_from         (1 << 0)
+#define sql_from         (1 << 0)  //ORed
 #define sql_where        (1 << 1)
 #define sql_sel          (1 << 2)
 #define sql_having       (1 << 3)
@@ -26,7 +26,8 @@
 #define sql_outer        (1 << 10) //ORed
 #define sql_group_totals (1 << 11) //ORed
 #define sql_update_set   (1 << 12) //ORed
-#define sql_update_where (1 << 13) //ORed
+#define sql_values       (1 << 13) //ORed
+#define psm_call         (1 << 14) //ORed
 
 #define is_sql_from(X)         ((X & sql_from) == sql_from)
 #define is_sql_where(X)        ((X & sql_where) == sql_where)
@@ -41,7 +42,8 @@
 #define is_sql_outer(X)        ((X & sql_outer) == sql_outer)
 #define is_sql_group_totals(X) ((X & sql_group_totals) == sql_group_totals)
 #define is_sql_update_set(X)   ((X & sql_update_set) == sql_update_set)
-#define is_sql_update_where(X) ((X & sql_update_where) == sql_update_where)
+#define is_sql_values(X)       ((X & sql_values) == sql_values)
+#define is_psm_call(X)         ((X & psm_call) == psm_call)
 
 #define is_updateble(rel) \
        (rel->op == op_basetable || \
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
@@ -641,7 +641,7 @@ rel_named_table_function(sql_query *quer
                                        return NULL;
                        } else {
                                for ( ; n; n = n->next) {
-                                       sql_exp *e = rel_value_exp(query, 
&outer, n->data.sym, sql_sel, iek);
+                                       sql_exp *e = rel_value_exp(query, 
&outer, n->data.sym, sql_sel | sql_from, iek);
 
                                        if (!e)
                                                return NULL;
@@ -808,7 +808,7 @@ rel_values(sql_query *query, symbol *tab
                        for (n = values->h, m = exps->h; n && m; n = n->next, m 
= m->next) {
                                sql_exp *vals = m->data;
                                list *vals_list = vals->f;
-                               sql_exp *e = rel_value_exp(query, NULL, 
n->data.sym, sql_sel, ek);
+                               sql_exp *e = rel_value_exp(query, NULL, 
n->data.sym, sql_sel | sql_values, ek);
                                if (!e) 
                                        return NULL;
                                list_append(vals_list, e);
@@ -3226,7 +3226,7 @@ static sql_exp *
        sql_subfunc *a = NULL;
        int no_nil = 0, group = 0, has_freevar = 0;
        unsigned int all_freevar = 0;
-       sql_rel *groupby = *rel, *sel = NULL, *gr, *og = NULL, *res = groupby;
+       sql_rel *groupby = rel ? *rel : NULL, *sel = NULL, *gr, *og = NULL, 
*res = groupby;
        sql_rel *subquery = NULL;
        list *exps = NULL;
        bool is_grouping = !strcmp(aname, "grouping"), has_args = false;
@@ -3246,9 +3246,9 @@ static sql_exp *
                        if (uaname)
                                GDKfree(uaname);
                        return e;
-               } else if (is_sql_update_where(f)) { /* the is_sql_update_where 
test must come before is_sql_where, because is_sql_update_where are handled 
with sql_where */
+               } else if (is_sql_values(f)) {
                        char *uaname = GDKmalloc(strlen(aname) + 1);
-                       sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: 
aggregate functions not allowed in WHERE clauses inside UPDATE statements (use 
subquery)",
+                       sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: 
aggregate functions not allowed inside a list of VALUES",
                                                uaname ? toUpperCopy(uaname, 
aname) : aname);
                        if (uaname)
                                GDKfree(uaname);
@@ -3269,7 +3269,7 @@ static sql_exp *
                        return e;
                } else if (is_sql_update_set(f)) {
                        char *uaname = GDKmalloc(strlen(aname) + 1);
-                       sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: 
aggregate functions not allowed in UPDATE SET clause (use subquery)",
+                       sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: 
aggregate functions not allowed in SET clause (use subquery)",
                                                uaname ? toUpperCopy(uaname, 
aname) : aname);
                        if (uaname)
                                GDKfree(uaname);
@@ -3281,6 +3281,20 @@ static sql_exp *
                        if (uaname)
                                GDKfree(uaname);
                        return e;
+               } else if (is_psm_call(f)) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to