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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list