Changeset: f746b1289114 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f746b1289114
Added Files:
        sql/test/BugTracker-2015/Tests/concurrent-schema.Bug-3826.timeout
Modified Files:
        clients/Tests/exports.stable.out
        debian/rules
        java/ChangeLog.Jun2016
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
        java/tests/Test_Dobjects.java
        monetdb5/extras/pyapi/connection.c
        monetdb5/extras/pyapi/connection.h
        monetdb5/extras/pyapi/pyapi.c
        monetdb5/extras/pyapi/pyapi.h
        sql/jdbc/tests/Tests/Test_Dobjects.stable.out
        sql/test/BugTracker-2015/Tests/concurrent-schema.Bug-3826.stable.err
        sql/test/BugTracker-2015/Tests/concurrent-schema.Bug-3826.stable.out
        sql/test/BugTracker-2016/Tests/All
Branch: python3udf
Log Message:

Merge with default.


diffs (truncated from 393 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1935,6 +1935,7 @@ str affectedRowsRef;
 str aggrRef;
 str alarmRef;
 str algebraRef;
+str andRef;
 str appendRef;
 str appendidxRef;
 str arrayRef;
@@ -1956,6 +1957,8 @@ str batsqlRef;
 str batstrRef;
 str batxmlRef;
 str bbpRef;
+str betweenRef;
+str betweensymmetricRef;
 str bindRef;
 str binddbatRef;
 str bindidxRef;
@@ -2058,6 +2061,7 @@ str fcnDefinition(MalBlkPtr mb, InstrPtr
 int findGDKtype(int type);
 int findInstruction(Module scope, MalBlkPtr mb, InstrPtr pci);
 Module findModule(Module scope, str name);
+str findRef;
 Scenario findScenario(str nme);
 Symbol findSymbol(Module nspace, str mod, str fcn);
 Symbol findSymbolInModule(Module v, str fcn);
@@ -2121,6 +2125,7 @@ int getShtConstant(MalBlkPtr mb, sht val
 int getStrConstant(MalBlkPtr mb, str val);
 lng getSystemTime(void);
 BAT *getTrace(const char *ev);
+str getTraceRef;
 malType getType(MalBlkPtr mb, str nme);
 str getTypeIdentifier(malType tpe);
 int getTypeIndex(str nme, int len, int deftpe);
@@ -2398,6 +2403,7 @@ str pyapiRef;
 str pyapimapRef;
 str queryRef;
 str querylogRef;
+str raiseRef;
 str rankRef;
 str rapiRef;
 int readConsole(Client cntxt);
@@ -2457,6 +2463,7 @@ void setReturnArgument(InstrPtr p, int v
 str setScenario(Client c, str nme);
 void setVarName(MalBlkPtr mb, int i, str nme);
 void setVarType(MalBlkPtr mb, int i, int tpe);
+str setVariableRef;
 str setWriteModeRef;
 str setprofilerpoolsize(int size);
 str shortStmtRendering(MalBlkPtr mb, MalStkPtr stl, InstrPtr p);
@@ -2535,6 +2542,7 @@ timestamp *timestamp_nil;
 int timestamp_tostr(str *buf, int *len, const timestamp *val);
 int timestamp_tz_fromstr(const char *buf, int *len, timestamp **ret);
 int timestamp_tz_tostr(str *buf, int *len, const timestamp *val, const tzone 
*timezone);
+str transRef;
 void trimMalBlk(MalBlkPtr mb);
 void trimMalVariables(MalBlkPtr mb, MalStkPtr stk);
 void trimMalVariables_(MalBlkPtr mb, bit *used, MalStkPtr glb);
diff --git a/debian/rules b/debian/rules
--- a/debian/rules
+++ b/debian/rules
@@ -31,7 +31,7 @@ override_dh_auto_configure:
        --enable-oid32=no \
        --enable-optimize=yes \
        --enable-profile=no \
-       --enable-rintegration=no \
+       --enable-rintegration=yes \
        --enable-sql=yes \
        --enable-strict=no \
        --enable-testing=yes \
diff --git a/java/ChangeLog.Jun2016 b/java/ChangeLog.Jun2016
--- a/java/ChangeLog.Jun2016
+++ b/java/ChangeLog.Jun2016
@@ -1,6 +1,12 @@
 # ChangeLog file for java
 # This file is updated with Maddlog
 
+* Thu May 26 2016 Martin van Dinther <martin.van.dint...@monetdbsolutions.com>
+- Fixed problem in DatabaseMetaData.getUDTs() when it was called with
+  types parameter filled.  It used to throw SQException with message:
+  SELECT: identifier 'DATA_TYPE' unknown. Now it returns the UDTs which
+  match the provided array of data types.
+
 * Thu May 19 2016 Martin van Dinther <martin.van.dint...@monetdbsolutions.com>
 - Implemented MonetDatabaseMetaData.supportsConvert() and
   MonetDatabaseMetaData.supportsConvert(int fromType, int toType) methods.
diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java 
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -3239,6 +3239,9 @@ public class MonetDatabaseMetaData exten
        ) throws SQLException
        {
                StringBuilder query = new StringBuilder(990);
+               if (types != null && types.length > 0) {
+                       query.append("SELECT * FROM (");
+               }
                query.append("SELECT cast(null as char(1)) AS \"TYPE_CAT\", " +
                        "\"schemas\".\"name\" AS \"TYPE_SCHEM\", " +
                        "\"types\".\"sqlname\" AS \"TYPE_NAME\", " +
@@ -3269,7 +3272,7 @@ public class MonetDatabaseMetaData exten
                        query.append(" AND \"types\".\"sqlname\" 
").append(composeMatchPart(typeNamePattern));
                }
                if (types != null && types.length > 0) {
-                       query.append(" AND \"DATA_TYPE\" IN (");
+                       query.append(") AS getUDTs WHERE \"DATA_TYPE\" IN (");
                        for (int i = 0; i < types.length; i++) {
                                if (i > 0) {
                                        query.append(", ");
diff --git a/java/tests/Test_Dobjects.java b/java/tests/Test_Dobjects.java
--- a/java/tests/Test_Dobjects.java
+++ b/java/tests/Test_Dobjects.java
@@ -38,6 +38,9 @@ public class Test_Dobjects {
 //                     dumpResultSet(dbmd.getSchemas());       // this 
produces different outputs on different platforms due to dependency on SAMTOOLS 
and NETCDF. so exclude it
                        dumpResultSet(dbmd.getSchemas(null, "sys"));
                        dumpResultSet(dbmd.getTables(null, "sys", null, null));
+                       dumpResultSet(dbmd.getUDTs(null, "sys", null, null));
+                       int[] UDTtypes = { Types.STRUCT, Types.DISTINCT };
+                       dumpResultSet(dbmd.getUDTs(null, "sys", null, 
UDTtypes));
                } catch (SQLException e) {
                        System.out.println("FAILED :( "+ e.getMessage());
                        System.out.println("ABORTING TEST!!!");
diff --git a/monetdb5/extras/pyapi/connection.c 
b/monetdb5/extras/pyapi/connection.c
--- a/monetdb5/extras/pyapi/connection.c
+++ b/monetdb5/extras/pyapi/connection.c
@@ -275,14 +275,24 @@ PyObject *Py_Connection_Create(Client cn
     return (PyObject*) op;
 }
 
-NUMPY_IMPORT_ARRAY_RETTYPE _connection_init(void)
+static NUMPY_IMPORT_ARRAY_RETTYPE _connection_import_array(void) {
+    import_array();
+    return NUMPY_IMPORT_ARRAY_RETVAL;
+}
+
+str _connection_init(void)
 {
-    import_array();
+    str msg = MAL_SUCCEED;
+    _connection_import_array();
 
     LOAD_SQL_FUNCTION_PTR(SQLdestroyResult, "lib_sql.dll");
     LOAD_SQL_FUNCTION_PTR(SQLstatementIntern, "lib_sql.dll");
 
+    if (msg != MAL_SUCCEED) {
+        return msg;
+    }
+
     if (PyType_Ready(&Py_ConnectionType) < 0)
-        return NUMPY_IMPORT_ARRAY_RETVAL;
-    return NUMPY_IMPORT_ARRAY_RETVAL;
+        return createException(MAL, "pyapi.eval", "Failed to initialize 
connection type.");
+    return msg;
 }
diff --git a/monetdb5/extras/pyapi/connection.h 
b/monetdb5/extras/pyapi/connection.h
--- a/monetdb5/extras/pyapi/connection.h
+++ b/monetdb5/extras/pyapi/connection.h
@@ -31,7 +31,7 @@ PyAPI_DATA(PyTypeObject) Py_ConnectionTy
 
 PyObject *Py_Connection_Create(Client cntxt, bit mapped, QueryStruct 
*query_ptr, int query_sem);
 
-NUMPY_IMPORT_ARRAY_RETTYPE _connection_init(void);
+str _connection_init(void);
 char* _connection_query(Client cntxt, char* query, res_table** result);
 void _connection_cleanup_result(void* output);
 
diff --git a/monetdb5/extras/pyapi/pyapi.c b/monetdb5/extras/pyapi/pyapi.c
--- a/monetdb5/extras/pyapi/pyapi.c
+++ b/monetdb5/extras/pyapi/pyapi.c
@@ -438,9 +438,9 @@ str ConvertToSQLType(Client cntxt, BAT *
 //! [EXECUTE_CODE] Step 3: It executes the Python code using the Numpy arrays 
as arguments
 //! [RETURN_VALUES] Step 4: It collects the return values and converts them 
back into BATs
 //! If 'mapped' is set to True, it will fork a separate process at 
[FORK_PROCESS] that executes Step 1-3, the process will then write the return 
values into memory mapped files and exit, then Step 4 is executed by the main 
process
-static str PyAPIeval(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, 
bit grouped, bit mapped) {
-    sql_func * sqlfun = *(sql_func**) getArgReference(stk, pci, pci->retc);
-    str exprStr = *getArgReference_str(stk, pci, pci->retc + 1);
+str PyAPIeval(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, bit 
grouped, bit mapped) {
+    sql_func * sqlfun;
+    str exprStr;
 
     const int additional_columns = 3;
     int i = 1, ai = 0;
@@ -466,8 +466,8 @@ static str PyAPIeval(Client cntxt, MalBl
     void **mmap_ptrs = NULL;
     size_t *mmap_sizes = NULL;
 #endif
-    bit varres = sqlfun ? sqlfun->varres : 0;
-    int retcols = !varres ? pci->retc : -1;
+    bit varres;
+    int retcols;
     bool gstate = 0;
     int unnamedArgs = 0;
     bit parallel_aggregation = grouped && mapped;
@@ -485,6 +485,16 @@ static str PyAPIeval(Client cntxt, MalBl
               pyapi_enableflag);
     }
 
+    if (!pyapiInitialized) {
+        throw(MAL, "pyapi.eval",
+              "Embedded Python is enabled but an error was thrown during 
initialization.");
+    }
+
+    sqlfun = *(sql_func**) getArgReference(stk, pci, pci->retc);
+    exprStr = *getArgReference_str(stk, pci, pci->retc + 1);
+    varres = sqlfun ? sqlfun->varres : 0;
+    retcols = !varres ? pci->retc : -1;
+
     VERBOSE_MESSAGE("PyAPI Start\n");
 
     args = (str*) GDKzalloc(pci->argc * sizeof(str));
@@ -1609,11 +1619,12 @@ PYFUNCNAME(PyAPIprelude)(void *ret) {
     if (PyAPIEnabled()) {
         MT_lock_set(&pyapiLock);
         if (!pyapiInitialized) {
+            str msg = MAL_SUCCEED;
             char* iar = NULL;
             Py_Initialize();
             PyRun_SimpleString("import numpy");
             import_array1(iar);
-            _connection_init();
+            msg = _connection_init();
             marshal_module = PyImport_Import(PyString_FromString("marshal"));
             if (marshal_module == NULL) {
                 return createException(MAL, "pyapi.eval", "Failed to load 
Marshal module.");
@@ -1636,6 +1647,10 @@ PYFUNCNAME(PyAPIprelude)(void *ret) {
             LOAD_SQL_FUNCTION_PTR(batstr_2_date, "lib_sql.dll");
             LOAD_SQL_FUNCTION_PTR(batdbl_num2dec_lng, "lib_sql.dll");
             LOAD_SQL_FUNCTION_PTR(SQLbatstr_cast, "lib_sql.dll");
+            if (msg != MAL_SUCCEED) {
+                MT_lock_unset(&pyapiLock);
+                return msg;
+            }
             pyapiInitialized++;
         }
         MT_lock_unset(&pyapiLock);
diff --git a/monetdb5/extras/pyapi/pyapi.h b/monetdb5/extras/pyapi/pyapi.h
--- a/monetdb5/extras/pyapi/pyapi.h
+++ b/monetdb5/extras/pyapi/pyapi.h
@@ -117,7 +117,7 @@ pyapi_export void* lookup_function(char 
 #define LOAD_SQL_FUNCTION_PTR(fcnname,libname)                                 
  \
     fcnname##_ptr = (fcnname##_ptr_tpe) lookup_function(#fcnname, libname);    
    \
     if (fcnname##_ptr == NULL) {                                         \
-        WARNING_MESSAGE("Failed to load function %s", #fcnname);               
        \
+        msg = createException(MAL, "pyapi.eval", "Failed to load function %s", 
#fcnname); \
     }
 
 #endif /* _PYPI_LIB_ */
diff --git a/sql/jdbc/tests/Tests/Test_Dobjects.stable.out 
b/sql/jdbc/tests/Tests/Test_Dobjects.stable.out
--- a/sql/jdbc/tests/Tests/Test_Dobjects.stable.out
+++ b/sql/jdbc/tests/Tests/Test_Dobjects.stable.out
@@ -107,8 +107,16 @@ as select "schema","table",max(count) as
 from sys.storagemodel() group by "schema","table";     null    null    null    
null    null    
 null   sys     tracelog        SYSTEM VIEW     create view sys.tracelog as 
select * from sys.tracelog();       null    null    null    null    null    
 null   sys     users   SYSTEM VIEW     SELECT u."name" AS "name", 
ui."fullname", ui."default_schema" FROM db_users() AS u LEFT JOIN 
"sys"."db_user_info" AS ui ON u."name" = ui."name" ;       null    null    null 
   null    null    
+Resultset with 7 columns
+TYPE_CAT       TYPE_SCHEM      TYPE_NAME       CLASS_NAME      DATA_TYPE       
REMARKS BASE_TYPE       
+null   sys     inet    nl.cwi.monetdb.jdbc.types.INET  2000    inet    null    
+null   sys     json    java.lang.String        2000    json    null    
+null   sys     url     nl.cwi.monetdb.jdbc.types.URL   2000    url     null    
+null   sys     uuid    java.lang.String        2000    uuid    null    
+Resultset with 7 columns
+TYPE_CAT       TYPE_SCHEM      TYPE_NAME       CLASS_NAME      DATA_TYPE       
REMARKS BASE_TYPE       
 
-# 18:29:26 >  
-# 18:29:26 >  "Done."
-# 18:29:26 >  
+# 17:19:03 >  
+# 17:19:03 >  "Done."
+# 17:19:03 >  
 
diff --git 
a/sql/test/BugTracker-2015/Tests/concurrent-schema.Bug-3826.stable.err 
b/sql/test/BugTracker-2015/Tests/concurrent-schema.Bug-3826.stable.err
--- a/sql/test/BugTracker-2015/Tests/concurrent-schema.Bug-3826.stable.err
+++ b/sql/test/BugTracker-2015/Tests/concurrent-schema.Bug-3826.stable.err
@@ -1,1 +1,35 @@
-should not crash
+stderr of test 'concurrent-schema.Bug-3826` in directory 
'sql/test/BugTracker-2015` itself:
+
+
+# 13:30:05 >  
+# 13:30:05 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=30709" "--set" 
"mapi_usock=/var/tmp/mtest-30226/.s.monetdb.30709" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2015"
 "--set" "embedded_r=yes"
+# 13:30:05 >  
+
+# builtin opt  gdk_dbpath = 
/ufs/sjoerd/Monet-candidate/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 30709
+# cmdline opt  mapi_usock = /var/tmp/mtest-30226/.s.monetdb.30709
+# cmdline opt  monet_prompt = 
+# cmdline opt  gdk_dbpath = 
/ufs/sjoerd/Monet-candidate/var/MonetDB/mTests_sql_test_BugTracker-2015
+# cmdline opt  embedded_r = yes
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to