MonetDB: Jul2017 - Properly respect DEFAULT values in the Python...
Changeset: 4303f7489624 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4303f7489624 Modified Files: sql/backends/monet5/Tests/pyloader01.sql sql/backends/monet5/Tests/pyloader01.stable.out sql/backends/monet5/UDF/pyapi/emit.c sql/backends/monet5/UDF/pyapi/pyloader.c sql/include/sql_catalog.h sql/server/rel_updates.c Branch: Jul2017 Log Message: Properly respect DEFAULT values in the Python loader. diffs (145 lines): diff --git a/sql/backends/monet5/Tests/pyloader01.sql b/sql/backends/monet5/Tests/pyloader01.sql --- a/sql/backends/monet5/Tests/pyloader01.sql +++ b/sql/backends/monet5/Tests/pyloader01.sql @@ -1,7 +1,7 @@ START TRANSACTION; -CREATE TABLE mytable(a DOUBLE, d int, s STRING); +CREATE TABLE mytable(a DOUBLE, d int, s STRING DEFAULT 'hello'); CREATE LOADER myfunc() LANGUAGE PYTHON { _emit.emit({'a':42,'d':1}) @@ -23,10 +23,10 @@ SELECT name,func,mod,language,type,side_ -- there is a reason for this, functions with 0, 1, 2 and 3+ arguments are handled differently. +COPY LOADER INTO mytable FROM myfunc(); COPY LOADER INTO mytable FROM myfunc3(46, 'asdf', 3.2); COPY LOADER INTO mytable FROM myfunc2(45, 'asdf'); COPY LOADER INTO mytable FROM myfunc1(44); -COPY LOADER INTO mytable FROM myfunc(); SELECT * FROM mytable; diff --git a/sql/backends/monet5/Tests/pyloader01.stable.out b/sql/backends/monet5/Tests/pyloader01.stable.out --- a/sql/backends/monet5/Tests/pyloader01.stable.out +++ b/sql/backends/monet5/Tests/pyloader01.stable.out @@ -56,11 +56,11 @@ Ready. % sys.mytable, sys.mytable,sys.mytable # table_name % a, d, s # name % double, int,clob # type -% 24, 1, 5 # length +% 24, 1, 7 # length +[ 42, 1, "'hello'" ] [ 46, 4, "hello" ] -[ 45, 3, NULL] -[ 44, 2, NULL] -[ 42, 1, NULL] +[ 45, 3, "'hello'" ] +[ 44, 2, "'hello'" ] #DROP TABLE mytable; #DROP ALL LOADER myfunc; #CREATE LOADER myfunc() LANGUAGE PYTHON { diff --git a/sql/backends/monet5/UDF/pyapi/emit.c b/sql/backends/monet5/UDF/pyapi/emit.c --- a/sql/backends/monet5/UDF/pyapi/emit.c +++ b/sql/backends/monet5/UDF/pyapi/emit.c @@ -199,6 +199,7 @@ PyObject *PyEmit_Emit(PyEmitObject *self self->cols[self->ncols].b = COLnew(0, bat_type, 0, TRANSIENT); self->cols[self->ncols].name = GDKstrdup(val); + self->cols[self->ncols].def = NULL; if (self->nvals > 0) { // insert NULL values up until the current entry for (ai = 0; ai < self->nvals; ai++) { @@ -209,9 +210,9 @@ PyObject *PyEmit_Emit(PyEmitObject *self goto wrapup; } } - self->cols[i].b->tnil = 1; - self->cols[i].b->tnonil = 0; - BATsetcount(self->cols[i].b, self->nvals); + self->cols[self->ncols].b->tnil = 1; + self->cols[self->ncols].b->tnonil = 0; + BATsetcount(self->cols[self->ncols].b, self->nvals); } self->ncols++; } @@ -337,14 +338,21 @@ PyObject *PyEmit_Emit(PyEmitObject *self self->cols[i].b->tnonil = 1 - self->cols[i].b->tnil; } } else { + void* nill_value = ATOMnil(self->cols[i].b->ttype); + void* default_value = self->cols[i].def ? + self->cols[i].def : + nill_value; for (ai = 0; ai < (size_t)el_count; ai++) { - if (BUNappend(self->cols[i].b, ATOMnil(self->cols[i].b->ttype), + if (BUNappend(self->cols[i].b, + default_value, 0) != GDK_SUCCEED) { goto wrapup; } } - self->cols[i].b->tnil = 1; - self->cols[i].b->tnonil = 0; + if (BATatoms[self->cols[i].b->ttype].atomCmp(default_value, nill_value) == 0) { + self->cols[i].b->tnil = 1; + self->cols[i].b->tnonil = 0; + } } BATsetcount(self->cols[i].b, self->nvals +
MonetDB: default - Approve test error output
Changeset: 5d237f1d0a3f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5d237f1d0a3f Modified Files: monetdb5/mal/Tests/tst1002.stable.out Branch: default Log Message: Approve test error output diffs (12 lines): diff --git a/monetdb5/mal/Tests/tst1002.stable.out b/monetdb5/mal/Tests/tst1002.stable.out --- a/monetdb5/mal/Tests/tst1002.stable.out +++ b/monetdb5/mal/Tests/tst1002.stable.out @@ -19,7 +19,7 @@ catch MALException:str; io.printf("%s\n":str, MALException:str); #[4] (0) IOprintf 5 <- 6 4 exit MALException:str; #[5] (0) 4 end user.foo; #[6] (0) -MALException:bbp.bind:Object not found +MALException:bbp.bind:HY002!Object not found # 15:35:45 > # 15:35:45 > "Done." ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Handle should be closed in case of malloc fai...
Changeset: e3ebf40c1553 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e3ebf40c1553 Modified Files: monetdb5/mal/mal_linker.c Branch: default Log Message: Handle should be closed in case of malloc failure diffs (21 lines): diff --git a/monetdb5/mal/mal_linker.c b/monetdb5/mal/mal_linker.c --- a/monetdb5/mal/mal_linker.c +++ b/monetdb5/mal/mal_linker.c @@ -240,12 +240,16 @@ loadLibrary(str filename, int flag) filesLoaded[lastfile].modname = GDKstrdup(filename); if(filesLoaded[lastfile].modname == NULL) { MT_lock_unset(_contextLock); + if (handle) + dlclose(handle); throw(LOADER, "loadLibrary", RUNTIME_LOAD_ERROR " could not allocate space"); } filesLoaded[lastfile].fullname = GDKstrdup(handle ? nme : ""); if(filesLoaded[lastfile].fullname == NULL) { + MT_lock_unset(_contextLock); GDKfree(filesLoaded[lastfile].modname); - MT_lock_unset(_contextLock); + if (handle) + dlclose(handle); throw(LOADER, "loadLibrary", RUNTIME_LOAD_ERROR " could not allocate space"); } filesLoaded[lastfile].handle = handle ? handle : filesLoaded[0].handle; ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: default - Added some missing SQL error codes
Changeset: 4d5e564c08c6 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4d5e564c08c6 Modified Files: monetdb5/mal/mal_factory.c monetdb5/mal/mal_import.c monetdb5/mal/mal_interpreter.c monetdb5/mal/mal_parser.c monetdb5/modules/atoms/batxml.c monetdb5/modules/atoms/json.c monetdb5/modules/atoms/mtime.c monetdb5/modules/kernel/aggr.c monetdb5/modules/kernel/algebra.c monetdb5/modules/kernel/bat5.c monetdb5/modules/kernel/batcolor.c monetdb5/modules/kernel/batmmath.c monetdb5/modules/kernel/batstr.c monetdb5/modules/kernel/group.c monetdb5/modules/kernel/microbenchmark.c monetdb5/modules/mal/batcalc.c monetdb5/modules/mal/bbp.c monetdb5/modules/mal/calc.c monetdb5/modules/mal/factories.c monetdb5/modules/mal/language.c monetdb5/modules/mal/mal_io.c monetdb5/modules/mal/mal_mapi.c monetdb5/modules/mal/mat.c monetdb5/modules/mal/mkey.c monetdb5/modules/mal/orderidx.c monetdb5/modules/mal/pcre.c monetdb5/modules/mal/profiler.c monetdb5/modules/mal/remote.c monetdb5/modules/mal/transaction.c monetdb5/modules/mal/txtsim.c monetdb5/modules/mal/wlc.c monetdb5/optimizer/opt_mergetable.c monetdb5/optimizer/opt_multiplex.c monetdb5/optimizer/opt_pipes.c sql/backends/monet5/sql.c sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_upgrades.c Branch: default Log Message: Added some missing SQL error codes diffs (truncated from 2248 to 300 lines): diff --git a/monetdb5/mal/mal_factory.c b/monetdb5/mal/mal_factory.c --- a/monetdb5/mal/mal_factory.c +++ b/monetdb5/mal/mal_factory.c @@ -306,7 +306,7 @@ yieldFactory(MalBlkPtr mb, InstrPtr p, i pl->env = NULL; return MAL_SUCCEED; } - throw(MAL, "factory.yield", RUNTIME_OBJECT_MISSING); + throw(MAL, "factory.yield", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); } /* diff --git a/monetdb5/mal/mal_import.c b/monetdb5/mal/mal_import.c --- a/monetdb5/mal/mal_import.c +++ b/monetdb5/mal/mal_import.c @@ -320,7 +320,7 @@ compileString(Symbol *fcn, Client cntxt, b = (buffer *) GDKzalloc(sizeof(buffer)); if (b == NULL) { GDKfree(qry); - return MAL_MALLOC_FAIL; + throw(MAL,"mal.eval",SQLSTATE(HY001) MAL_MALLOC_FAIL); } buffer_init(b, qry, len); diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c --- a/monetdb5/mal/mal_interpreter.c +++ b/monetdb5/mal/mal_interpreter.c @@ -815,7 +815,7 @@ str runMALsequence(Client cntxt, MalBlkP b = BBPquickdesc(stk->stk[getArg(pci, i)].val.bval, FALSE); if (b == NULL) { if (ret == MAL_SUCCEED) - ret = createException(MAL, "mal.propertyCheck", RUNTIME_OBJECT_MISSING); + ret = createException(MAL, "mal.propertyCheck", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING); continue; } b = BATdescriptor(stk->stk[getArg(pci, i)].val.bval); 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 @@ -1115,7 +1115,7 @@ fcnHeader(Client cntxt, int kind) cntxt->backup = cntxt->curprg; cntxt->curprg = newFunction( modnme, fnme, kind); if(cntxt->curprg == NULL) { - parseError(cntxt, MAL_MALLOC_FAIL); + parseError(cntxt, SQLSTATE(HY001) MAL_MALLOC_FAIL); cntxt->curprg = cntxt->backup; return 0; } @@ -1374,7 +1374,7 @@ parseFunction(Client cntxt, int kind) } nme = idCopy(cntxt, i); if (nme == NULL) { - parseError(cntxt, MAL_MALLOC_FAIL); + parseError(cntxt, SQLSTATE(HY001) MAL_MALLOC_FAIL); return 0; } curInstr->fcn = getAddress(nme); @@ -1529,7 +1529,7 @@ parseAssign(Client cntxt, int cntrl) curPrg = cntxt->curprg; curBlk = curPrg->def; if((curInstr = newInstruction(curBlk, NULL, NULL)) == NULL) { - parseError(cntxt, MAL_MALLOC_FAIL); + parseError(cntxt, SQLSTATE(HY001) MAL_MALLOC_FAIL); return; } @@ -1776,7 +1776,7 @@ parseMAL(Client cntxt, Symbol curPrg, in if (! skipcomments && e > start
MonetDB: sqlextra - Merge with default
Changeset: bb6b1c7f6700 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bb6b1c7f6700 Added Files: sql/jdbc/tests/Tests/Bug_PrepStmtSetString_6382.SQL.bat sql/jdbc/tests/Tests/Bug_PrepStmtSetString_6382.SQL.sh sql/jdbc/tests/Tests/Bug_PrepStmtSetString_6382.stable.err sql/jdbc/tests/Tests/Bug_PrepStmtSetString_6382.stable.out sql/test/BugTracker-2009/Tests/AVG_of_SQRT.SF-2757642.sql sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.sql sql/test/BugTracker-2017/Tests/check_system_schema.Bug-6437.sql sql/test/BugTracker-2017/Tests/check_system_schema.Bug-6437.stable.err sql/test/BugTracker-2017/Tests/check_system_schema.Bug-6437.stable.out sql/test/BugTracker-2017/Tests/copy_into_crash.Bug-6404.sql sql/test/BugTracker-2017/Tests/copy_into_crash.Bug-6404.stable.err sql/test/BugTracker-2017/Tests/copy_into_crash.Bug-6404.stable.out sql/test/BugTracker-2017/Tests/corr_coersion.Bug-6287.sql sql/test/BugTracker-2017/Tests/corr_coersion.Bug-6287.stable.err sql/test/BugTracker-2017/Tests/corr_coersion.Bug-6287.stable.out sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.sql sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.stable.err sql/test/BugTracker-2017/Tests/double-groupby-column.Bug-6207.stable.out sql/test/BugTracker-2017/Tests/drop_schema_restrict.Bug-6438.sql sql/test/BugTracker-2017/Tests/drop_schema_restrict.Bug-6438.stable.err sql/test/BugTracker-2017/Tests/drop_schema_restrict.Bug-6438.stable.out sql/test/BugTracker-2017/Tests/drop_system_schema.Bug-6437.sql sql/test/BugTracker-2017/Tests/drop_system_schema.Bug-6437.stable.err sql/test/BugTracker-2017/Tests/drop_system_schema.Bug-6437.stable.out sql/test/BugTracker-2017/Tests/insert_into_multiple_subqueries.Bug-6448.sql sql/test/BugTracker-2017/Tests/insert_into_multiple_subqueries.Bug-6448.stable.err sql/test/BugTracker-2017/Tests/insert_into_multiple_subqueries.Bug-6448.stable.out sql/test/BugTracker-2017/Tests/null_matches_in_outer.Bug-6398.sql sql/test/BugTracker-2017/Tests/null_matches_in_outer.Bug-6398.stable.err sql/test/BugTracker-2017/Tests/null_matches_in_outer.Bug-6398.stable.out sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.err sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct-coalesce.Bug-6431.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct-coalesce.Bug-6431.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct-coalesce.Bug-6431.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct.Bug-6411.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct.Bug-6411.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct.Bug-6411.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-not-in.Bug-6416.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-not-in.Bug-6416.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-not-in.Bug-6416.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-having-with-in.Bug-6410.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-having-with-in.Bug-6410.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-having-with-in.Bug-6410.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-having-with-not-in.Bug-6409.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-having-with-not-in.Bug-6409.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-having-with-not-in.Bug-6409.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-select-in.Bug-6433.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-select-in.Bug-6433.stable.err sql/test/BugTracker-2017/Tests/sqlitelogictest-select-in.Bug-6433.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-select-not-in.Bug-6435.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-select-not-in.Bug-6435.stable.err