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

Reply via email to