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