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