Changeset: 784cf334a8da for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=784cf334a8da Added Files: sql/test/BugTracker-2015/Tests/crash_timestamp_convert.Bug-3816.stable.err.Windows sql/test/BugTracker-2015/Tests/crash_timestamp_convert.Bug-3816.stable.out.Windows sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.err sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.sql sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.err sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out sql/test/BugTracker-2017/Tests/create_table_as-missing_not_null.Bug-6329.sql sql/test/BugTracker-2017/Tests/create_table_as-missing_not_null.Bug-6329.stable.err sql/test/BugTracker-2017/Tests/create_table_as-missing_not_null.Bug-6329.stable.out sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.sql sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.err sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.out sql/test/malloc_fail/Tests/setmemorylimit-fail2.stable.err sql/test/malloc_fail/Tests/setmemorylimit-fail2.stable.out Modified Files: clients/Tests/MAL-signatures.stable.out.int128 clients/odbc/driver/SQLColumnPrivileges.c monetdb5/mal/mal_instruction.c monetdb5/modules/mal/00_language_hge.mal sql/backends/monet5/Tests/pyapi19.stable.err sql/backends/monet5/Tests/pyapi19.stable.out sql/backends/monet5/Tests/pyapi25.stable.err sql/backends/monet5/Tests/pyapi25.stable.err.Windows sql/backends/monet5/Tests/pyapi25.stable.out sql/backends/monet5/Tests/pyapi29.stable.err sql/backends/monet5/Tests/pyapi29.stable.out sql/backends/monet5/UDF/pyapi/connection.c sql/backends/monet5/UDF/pyapi/pyapi.c sql/backends/monet5/UDF/pyapi/pyapi.mal sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_19.stable.err sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_19.stable.out sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_25.stable.err sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_25.stable.out sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_29.stable.err sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_29.stable.out sql/backends/monet5/UDF/pyapi3/pyapi3.mal sql/test/BugTracker-2017/Tests/All sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.sql sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.stable.err sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/check.stable.out sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128 sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128 sql/test/emptydb-upgrade/Tests/check.stable.out sql/test/emptydb-upgrade/Tests/check.stable.out.32bit sql/test/emptydb-upgrade/Tests/check.stable.out.int128 sql/test/emptydb/Tests/check.SQL.py sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 Branch: default Log Message:
Merge with Jul2017 branch. diffs (truncated from 3018 to 300 lines): 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 @@ -10172,21 +10172,21 @@ Ready. [ "json", "unfold", "pattern json.unfold(val:json) (o:bat[:oid], k:bat[:str], v:bat[:json]) ", "JSONunfold;", "Expands the outermost JSON object into key-value pairs." ] [ "json", "valuearray", "command json.valuearray(val:json):json ", "JSONvalueArray;", "Expands the outermost JSON object values into a JSON value array." ] [ "json", "values", "command json.values(val:json):bat[:json] ", "JSONvalueTable;", "Expands the outermost JSON values." ] -[ "language", "assert", "command language.assert(v:bit, term:str):void ", "MALassertBit;", "" ] -[ "language", "assert", "command language.assert(v:hge, term:str):void ", "MALassertHge;", "" ] -[ "language", "assert", "command language.assert(v:int, term:str):void ", "MALassertInt;", "" ] -[ "language", "assert", "command language.assert(v:lng, term:str):void ", "MALassertLng;", "" ] -[ "language", "assert", "command language.assert(v:oid, term:str):void ", "MALassertOid;", "" ] -[ "language", "assert", "command language.assert(v:sht, term:str):void ", "MALassertSht;", "" ] -[ "language", "assert", "command language.assert(v:str, term:str):void ", "MALassertStr;", "" ] -[ "language", "assert", "pattern language.assert(v:any_1, pname:str, oper:str, val:any_2):void ", "MALassertTriple;", "Assertion test." ] +[ "language", "assert", "unsafe command language.assert(v:bit, term:str):void ", "MALassertBit;", "" ] +[ "language", "assert", "unsafe command language.assert(v:hge, term:str):void ", "MALassertHge;", "" ] +[ "language", "assert", "unsafe command language.assert(v:int, term:str):void ", "MALassertInt;", "" ] +[ "language", "assert", "unsafe command language.assert(v:lng, term:str):void ", "MALassertLng;", "" ] +[ "language", "assert", "unsafe command language.assert(v:oid, term:str):void ", "MALassertOid;", "" ] +[ "language", "assert", "unsafe command language.assert(v:sht, term:str):void ", "MALassertSht;", "" ] +[ "language", "assert", "unsafe command language.assert(v:str, term:str):void ", "MALassertStr;", "" ] +[ "language", "assert", "unsafe pattern language.assert(v:any_1, pname:str, oper:str, val:any_2):void ", "MALassertTriple;", "Assertion test." ] [ "language", "block", "pattern language.block(v:int, w:any...):int ", "deblockdataflow;", "Block on availability of all variables w, and then pass on v" ] [ "language", "call", "pattern language.call(s:bat[:str]):void ", "CMDcallBAT;", "Evaluate a program stored in a BAT." ] [ "language", "call", "pattern language.call(m:str, f:str):void ", "CMDcallFunction;", "" ] [ "language", "call", "pattern language.call(s:str):void ", "CMDcallString;", "Evaluate a MAL string program." ] [ "language", "dataflow", "pattern language.dataflow():bit ", "MALstartDataflow;", "The current guarded block is executed using dataflow control. " ] [ "language", "pass", "pattern language.pass(v:any_1):void ", "MALpass;", "Cheap instruction to disgard storage while retaining the dataflow dependency" ] -[ "language", "raise", "command language.raise(msg:str):str ", "CMDraise;", "Raise an exception labeled \n\twith a specific message." ] +[ "language", "raise", "unsafe command language.raise(msg:str):str ", "CMDraise;", "Raise an exception labeled \n\twith a specific message." ] [ "language", "register", "pattern language.register(m:str, f:str, code:str, help:str):void ", "CMDregisterFunction;", "Compile the code string to MAL and register it as a function." ] [ "language", "sink", "pattern language.sink(v:any...):void ", "MALgarbagesink;", "Variables to be considered together when triggering garbage collection.\nUsed in the dataflow blocks to avoid early release of values." ] [ "language", "source", "pattern language.source(f:str):void ", "CMDevalFile;", "Merge the instructions stored in the file with the current program." ] diff --git a/clients/odbc/driver/SQLColumnPrivileges.c b/clients/odbc/driver/SQLColumnPrivileges.c --- a/clients/odbc/driver/SQLColumnPrivileges.c +++ b/clients/odbc/driver/SQLColumnPrivileges.c @@ -147,39 +147,46 @@ MNDBColumnPrivileges(ODBCStmt *stmt, "t.name as table_name, " "c.name as column_name, " "case a.id " - "when s.owner then '_SYSTEM' " + "when s.owner " + "then '_SYSTEM' " "else g.name " "end as grantor, " "case a.name " - "when 'public' then 'PUBLIC' " + "when 'public' " + "then 'PUBLIC' " "else a.name " "end as grantee, " - "case p.privileges " - "when 1 then 'SELECT' " - "when 2 then 'UPDATE' " - "when 4 then 'INSERT' " - "when 8 then 'DELETE' " - "when 16 then 'EXECUTE' " - "when 32 then 'GRANT' " - "end as privilege, " + "pc.privilege_code_name as privilege, " "case p.grantable " - "when 1 then 'YES' " - "when 0 then 'NO' " - "end as is_grantable " - "from sys.schemas s, " - "sys._tables t, " - "sys._columns c, " - "sys.auths a, " - "sys.privileges p, " - "sys.auths g, " - "sys.env() e " + "when 1 " + "then 'YES' " + "when 0 " + "then 'NO' " + "end as is_grantable " + "from sys.schemas as s, " + "sys._tables as t, " + "sys._columns as c, " + "sys.auths as a, " + "sys.privileges as p, " + "sys.auths as g, " + "sys.env() as e, " + /* this can eventually be replaced by + * sys.privilege_codes as pc + * see 51_sys_schema_extensionl.sql */ + "(values (1, 'SELECT'), " + "(2, 'UPDATE'), " + "(4, 'INSERT'), " + "(8, 'DELETE'), " + "(16, 'EXECUTE'), " + "(32, 'GRANT')) as pc(privilege_code_id, privilege_code_name) " "where p.obj_id = c.id and " "c.table_id = t.id and " "p.auth_id = a.id and " "t.schema_id = s.id and " "t.system = false and " "p.grantor = g.id and " - "e.name = 'gdk_dbname'"); + "e.name = 'gdk_dbname' and " + "p.privileges = pc.privilege_code_id"); assert(strlen(query) < 1100); query_end += strlen(query_end); @@ -211,7 +218,7 @@ MNDBColumnPrivileges(ODBCStmt *stmt, /* add the ordering */ strcpy(query_end, - " order by \"table_cat\", \"table_schem\", \"table_name\", \"column_name\", \"privilege\""); + " order by table_cat, table_schem, table_name, column_name, privilege"); query_end += strlen(query_end); /* query the MonetDB data dictionary tables */ 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 @@ -148,7 +148,6 @@ resizeMalBlk(MalBlkPtr mb, int elements) { int i; - assert(mb->vsize >= mb->ssize); if( elements > mb->ssize){ InstrPtr *ostmt = mb->stmt; mb->stmt = (InstrPtr *) GDKrealloc(mb->stmt, elements * sizeof(InstrPtr)); @@ -1436,13 +1435,15 @@ void pushInstruction(MalBlkPtr mb, InstrPtr p) { int i; + int extra; InstrPtr q; if (p == NULL) return; + extra = mb->vsize - mb->vtop; // the extra variables already known if (mb->stop + 1 >= mb->ssize) { - if( resizeMalBlk(mb, growBlk(mb->ssize)) ){ + if( resizeMalBlk(mb, growBlk(mb->ssize) + extra) ){ /* perhaps we can continue with a smaller increment. * But the block remains marked as faulty. */ diff --git a/monetdb5/modules/mal/00_language_hge.mal b/monetdb5/modules/mal/00_language_hge.mal --- a/monetdb5/modules/mal/00_language_hge.mal +++ b/monetdb5/modules/mal/00_language_hge.mal @@ -6,5 +6,5 @@ module language; -command assert(v:hge,term:str):void +unsafe command assert(v:hge,term:str):void address MALassertHge; diff --git a/sql/backends/monet5/Tests/pyapi19.stable.err b/sql/backends/monet5/Tests/pyapi19.stable.err --- a/sql/backends/monet5/Tests/pyapi19.stable.err +++ b/sql/backends/monet5/Tests/pyapi19.stable.err @@ -31,6 +31,64 @@ stderr of test 'pyapi19` in directory 's # 11:59:04 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-5346" "--port=35428" # 11:59:04 > +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = SELECT * FROM mapped_query(); +ERROR = !Python exception + ! + ! 1. def pyfun(_columns,_column_types,_conn): + !> 2. _conn.execute('CREATE TABLE pyapi19_integers(i INTEGER);') + ! 3. _conn.execute('INSERT INTO pyapi19_integers VALUES (0), (1), (2);') + ! 4. return(1) + !Loopback queries are not supported in parallel. +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = SELECT * FROM pyapi19_integers; +ERROR = !current transaction is aborted (please ROLLBACK) +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = CREATE FUNCTION mapped_result_query() returns table (i integer) LANGUAGE PYTHON_MAP + { + res = _conn.execute('SELECT * FROM pyapi19_integers;') + return res['i'] + }; +ERROR = !current transaction is aborted (please ROLLBACK) +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = SELECT * FROM mapped_result_query(); +ERROR = !current transaction is aborted (please ROLLBACK) +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = SELECT COUNT(i) FROM pyapi19_load_table(); +ERROR = !Python exception + ! + ! 1. def pyfun(_columns,_column_types,_conn): + !> 2. res = _conn.execute('SELECT * FROM pyapi19_integers;') + ! 3. return res['i'] + ! 4. + !Loopback queries are not supported in parallel. +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = SELECT * FROM mapped_result_query(); +ERROR = !Python exception + ! + ! 1. def pyfun(_columns,_column_types,_conn): + !> 2. res = _conn.execute('SELECT * FROM pyapi19_strings;') + ! 3. return res['s'] + ! 4. + !Loopback queries are not supported in parallel. +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = SELECT * FROM mapped_result_query(); +ERROR = !Python exception + ! + ! 1. def pyfun(_columns,_column_types,_conn): + !> 2. res = _conn.execute('SELECT * FROM pyapi19_dates;') + ! 3. return res + ! 4. + !Loopback queries are not supported in parallel. +MAPI = (monetdb) /var/tmp/mtest-23452/.s.monetdb.39765 +QUERY = SELECT * FROM pyapi19_load_table() LIMIT 100; +ERROR = !Python exception + ! + ! 1. def pyfun(_columns,_column_types,_conn): + !> 2. res = _conn.execute('SELECT * FROM pyapi19_integers;') + ! 3. return res + ! 4. + !Loopback queries are not supported in parallel. # 11:59:05 > # 11:59:05 > "Done." diff --git a/sql/backends/monet5/Tests/pyapi19.stable.out b/sql/backends/monet5/Tests/pyapi19.stable.out --- a/sql/backends/monet5/Tests/pyapi19.stable.out +++ b/sql/backends/monet5/Tests/pyapi19.stable.out @@ -36,33 +36,6 @@ Ready. # _conn.execute('INSERT INTO pyapi19_integers VALUES (0), (1), (2);') # return(1) #}; -#SELECT * FROM mapped_query(); -% . # table_name -% i # name -% int # type -% 1 # length -[ 1 ] -#SELECT * FROM pyapi19_integers; -% sys.pyapi19_integers # table_name -% i # name -% int # type -% 1 # length -[ 0 ] -[ 1 ] -[ 2 ] -#CREATE FUNCTION mapped_result_query() returns table (i integer) LANGUAGE PYTHON_MAP -#{ -# res = _conn.execute('SELECT * FROM pyapi19_integers;') -# return res['i'] -#}; -#SELECT * FROM mapped_result_query(); -% . # table_name -% i # name -% int # type -% 1 # length -[ 0 ] -[ 1 ] -[ 2 ] #ROLLBACK; #START TRANSACTION; #CREATE FUNCTION pyapi19_create_table() returns table (i integer) LANGUAGE P @@ -75,12 +48,6 @@ Ready. # return res['i'] #}; #CREATE TABLE pyapi19_integers AS SELECT * FROM pyapi19_create_table() WITH DATA; -#SELECT COUNT(i) FROM pyapi19_load_table(); -% .L2 # table_name -% L1 # name -% bigint # type -% 6 # length -[ 100000 ] #ROLLBACK; #START TRANSACTION; #CREATE TABLE pyapi19_strings(s STRING); @@ -91,14 +58,6 @@ Ready. # res = _conn.execute('SELECT * FROM pyapi19_strings;') # return res['s'] #}; -#SELECT * FROM mapped_result_query(); -% . # table_name -% i # name -% clob # type -% 11 # length -[ "hello" ] -[ "33" ] -[ "hello world" ] #ROLLBACK; #START TRANSACTION; #CREATE TABLE pyapi19_dates(d DATE); @@ -109,14 +68,6 @@ Ready. # res = _conn.execute('SELECT * FROM pyapi19_dates;') # return res #}; -#SELECT * FROM mapped_result_query(); -% . # table_name -% d # name -% date # type -% 10 # length -[ 2014-10-03 ] -[ 2000-03-24 ] -[ 2033-11-22 ] #ROLLBACK; #START TRANSACTION; #CREATE FUNCTION pyapi19_create_table() returns table (i integer, j integer, k double, l float, m hugeint, n bigint, o STRING, p DECIMAL) LANGUAGE P _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list