Changeset: e54f487eabf4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e54f487eabf4
Added Files:
        
sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql
Removed Files:
        sql/test/BugTracker-2016/Tests/data-uuid.csv.bz2
        
sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql.in
Modified Files:
        monetdb5/mal/mal_builder.c
        monetdb5/mal/mal_function.c
        monetdb5/mal/mal_instruction.c
        monetdb5/modules/mal/language.c
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_remap.c
        sql/backends/monet5/sql_scenario.c
        sql/server/sql_mvc.c
        sql/storage/store.c
        sql/test/BugTracker-2016/Tests/All
        sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.sql
        sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/mergetables/Tests/All
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
Branch: default
Log Message:

Merge with Jul2017 branch.


diffs (truncated from 370 to 300 lines):

diff --git a/monetdb5/mal/mal_builder.c b/monetdb5/mal/mal_builder.c
--- a/monetdb5/mal/mal_builder.c
+++ b/monetdb5/mal/mal_builder.c
@@ -38,8 +38,13 @@ newAssignment(MalBlkPtr mb)
 InstrPtr
 newStmt(MalBlkPtr mb, const char *module, const char *name)
 {
-       InstrPtr q = newInstruction(mb, putName(module), putName(name));
+       InstrPtr q;
+       str mName = putName(module), nName = putName(name);
 
+       if(mName == NULL || nName == NULL) {
+               return NULL;
+       }
+       q = newInstruction(mb, mName, nName);
        if ( q == NULL)
                return NULL;
        setDestVar(q, newTmpVariable(mb, TYPE_any));
@@ -71,11 +76,18 @@ InstrPtr
 newFcnCall(MalBlkPtr mb, char *mod, char *fcn)
 {
        InstrPtr q = newAssignment(mb);
+       str fcnName, modName;
 
        if ( q == NULL || mod == NULL || fcn == NULL)
                return NULL;
-       setModuleId(q, putName(mod));
-       setFunctionId(q, putName(fcn));
+       modName = putName(mod);
+       fcnName = putName(fcn);
+       if(modName == NULL || fcnName == NULL) {
+               freeInstruction(q);
+               return NULL;
+       }
+       setModuleId(q, modName);
+       setFunctionId(q, fcnName);
        return q;
 }
 
diff --git a/monetdb5/mal/mal_function.c b/monetdb5/mal/mal_function.c
--- a/monetdb5/mal/mal_function.c
+++ b/monetdb5/mal/mal_function.c
@@ -23,6 +23,9 @@ Symbol newFunction(str mod, str nme,int 
        InstrPtr p;
        int varid;
 
+       if(mod == NULL || nme == NULL)
+               return NULL;
+
        s = newSymbol(nme,kind);
        if (s == NULL)
                return NULL;
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
@@ -48,6 +48,10 @@ newSymbol(str nme, int kind)
        if (cur == NULL)
                return NULL;
        cur->name = putName(nme);
+       if(cur->name == NULL) {
+               GDKfree(cur);
+               return NULL;
+       }
        cur->kind = kind;
        cur->peer = NULL;
        cur->def = newMalBlk(kind == FUNCTIONsymbol? STMT_INCREMENT : 2);
diff --git a/monetdb5/modules/mal/language.c b/monetdb5/modules/mal/language.c
--- a/monetdb5/modules/mal/language.c
+++ b/monetdb5/modules/mal/language.c
@@ -180,7 +180,7 @@ CMDregisterFunction(Client cntxt, MalBlk
        str *code = getArgReference_str(stk,pci,3);
        str *help = getArgReference_str(stk,pci,4);
        InstrPtr sig;
-       str msg;
+       str msg, fcnName, modName, ahelp;
 
        msg= compileString(&sym, cntxt,*code);
        if( sym) {
@@ -188,11 +188,19 @@ CMDregisterFunction(Client cntxt, MalBlk
                //mnstr_printf(cntxt->fdout,"#register FUNCTION %s.%s\n",
                        //getModuleId(sym->def->stmt[0]), 
getFunctionId(sym->def->stmt[0]));
                mb= sym->def;
+               fcnName = putName(*fcn);
+               modName = putName(*mod);
+               ahelp = GDKstrdup(*help);
+               if(fcnName == NULL || modName == NULL || help == NULL) {
+                       freeSymbol(sym);
+                       GDKfree(ahelp);
+                       throw(MAL, "language.register", MAL_MALLOC_FAIL);
+               }
                if( help)
-                       mb->help= GDKstrdup(*help);
+                       mb->help= ahelp;
                sig= getSignature(sym);
-               sym->name= putName(*fcn);
-               setModuleId(sig, putName(*mod));
+               sym->name= fcnName;
+               setModuleId(sig, modName);
                setFunctionId(sig, sym->name);
                insertSymbol(findModule(cntxt->usermodule, getModuleId(sig)), 
sym);
        }
diff --git a/monetdb5/optimizer/opt_multiplex.c 
b/monetdb5/optimizer/opt_multiplex.c
--- a/monetdb5/optimizer/opt_multiplex.c
+++ b/monetdb5/optimizer/opt_multiplex.c
@@ -57,6 +57,8 @@ OPTexpandMultiplex(Client cntxt, MalBlkP
        mod = putName(mod);
        fcn = VALget(&getVar(mb, getArg(pci, pci->retc+1))->value);
        fcn = putName(fcn);
+       if(mod == NULL || fcn == NULL)
+               throw(MAL, "optimizer.multiplex", MAL_MALLOC_FAIL);
 #ifndef NDEBUG
        fprintf(stderr,"#WARNING To speedup %s.%s a bulk operator 
implementation is needed\n#", mod,fcn);
        fprintInstruction(stderr, mb, stk, pci, LIST_MAL_DEBUG);
diff --git a/monetdb5/optimizer/opt_remap.c b/monetdb5/optimizer/opt_remap.c
--- a/monetdb5/optimizer/opt_remap.c
+++ b/monetdb5/optimizer/opt_remap.c
@@ -23,6 +23,7 @@ OPTremapDirect(Client cntxt, MalBlkPtr m
        char buf[1024];
        int i, retc = pci->retc;
        InstrPtr p;
+       str bufName, fcnName;
 
        (void) cntxt;
        (void) stk;
@@ -36,7 +37,12 @@ OPTremapDirect(Client cntxt, MalBlkPtr m
 #endif
 
        snprintf(buf,1024,"bat%s",mod);
-       p= newInstruction(mb, putName(buf), putName(fcn));
+       bufName = putName(buf);
+       fcnName = putName(fcn);
+       if(bufName == NULL || fcnName == NULL)
+               return 0;
+
+       p= newInstruction(mb, bufName, fcnName);
 
        for(i=0; i<pci->retc; i++)
                if (i<1)
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -1184,6 +1184,10 @@ SQLparser(Client c)
                        m->sym = NULL;
                        /* register name in the namespace */
                        be->q->name = putName(be->q->name);
+                       if(!be->q->name) {
+                               err = 1;
+                               msg = createException(PARSE, "SQLparser", 
MAL_MALLOC_FAIL);
+                       }
                }
        }
        if (err)
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -561,6 +561,13 @@ mvc_create(int clientid, backend_stack s
        store_lock();
        m->session = sql_session_create(stk, 1 /*autocommit on*/);
        store_unlock();
+       if(!m->session) {
+               qc_destroy(m->qc);
+               _DELETE(m->vars);
+               _DELETE(m->args);
+               _DELETE(m);
+               return NULL;
+       }
 
        m->type = Q_PARSE;
        m->pushdown = 1;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1842,6 +1842,10 @@ idle_manager(void)
                }
 
                s = sql_session_create(gtrans->stk, 0);
+               if(!s) {
+                       MT_lock_unset(&bs_lock);
+                       continue;
+               }
                sql_trans_begin(s);
                if (store_vacuum( s->tr ) == 0)
                        sql_trans_commit(s->tr);
diff --git a/sql/test/BugTracker-2016/Tests/All 
b/sql/test/BugTracker-2016/Tests/All
--- a/sql/test/BugTracker-2016/Tests/All
+++ b/sql/test/BugTracker-2016/Tests/All
@@ -19,7 +19,7 @@ catalog_name_qualifier.Bug-3948
 stream_table_crash.Bug-3952
 null_in_null.Bug-3900
 rank_rewrite.Bug-3890
-HAVE_LIBBZ2?min-max-uuid-column-wrong-results.Bug-3953
+min-max-uuid-column-wrong-results.Bug-3953
 update_crash.Bug-3954
 group_distinct_quantile.Bug-3927
 HAVE_GEOM?merge_project.Bug-3955
diff --git a/sql/test/BugTracker-2016/Tests/data-uuid.csv.bz2 
b/sql/test/BugTracker-2016/Tests/data-uuid.csv.bz2
deleted file mode 100644
index 
90b03b56a0ff24e708d77fbeadc169f998762bfc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001

diff --git 
a/sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql.in
 b/sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql
rename from 
sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql.in
rename to 
sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql
--- 
a/sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql.in
+++ 
b/sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql
@@ -1,5 +1,5 @@
 CREATE TABLE test (c UUID);
-COPY 200000 RECORDS INTO test FROM '$QTSTSRCDIR/data-uuid.csv.bz2' DELIMITERS 
',';
+INSERT INTO test (SELECT CAST('1e1a9c62-d656-11e5-9fd7-9b884ad020cd' AS UUID) 
FROM generate_series(CAST(0 AS INTEGER), 200000, 1));
 SELECT MIN(c) AS mn, MAX(c) AS mx FROM test;
 SELECT MIN(c) AS mn, MAX(c) AS mx FROM test;
 SELECT MIN(c) AS mn, MAX(c) AS mx FROM test;
diff --git a/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.sql 
b/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.sql
--- a/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.sql
+++ b/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.sql
@@ -1,3 +1,3 @@
-select name,name from sys.functions group by name limit 2;
-select name, name from sys.functions group by name,name limit 2;
-select f.name, f.name from sys.functions AS f group by name,name limit 2;
+select privilege_code_name,privilege_code_name from sys.privilege_codes group 
by privilege_code_name limit 2;
+select privilege_code_name, privilege_code_name from sys.privilege_codes group 
by privilege_code_name,privilege_code_name limit 2;
+select f.privilege_code_name, f.privilege_code_name from sys.privilege_codes 
AS f group by privilege_code_name,privilege_code_name limit 2;
diff --git 
a/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.stable.out 
b/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.stable.out
--- a/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.stable.out
+++ b/sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.stable.out
@@ -24,27 +24,27 @@ Ready.
 # 08:52:53 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-4722" "--port=34679"
 # 08:52:53 >  
 
-#select name,name from sys.functions group by name limit 2;
-% sys.functions,       sys.functions # table_name
-% name,        name # name
+#select privilege_code_name,privilege_code_name from sys.privilege_codes group 
by privilege_code_name limit 2;
+% sys.privilege_codes, sys.privilege_codes # table_name
+% privilege_code_name, privilege_code_name # name
 % varchar,     varchar # type
-% 11,  11 # length
-[ "mbr_overlap",       "mbr_overlap"   ]
-[ "mbr_above", "mbr_above"     ]
-#select name, name from sys.functions group by name,name limit 2;
-% sys.functions,       sys.functions # table_name
-% name,        name # name
+% 6,   6 # length
+[ "SELECT",    "SELECT"        ]
+[ "UPDATE",    "UPDATE"        ]
+#select privilege_code_name, privilege_code_name from sys.privilege_codes 
group by privilege_code_name,privilege_code_name limit 2;
+% sys.privilege_codes, sys.privilege_codes # table_name
+% privilege_code_name, privilege_code_name # name
 % varchar,     varchar # type
-% 11,  11 # length
-[ "mbr_overlap",       "mbr_overlap"   ]
-[ "mbr_above", "mbr_above"     ]
-#select f.name, f.name from sys.functions AS f group by name,name limit 2;
+% 6,   6 # length
+[ "SELECT",    "SELECT"        ]
+[ "UPDATE",    "UPDATE"        ]
+#select f.privilege_code_name, f.privilege_code_name from sys.privilege_codes 
AS f group by privilege_code_name,privilege_code_name limit 2;
 % sys.f,       sys.f # table_name
-% name,        name # name
+% privilege_code_name, privilege_code_name # name
 % varchar,     varchar # type
-% 11,  11 # length
-[ "mbr_overlap",       "mbr_overlap"   ]
-[ "mbr_above", "mbr_above"     ]
+% 6,   6 # length
+[ "SELECT",    "SELECT"        ]
+[ "UPDATE",    "UPDATE"        ]
 
 # 08:52:53 >  
 # 08:52:53 >  "Done."
diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out 
b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
--- a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
@@ -24,6 +24,17 @@ stdout of test 'upgrade` in directory 's
 # MonetDB/R   module loaded
 
 Ready.
+Running database upgrade commands:
+GRANT SELECT ON sys.keywords TO PUBLIC;
+GRANT SELECT ON sys.table_types TO PUBLIC;
+GRANT SELECT ON sys.dependency_types TO PUBLIC;
+GRANT SELECT ON sys.function_types TO PUBLIC;
+GRANT SELECT ON sys.function_languages TO PUBLIC;
+GRANT SELECT ON sys.key_types TO PUBLIC;
+GRANT SELECT ON sys.index_types TO PUBLIC;
+GRANT SELECT ON sys.privilege_codes TO PUBLIC;
+GRANT EXECUTE ON FUNCTION sys.environment() TO PUBLIC;
+GRANT SELECT ON sys.environment TO PUBLIC;
 
 Running database upgrade commands:
 set schema "sys";
diff --git a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out 
b/sql/test/emptydb-upgrade/Tests/upgrade.stable.out
--- a/sql/test/emptydb-upgrade/Tests/upgrade.stable.out
+++ b/sql/test/emptydb-upgrade/Tests/upgrade.stable.out
@@ -24,6 +24,17 @@ stdout of test 'upgrade` in directory 's
 # MonetDB/R   module loaded
 
 Ready.
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to