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