Changeset: c99a8a706b2a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c99a8a706b2a Removed Files: sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.sql sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.err sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out monetdb5/mal/mal.c monetdb5/mal/mal_client.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_module.c monetdb5/mal/mal_parser.c monetdb5/mal/mal_session.c monetdb5/modules/atoms/inet.c sql/backends/monet5/mal_backend.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_gencode.h sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/backends/monet5/sqlcatalog.mal sql/server/rel_psm.c sql/server/rel_schema.c sql/server/rel_sequence.c sql/storage/store.c sql/test/BugTracker-2009/Tests/All sql/test/BugTracker-2010/Tests/error-truncated.Bug-2615.stable.err.Darwin sql/test/BugTracker-2010/Tests/error-truncated.Bug-2615.stable.err.Windows sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out.32bit tools/mserver/shutdowntest.c Branch: wlcr Log Message:
Merge with default diffs (truncated from 1692 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 @@ -8463,19 +8463,19 @@ Ready. [ "sqlblob", "sqlblob", "command sqlblob.sqlblob(s:str):sqlblob ", "BLOBsqlblob_fromstr;", "" ] [ "sqlcatalog", "alter_add_table", "pattern sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str, action:int):void ", "SQLalter_add_table;", "Catalog operation alter_add_table" ] [ "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, seq:ptr, val: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, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] +[ "sqlcatalog", "alter_table", "pattern sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] [ "sqlcatalog", "alter_user", "pattern sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str, oldpasswrd:str):void ", "SQLalter_user;", "Catalog operation alter_user" ] -[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] +[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] [ "sqlcatalog", "create_role", "pattern sqlcatalog.create_role(sname:str, role:str, grator:int):void ", "SQLcreate_role;", "Catalog operation create_role" ] [ "sqlcatalog", "create_schema", "pattern sqlcatalog.create_schema(sname:str, auth:str, action:int):void ", "SQLcreate_schema;", "Catalog operation create_schema" ] -[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] -[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] +[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seqname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] +[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] [ "sqlcatalog", "create_trigger", "pattern sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int, orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ", "SQLcreate_trigger;", "Catalog operation create_trigger" ] [ "sqlcatalog", "create_type", "pattern sqlcatalog.create_type(sname:str, nme:str, impl:str):void ", "SQLcreate_type;", "Catalog operation create_type" ] [ "sqlcatalog", "create_user", "pattern sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str, fullname:str):void ", "SQLcreate_user;", "Catalog operation create_user" ] -[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] +[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, vname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] [ "sqlcatalog", "drop_constraint", "pattern sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ", "SQLdrop_constraint;", "Catalog operation drop_constraint" ] [ "sqlcatalog", "drop_function", "pattern sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int, action:int):void ", "SQLdrop_function;", "Catalog operation drop_function" ] [ "sqlcatalog", "drop_index", "pattern sqlcatalog.drop_index(sname:str, iname:str, action:int):void ", "SQLdrop_index;", "Catalog operation drop_index" ] 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 @@ -10827,19 +10827,19 @@ Ready. [ "sqlblob", "sqlblob", "command sqlblob.sqlblob(s:str):sqlblob ", "BLOBsqlblob_fromstr;", "" ] [ "sqlcatalog", "alter_add_table", "pattern sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str, action:int):void ", "SQLalter_add_table;", "Catalog operation alter_add_table" ] [ "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, seq:ptr, val: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, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] +[ "sqlcatalog", "alter_table", "pattern sqlcatalog.alter_table(sname:str, tname:str, tbl:ptr, action:int):void ", "SQLalter_table;", "Catalog operation alter_table" ] [ "sqlcatalog", "alter_user", "pattern sqlcatalog.alter_user(sname:str, passwrd:str, enc:int, schema:str, oldpasswrd:str):void ", "SQLalter_user;", "Catalog operation alter_user" ] -[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] +[ "sqlcatalog", "create_function", "pattern sqlcatalog.create_function(sname:str, fname:str, fcn:ptr):void ", "SQLcreate_function;", "Catalog operation create_function" ] [ "sqlcatalog", "create_role", "pattern sqlcatalog.create_role(sname:str, role:str, grator:int):void ", "SQLcreate_role;", "Catalog operation create_role" ] [ "sqlcatalog", "create_schema", "pattern sqlcatalog.create_schema(sname:str, auth:str, action:int):void ", "SQLcreate_schema;", "Catalog operation create_schema" ] -[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] -[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] +[ "sqlcatalog", "create_seq", "pattern sqlcatalog.create_seq(sname:str, seqname:str, seq:ptr, action:int):void ", "SQLcreate_seq;", "Catalog operation create_seq" ] +[ "sqlcatalog", "create_table", "pattern sqlcatalog.create_table(sname:str, tname:str, tbl:ptr, temp:int):void ", "SQLcreate_table;", "Catalog operation create_table" ] [ "sqlcatalog", "create_trigger", "pattern sqlcatalog.create_trigger(sname:str, tname:str, triggername:str, time:int, orientation:int, event:int, old:str, new:str, cond:str, qry:str):void ", "SQLcreate_trigger;", "Catalog operation create_trigger" ] [ "sqlcatalog", "create_type", "pattern sqlcatalog.create_type(sname:str, nme:str, impl:str):void ", "SQLcreate_type;", "Catalog operation create_type" ] [ "sqlcatalog", "create_user", "pattern sqlcatalog.create_user(sname:str, passwrd:str, enc:int, schema:str, fullname:str):void ", "SQLcreate_user;", "Catalog operation create_user" ] -[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] +[ "sqlcatalog", "create_view", "pattern sqlcatalog.create_view(sname:str, vname:str, tbl:ptr, temp:int):void ", "SQLcreate_view;", "Catalog operation create_view" ] [ "sqlcatalog", "drop_constraint", "pattern sqlcatalog.drop_constraint(sname:str, name:str, action:int):void ", "SQLdrop_constraint;", "Catalog operation drop_constraint" ] [ "sqlcatalog", "drop_function", "pattern sqlcatalog.drop_function(sname:str, fname:str, fid:int, type:int, action:int):void ", "SQLdrop_function;", "Catalog operation drop_function" ] [ "sqlcatalog", "drop_index", "pattern sqlcatalog.drop_index(sname:str, iname:str, action:int):void ", "SQLdrop_index;", "Catalog operation drop_index" ] diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -1177,7 +1177,7 @@ str INETnetmask(inet *retval, const inet str INETnetwork(inet *retval, const inet *val); str INETnew(inet *retval, str *in); inet *INETnull(void); -str INETsetmasklen(inet *retval, const inet *val, const int *mask); +str INETsetmasklen(inet *retval, const inet *val, const int *msk); str INETtext(str *retval, const inet *val); int INETtoString(str *retval, int *len, const inet *handle); str INSPECTatom_names(bat *ret); @@ -2263,7 +2263,6 @@ MT_Lock mal_delayLock; void mal_exit(void); void mal_factory_reset(void) __attribute__((__visibility__("hidden"))); int mal_init(void); -void mal_instruction_reset(void); void mal_linker_reset(void) __attribute__((__visibility__("hidden"))); void mal_module_reset(void) __attribute__((__visibility__("hidden"))); void mal_namespace_reset(void) __attribute__((__visibility__("hidden"))); diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c --- a/monetdb5/mal/mal.c +++ b/monetdb5/mal/mal.c @@ -151,12 +151,12 @@ void mserver_reset(int exit) GDKfree(mal_clients->prompt); GDKfree(mal_clients->username); freeStack(mal_clients->glb); + freeSymbol(mal_clients->curprg); mal_client_reset(); mal_linker_reset(); mal_resource_reset(); mal_runtime_reset(); mal_module_reset(); - mal_instruction_reset(); memset((char*)monet_cwd,0, sizeof(monet_cwd)); monet_memory = 0; diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c --- a/monetdb5/mal/mal_client.c +++ b/monetdb5/mal/mal_client.c @@ -50,15 +50,6 @@ #include "mal_runtime.h" #include "mal_authorize.h" -/* - * This should be in src/mal/mal.h, as the function is implemented in - * src/mal/mal.c; however, it cannot, as "Client" isn't known there ... - * |-( For now, we move the prototype here, as it it only used here. - * Maybe, we should consider also moving the implementation here... - */ - -static void freeClient(Client c); - int MAL_MAXCLIENTS = 0; ClientRec *mal_clients; @@ -358,7 +349,7 @@ MCforkClient(Client father) * effects of sharing IO descriptors, also its children. Conversely, a * child can not close a parent. */ -void +static void freeClient(Client c) { Thread t = c->mythread; diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c --- a/monetdb5/mal/mal_instruction.c +++ b/monetdb5/mal/mal_instruction.c @@ -16,17 +16,6 @@ #include "mal_utils.h" #include "mal_exception.h" -#define MAXSYMBOLS 12000 /* enough for the startup and some queries */ -static SymRecord symbolpool[MAXSYMBOLS]; -static int symboltop = 0; - - -void -mal_instruction_reset(void) -{ - symboltop = 0; -} - Symbol newSymbol(str nme, int kind) { @@ -36,18 +25,14 @@ newSymbol(str nme, int kind) GDKerror("newSymbol:unexpected name (=null)\n"); return NULL; } - if( symboltop < MAXSYMBOLS){ - cur = symbolpool + symboltop++; - } else { - cur = (Symbol) GDKzalloc(sizeof(SymRecord)); - if (cur == NULL) - return NULL; - } + cur = (Symbol) GDKzalloc(sizeof(SymRecord)); + if (cur == NULL) + return NULL; cur->name = putName(nme); cur->kind = kind; cur->peer = NULL; cur->def = newMalBlk(kind == FUNCTIONsymbol?MAXVARS : MAXARG, kind == FUNCTIONsymbol? STMT_INCREMENT : 2); - if ( cur->def == NULL){ + if (cur->def == NULL){ GDKfree(cur); return NULL; } @@ -63,8 +48,7 @@ freeSymbol(Symbol s) freeMalBlk(s->def); s->def = NULL; } - if( !( s >= symbolpool && s < symbolpool + MAXSYMBOLS)) - GDKfree(s); + GDKfree(s); } void diff --git a/monetdb5/mal/mal_instruction.h b/monetdb5/mal/mal_instruction.h --- a/monetdb5/mal/mal_instruction.h +++ b/monetdb5/mal/mal_instruction.h @@ -114,7 +114,6 @@ #define getGDKType(T) ( T <= TYPE_str ? T : (T == TYPE_any ? TYPE_void : findGDKtype(T))) -mal_export void mal_instruction_reset(void); mal_export InstrPtr newInstruction(MalBlkPtr mb, str modnme, str fcnnme); mal_export InstrPtr copyInstruction(InstrPtr p); mal_export void oldmoveInstruction(InstrPtr dst, InstrPtr src); diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c --- a/monetdb5/mal/mal_module.c +++ b/monetdb5/mal/mal_module.c @@ -236,9 +236,9 @@ void insertSymbol(Module scope, Symbol p return; } assert(scope->space); - if(scope->space[t] == prg){ + if (scope->space[t] == prg){ /* already known, last inserted */ - } else { + } else { prg->peer= scope->space[t]; scope->space[t] = prg; if( prg->peer && diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c --- a/monetdb5/mal/mal_parser.c +++ b/monetdb5/mal/mal_parser.c @@ -1099,6 +1099,7 @@ fcnHeader(Client cntxt, int kind) } advance(cntxt, 1); + assert(!cntxt->backup); cntxt->backup = cntxt->curprg; cntxt->curprg = newFunction( modnme, fnme, kind); curPrg = cntxt->curprg; @@ -1135,6 +1136,11 @@ fcnHeader(Client cntxt, int kind) } if (currChar(cntxt) != ')') { freeInstruction(curInstr); + if (cntxt->backup) { + freeSymbol(cntxt->curprg); + cntxt->curprg = cntxt->backup; + cntxt->backup = 0; + } parseError(cntxt, "')' expected\n"); skipToEnd(cntxt); return curBlk; @@ -1172,6 +1178,11 @@ fcnHeader(Client cntxt, int kind) if ((ch = currChar(cntxt)) != ',') { if (ch == ')') break; + if (cntxt->backup) { + freeSymbol(cntxt->curprg); + cntxt->curprg = cntxt->backup; + cntxt->backup = 0; + } parseError(cntxt, "',' expected\n"); skipToEnd(cntxt); return curBlk; @@ -1186,6 +1197,11 @@ fcnHeader(Client cntxt, int kind) newarg = (short *) GDKmalloc(max * sizeof(curInstr->argv[0])); if (newarg == NULL){ parseError(cntxt, MAL_MALLOC_FAIL); + if (cntxt->backup) { + freeSymbol(cntxt->curprg); + cntxt->curprg = cntxt->backup; + cntxt->backup = 0; + } skipToEnd(cntxt); return curBlk; } @@ -1295,8 +1311,12 @@ parseCommandPattern(Client cntxt, int ki modnme = putNameLen(modnme, l); if (isModuleDefined(cntxt->nspace, modnme)) insertSymbol(findModule(cntxt->nspace, modnme), curPrg); - else + else { + freeSymbol(curPrg); + cntxt->curprg = cntxt->backup; + cntxt->backup = 0; return (MalBlkPtr) parseError(cntxt, "<module> not found\n"); + } chkProgram(cntxt->fdout, cntxt->nspace, curBlk); if (cntxt->backup) { cntxt->curprg = cntxt->backup; diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c --- a/monetdb5/mal/mal_session.c +++ b/monetdb5/mal/mal_session.c @@ -468,8 +468,19 @@ MSserveClient(void *dummy) /* * At this stage we should clean out the MAL block */ - freeMalBlk(c->curprg->def); - c->curprg->def = 0; + if (c->backup) { + assert(0); + freeSymbol(c->backup); + c->backup = 0; + } + if (c->curprg) { + assert(0); + freeSymbol(c->curprg); + c->curprg = 0; + } + if (c->nspace) { + assert(0); + } if (c->mode > FINISHCLIENT) { if (isAdministrator(c) /* && moreClients(0)==0 */) { @@ -480,7 +491,7 @@ MSserveClient(void *dummy) } if (!isAdministrator(c)) MCcloseClient(c); - if (strcmp(c->nspace->name, "user") == 0) { + if (c->nspace && strcmp(c->nspace->name, "user") == 0) { GDKfree(c->nspace->space); GDKfree(c->nspace); c->nspace = NULL; @@ -514,6 +525,17 @@ MALexitClient(Client c) if (c->bak) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list