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

Reply via email to