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 <[email protected]>
+- 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 <[email protected]>
- 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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list