Changeset: cc9f01720b29 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cc9f01720b29
Added Files:
        sql/backends/monet5/UDF/pyapi3/50_pyapi3.mal
        sql/backends/monet5/UDF/pyapi3/Makefile.ag
        sql/backends/monet5/UDF/pyapi3/Tests/All
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_00.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_00.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_00.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_01.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_01.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_01.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_02.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_02.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_02.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_03.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_03.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_03.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_04.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_04.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_04.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_05.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_05.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_05.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_06.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_06.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_06.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_07.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_07.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_07.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_09.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_09.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_09.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_10.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_10.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_10.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_11.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_11.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_11.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_12.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_12.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_12.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_13.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_13.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_13.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_15.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_16.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_16.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_16.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_17.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_17.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_17.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_18.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_18.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_18.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_19.SQL.sh
        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_20.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_20.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_20.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_21.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_21.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_21.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_23.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_23.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_23.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_24.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_24.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_24.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_25.SQL.sh
        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_26.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_26.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_26.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_27.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_27.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_27.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_28.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_28.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_28.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_29.SQL.sh
        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/Tests/pyapi3_30.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_30.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_30.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_31.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_31.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_31.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_32.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_32.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyapi3_32.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_02.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_02.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_02.stable.out
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.SQL.sh
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.stable.err
        sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.stable.out
        sql/backends/monet5/UDF/pyapi3/connection3.c
        sql/backends/monet5/UDF/pyapi3/conversion3.c
        sql/backends/monet5/UDF/pyapi3/emit3.c
        sql/backends/monet5/UDF/pyapi3/formatinput3.c
        sql/backends/monet5/UDF/pyapi3/pyapi3.c
        sql/backends/monet5/UDF/pyapi3/pyapi3.mal
        sql/backends/monet5/UDF/pyapi3/pyloader3.c
        sql/backends/monet5/UDF/pyapi3/pytypes3.c
        sql/backends/monet5/UDF/pyapi3/type_conversion3.c
        sql/backends/monet5/UDF/pyapi3/unicode3.c
        
sql/test/BugTracker-2015/Tests/crash_timestamp_convert.Bug-3816.stable.out.Darwin.src
        
sql/test/BugTracker-2015/Tests/crash_timestamp_convert.Bug-3816.stable.out.FreeBSD
        
sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.sql
        
sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.err
        
sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out
        sql/test/BugTracker-2017/Tests/fullouterjoinfilter.Bug-6256.sql
        sql/test/BugTracker-2017/Tests/fullouterjoinfilter.Bug-6256.stable.err
        sql/test/BugTracker-2017/Tests/fullouterjoinfilter.Bug-6256.stable.out
        sql/test/BugTracker-2017/Tests/wrong_aggregation_count.Bug-6257.sql
        
sql/test/BugTracker-2017/Tests/wrong_aggregation_count.Bug-6257.stable.err
        
sql/test/BugTracker-2017/Tests/wrong_aggregation_count.Bug-6257.stable.out
Modified Files:
        .hgtags
        MonetDB.spec
        NT/installer32/MonetDB-ODBC-Installer.vdproj
        NT/installer32/MonetDB5-Geom-Module.vdproj
        NT/installer32/MonetDB5-SQL-Installer.vdproj
        NT/installer64/MonetDB-ODBC-Installer.vdproj
        NT/installer64/MonetDB5-Geom-Module.vdproj
        NT/installer64/MonetDB5-SQL-Installer.vdproj
        NT/monetdb_config.h.in
        NT/rules.msc
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapilib/mapi.rc
        clients/odbc/driver/driver.rc
        clients/odbc/winsetup/setup.rc
        configure.ag
        debian/changelog
        gdk/gdk_bat.c
        gdk/gdk_calc.c
        gdk/libbat.rc
        geom/monetdb5/geom.mal
        libversions
        monetdb5/extras/Makefile.ag
        monetdb5/mal/mal_import.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_profiler.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_support.c
        monetdb5/tools/libmonetdb5.rc
        sql/ChangeLog-Archive
        sql/ChangeLog.Dec2016
        sql/backends/monet5/UDF/Makefile.ag
        sql/backends/monet5/UDF/pyapi/Makefile.ag
        sql/backends/monet5/UDF/pyapi/connection.c
        sql/backends/monet5/UDF/pyapi/connection.h
        sql/backends/monet5/UDF/pyapi/formatinput.c
        sql/backends/monet5/UDF/pyapi/formatinput.h
        sql/backends/monet5/UDF/pyapi/pyapi.c
        sql/backends/monet5/UDF/pyapi/pyapi.h
        sql/backends/monet5/UDF/pyapi/pyapi.mal
        sql/backends/monet5/UDF/pyapi/pyheader.h
        sql/backends/monet5/UDF/pyapi/pyloader.c
        sql/backends/monet5/UDF/pyapi/pytypes.c
        sql/backends/monet5/UDF/pyapi/pytypes.h
        sql/backends/monet5/UDF/pyapi/type_conversion.c
        sql/backends/monet5/UDF/pyapi/type_conversion.h
        sql/backends/monet5/UDF/pyapi/unicode.c
        sql/backends/monet5/UDF/pyapi/unicode.h
        sql/backends/monet5/generator/Tests/generator04.stable.err
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_scenario.h
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/vaults/fits/fits.c
        sql/backends/monet5/vaults/netcdf/netcdf.c
        sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
        sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out.int128
        sql/benchmarks/tpch/LOCKED/Tests/02.stable.out
        sql/benchmarks/tpch/Tests/01-22.stable.out
        sql/benchmarks/tpch/Tests/01-22.stable.out.int128
        sql/benchmarks/tpch/Tests/02.stable.out
        sql/include/sql_catalog.h
        sql/server/rel_optimizer.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_select.c
        sql/server/sql_parser.y
        sql/storage/bat/bat_table.c
        sql/storage/store.c
        sql/test/BugTracker-2009/Tests/bool-str-bug.stable.out
        sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out
        sql/test/BugTracker-2015/Tests/schema-trigger.Bug-3710.sql
        sql/test/BugTracker-2015/Tests/schema-trigger.Bug-3710.stable.err
        sql/test/BugTracker-2015/Tests/schema-trigger.Bug-3710.stable.out
        sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out
        
sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.out.int128
        sql/test/BugTracker-2016/Tests/storagemodel.stable.out
        sql/test/BugTracker-2017/Tests/All
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/Dependencies/Tests/Dependencies.stable.out.int128
        sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out
        
sql/test/SQLite_regress/sqllogictest/Tests/select3.test.stable.out.int128
        sql/test/Tests/subqueries.stable.out
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/leaks/Tests/check1.stable.out.int128
        sql/test/orderidx/Tests/oidx_all_types.sql
        sql/test/orderidx/Tests/oidx_all_types.stable.out
        sql/test/pg_regress/Tests/without_oid.stable.out.oid32
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        testing/Mtest.py.in
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/utils/properties.c
        tools/merovingian/utils/utils.c
        vertoo.data
Branch: protocol
Log Message:

Merge with default.


diffs (truncated from 61539 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -659,3 +659,8 @@ 566c4291d2c2547a2360097c9a1038c2d2064ec3
 94a35822a8d9dfc6458a2353168e37a21b16ea29 Dec2016_13
 566c4291d2c2547a2360097c9a1038c2d2064ec3 Dec2016_SP3_release
 94a35822a8d9dfc6458a2353168e37a21b16ea29 Dec2016_SP3_release
+8dcbdc30cd49d1d03e3a21b37671d567d84943ae Dec2016_15
+94a35822a8d9dfc6458a2353168e37a21b16ea29 Dec2016_SP3_release
+8dcbdc30cd49d1d03e3a21b37671d567d84943ae Dec2016_SP3_release
+07824a1c7beb75308b813378af33c243f1c2f511 Dec2016_17
+07824a1c7beb75308b813378af33c243f1c2f511 Dec2016_SP4_release
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -132,7 +132,7 @@ Vendor: MonetDB BV <i...@monetdb.org>
 Group: Applications/Databases
 License: MPLv2.0
 URL: http://www.monetdb.org/
-Source: 
http://dev.monetdb.org/downloads/sources/Dec2016-SP3/%{name}-%{version}.tar.bz2
+Source: 
http://dev.monetdb.org/downloads/sources/Dec2016-SP4/%{name}-%{version}.tar.bz2
 
 # we need systemd for the _unitdir macro to exist
 %if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
@@ -877,6 +877,15 @@ developer, but if you do want to test, t
 
 %build
 
+# There is a bug in GCC version 4.8 on AArch64 architectures
+# that causes it to report an internal error when compiling
+# testing/difflib.c.  The work around is to not use -fstack-protector-strong.
+# The bug exhibits itself on CentOS 7 on AArch64.
+if [ `gcc -v 2>&1 | grep -c 'Target: aarch64\|gcc version 4\.'` -eq 2 ]; then
+       # set CFLAGS before configure, so that this value gets used
+       CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
--param=ssp-buffer-size=4 -grecord-gcc-switches  '
+       export CFLAGS
+fi
 %{configure} \
        --enable-assert=no \
        --enable-console=yes \
@@ -944,6 +953,29 @@ rm -f %{buildroot}%{_bindir}/Maddlog
 %postun -p /sbin/ldconfig
 
 %changelog
+* Tue Apr 11 2017 Sjoerd Mullender <sjo...@acm.org> - 11.25.17-20170411
+- Rebuilt.
+- BZ#6110: cast of a SQL boolean value to a string or clob or (var)char
+  is wrong
+- BZ#6254: Crash (and assertion failure) after querying a view which
+  uses a correlated subquery in the select-list
+- BZ#6256: Assertion Trigger on FULL OUTER JOIN with more than two
+  BETWEEN clauses
+- BZ#6257: wrong count values (1 instead of 0) for correlated aggregation
+  queries
+- BZ#6258: Vulnerability in FITS and NETCDF data vaults
+
+* Tue Apr 11 2017 Sjoerd Mullender <sjo...@acm.org> - 11.25.17-20170411
+- sql: Upgrade code was added for an old change in the sys.settimeout function.
+- sql: A bug was fixed with the automatic "vacuum" operation on system tables.
+
+* Thu Mar 30 2017 Sjoerd Mullender <sjo...@acm.org> - 11.25.15-20170330
+- Rebuilt.
+- BZ#6250: Assertion failure when querying a Blob column with order
+  by DESC
+- BZ#6253: FITS Data Vaults does not work when using user/pw and other
+  than sys schema name
+
 * Wed Mar 29 2017 Sjoerd Mullender <sjo...@acm.org> - 11.25.13-20170329
 - Rebuilt.
 - BZ#6216: Assertion raised (sqlsmith)
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -6074,14 +6074,14 @@ Ready.
 [ "batmtime",  "seconds",      "command 
batmtime.seconds(d:bat[:daytime]):bat[:int] ", 
"MTIMEdaytime_extract_seconds_bulk;",   ""      ]
 [ "batmtime",  "sql_seconds",  "command 
batmtime.sql_seconds(d:bat[:daytime]):bat[:int] ",     
"MTIMEdaytime_extract_sql_seconds_bulk;",       ""      ]
 [ "batmtime",  "year", "command batmtime.year(d:bat[:date]):bat[:int] ",       
"MTIMEdate_extract_year_bulk;", ""      ]
-[ "batpyapi",  "eval", "pattern batpyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PyAPIevalStd;",        "Execute a simple Python 
script value"  ]
-[ "batpyapi",  "eval_aggr",    "pattern batpyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalAggr;",       "grouped aggregates through 
Python"     ]
-[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str):any... ",     "PyAPIevalLoader;",     "loader functions through 
Python"       ]
-[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str, arg:any...):any... ", "PyAPIevalLoader;",     "loader functions 
through Python"       ]
-[ "batpyapi",  "subeval_aggr", "pattern batpyapi.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PyAPIevalAggr;",       "grouped 
aggregates through Python"     ]
-[ "batpyapimap",       "eval", "pattern batpyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",     "PyAPIevalStdMap;",     "Execute a simple Python 
script value"  ]
-[ "batpyapimap",       "eval_aggr",    "pattern 
batpyapimap.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ",        
"PyAPIevalAggrMap;",    "grouped aggregates through Python"     ]
-[ "batpyapimap",       "subeval_aggr", "pattern 
batpyapimap.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ",     
"PyAPIevalAggrMap;",    "grouped aggregates through Python"     ]
+[ "batpyapi",  "eval", "pattern batpyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PYAPI2PyAPIevalStd;",  "Execute a simple Python 
script value"  ]
+[ "batpyapi",  "eval_aggr",    "pattern batpyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalAggr;", "grouped aggregates through 
Python"     ]
+[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str):any... ",     "PYAPI2PyAPIevalLoader;",       "loader functions 
through Python"       ]
+[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str, arg:any...):any... ", "PYAPI2PyAPIevalLoader;",       "loader 
functions through Python"       ]
+[ "batpyapi",  "subeval_aggr", "pattern batpyapi.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PYAPI2PyAPIevalAggr;", "grouped 
aggregates through Python"     ]
+[ "batpyapimap",       "eval", "pattern batpyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",     "PYAPI2PyAPIevalStdMap;",       "Execute a simple 
Python script value"  ]
+[ "batpyapimap",       "eval_aggr",    "pattern 
batpyapimap.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ",        
"PYAPI2PyAPIevalAggrMap;",      "grouped aggregates through Python"     ]
+[ "batpyapimap",       "subeval_aggr", "pattern 
batpyapimap.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ",     
"PYAPI2PyAPIevalAggrMap;",      "grouped aggregates through Python"     ]
 [ "batrapi",   "eval", "pattern batrapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ", "RAPIevalStd;", "Execute a simple R script value"       ]
 [ "batrapi",   "eval_aggr",    "pattern batrapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",    "RAPIevalAggr;",        "grouped aggregates through R" 
 ]
 [ "batrapi",   "subeval_aggr", "pattern batrapi.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ", "RAPIevalAggr;",        "grouped aggregates 
through R"  ]
@@ -8216,17 +8216,17 @@ Ready.
 [ "profiler",  "stop", "pattern profiler.stop():void ",        
"CMDstopProfiler;",     "Stop offline performance profiling"    ]
 [ "profiler",  "stoptrace",    "command profiler.stoptrace():void ",   
"CMDstopTrace;",        "Stop collecting trace information"     ]
 [ "profiler",  "stoptrace",    "command profiler.stoptrace(path:str):void ",   
"CMDstopTracePath;",    "Stop collecting trace information"     ]
-[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str):any ",  
"PyAPIevalStd;",        "Execute a simple Python script returning a single 
value"       ]
-[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalStd;",        "Execute a simple Python script 
value"  ]
-[ "pyapi",     "eval_aggr",    "pattern pyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",      "PyAPIevalAggr;",       "grouped aggregates through 
Python"     ]
-[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, 
expr:str):any... ",        "PyAPIevalLoader;",     "loader functions through 
Python"       ]
-[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, expr:str, 
arg:any...):any... ",    "PyAPIevalLoader;",     "loader functions through 
Python"       ]
-[ "pyapi",     "prelude",      "command pyapi.prelude():void ",        
"PyAPIprelude;",        ""      ]
-[ "pyapi",     "subeval_aggr", "pattern pyapi.subeval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalAggr;",       "grouped aggregates through 
Python"     ]
-[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str):any ",       
"PyAPIevalStdMap;",     "Execute a simple Python script returning a single 
value"       ]
-[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PyAPIevalStdMap;",     "Execute a simple Python 
script value"  ]
-[ "pyapimap",  "eval_aggr",    "pattern pyapimap.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalAggrMap;",    "grouped aggregates through 
Python"     ]
-[ "pyapimap",  "subeval_aggr", "pattern pyapimap.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PyAPIevalAggrMap;",    "grouped 
aggregates through Python"     ]
+[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str):any ",  
"PYAPI2PyAPIevalStd;",  "Execute a simple Python script returning a single 
value"       ]
+[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalStd;",  "Execute a simple Python script 
value"  ]
+[ "pyapi",     "eval_aggr",    "pattern pyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",      "PYAPI2PyAPIevalAggr;", "grouped aggregates through 
Python"     ]
+[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, 
expr:str):any... ",        "PYAPI2PyAPIevalLoader;",       "loader functions 
through Python"       ]
+[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, expr:str, 
arg:any...):any... ",    "PYAPI2PyAPIevalLoader;",       "loader functions 
through Python"       ]
+[ "pyapi",     "prelude",      "command pyapi.prelude():void ",        
"PYAPI2PyAPIprelude;",  ""      ]
+[ "pyapi",     "subeval_aggr", "pattern pyapi.subeval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalAggr;", "grouped aggregates through 
Python"     ]
+[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str):any ",       
"PYAPI2PyAPIevalStdMap;",       "Execute a simple Python script returning a 
single value"       ]
+[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PYAPI2PyAPIevalStdMap;",       "Execute a simple 
Python script value"  ]
+[ "pyapimap",  "eval_aggr",    "pattern pyapimap.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalAggrMap;",      "grouped aggregates 
through Python"     ]
+[ "pyapimap",  "subeval_aggr", "pattern pyapimap.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PYAPI2PyAPIevalAggrMap;",      "grouped 
aggregates through Python"     ]
 [ "querylog",  "append",       "pattern querylog.append(q:str, pipe:str, 
usr:str, tick:timestamp):void ",      "QLOGappend;",  "Add a new query call to 
the query log" ]
 [ "querylog",  "call", "pattern querylog.call(tick1:timestamp, 
tick2:timestamp, arg:str, tuples:lng, xtime:lng, rtime:lng, cpu:int, 
iowait:int):void ",        "QLOGcall;",    "Add a new query call to the query 
log" ]
 [ "querylog",  "define",       "command querylog.define(q:str, pipe:str, 
size:int):void ",     "QLOGdefineNaive;",     "Noop operation, just marking the 
query"        ]
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
@@ -8040,14 +8040,14 @@ Ready.
 [ "batmtime",  "seconds",      "command 
batmtime.seconds(d:bat[:daytime]):bat[:int] ", 
"MTIMEdaytime_extract_seconds_bulk;",   ""      ]
 [ "batmtime",  "sql_seconds",  "command 
batmtime.sql_seconds(d:bat[:daytime]):bat[:int] ",     
"MTIMEdaytime_extract_sql_seconds_bulk;",       ""      ]
 [ "batmtime",  "year", "command batmtime.year(d:bat[:date]):bat[:int] ",       
"MTIMEdate_extract_year_bulk;", ""      ]
-[ "batpyapi",  "eval", "pattern batpyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PyAPIevalStd;",        "Execute a simple Python 
script value"  ]
-[ "batpyapi",  "eval_aggr",    "pattern batpyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalAggr;",       "grouped aggregates through 
Python"     ]
-[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str):any... ",     "PyAPIevalLoader;",     "loader functions through 
Python"       ]
-[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str, arg:any...):any... ", "PyAPIevalLoader;",     "loader functions 
through Python"       ]
-[ "batpyapi",  "subeval_aggr", "pattern batpyapi.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PyAPIevalAggr;",       "grouped 
aggregates through Python"     ]
-[ "batpyapimap",       "eval", "pattern batpyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",     "PyAPIevalStdMap;",     "Execute a simple Python 
script value"  ]
-[ "batpyapimap",       "eval_aggr",    "pattern 
batpyapimap.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ",        
"PyAPIevalAggrMap;",    "grouped aggregates through Python"     ]
-[ "batpyapimap",       "subeval_aggr", "pattern 
batpyapimap.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ",     
"PyAPIevalAggrMap;",    "grouped aggregates through Python"     ]
+[ "batpyapi",  "eval", "pattern batpyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PYAPI2PyAPIevalStd;",  "Execute a simple Python 
script value"  ]
+[ "batpyapi",  "eval_aggr",    "pattern batpyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalAggr;", "grouped aggregates through 
Python"     ]
+[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str):any... ",     "PYAPI2PyAPIevalLoader;",       "loader functions 
through Python"       ]
+[ "batpyapi",  "eval_loader",  "pattern batpyapi.eval_loader(fptr:ptr, 
expr:str, arg:any...):any... ", "PYAPI2PyAPIevalLoader;",       "loader 
functions through Python"       ]
+[ "batpyapi",  "subeval_aggr", "pattern batpyapi.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PYAPI2PyAPIevalAggr;", "grouped 
aggregates through Python"     ]
+[ "batpyapimap",       "eval", "pattern batpyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",     "PYAPI2PyAPIevalStdMap;",       "Execute a simple 
Python script value"  ]
+[ "batpyapimap",       "eval_aggr",    "pattern 
batpyapimap.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ",        
"PYAPI2PyAPIevalAggrMap;",      "grouped aggregates through Python"     ]
+[ "batpyapimap",       "subeval_aggr", "pattern 
batpyapimap.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ",     
"PYAPI2PyAPIevalAggrMap;",      "grouped aggregates through Python"     ]
 [ "batrapi",   "eval", "pattern batrapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ", "RAPIevalStd;", "Execute a simple R script value"       ]
 [ "batrapi",   "eval_aggr",    "pattern batrapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",    "RAPIevalAggr;",        "grouped aggregates through R" 
 ]
 [ "batrapi",   "subeval_aggr", "pattern batrapi.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ", "RAPIevalAggr;",        "grouped aggregates 
through R"  ]
@@ -10578,17 +10578,17 @@ Ready.
 [ "profiler",  "stop", "pattern profiler.stop():void ",        
"CMDstopProfiler;",     "Stop offline performance profiling"    ]
 [ "profiler",  "stoptrace",    "command profiler.stoptrace():void ",   
"CMDstopTrace;",        "Stop collecting trace information"     ]
 [ "profiler",  "stoptrace",    "command profiler.stoptrace(path:str):void ",   
"CMDstopTracePath;",    "Stop collecting trace information"     ]
-[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str):any ",  
"PyAPIevalStd;",        "Execute a simple Python script returning a single 
value"       ]
-[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalStd;",        "Execute a simple Python script 
value"  ]
-[ "pyapi",     "eval_aggr",    "pattern pyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",      "PyAPIevalAggr;",       "grouped aggregates through 
Python"     ]
-[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, 
expr:str):any... ",        "PyAPIevalLoader;",     "loader functions through 
Python"       ]
-[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, expr:str, 
arg:any...):any... ",    "PyAPIevalLoader;",     "loader functions through 
Python"       ]
-[ "pyapi",     "prelude",      "command pyapi.prelude():void ",        
"PyAPIprelude;",        ""      ]
-[ "pyapi",     "subeval_aggr", "pattern pyapi.subeval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalAggr;",       "grouped aggregates through 
Python"     ]
-[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str):any ",       
"PyAPIevalStdMap;",     "Execute a simple Python script returning a single 
value"       ]
-[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PyAPIevalStdMap;",     "Execute a simple Python 
script value"  ]
-[ "pyapimap",  "eval_aggr",    "pattern pyapimap.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PyAPIevalAggrMap;",    "grouped aggregates through 
Python"     ]
-[ "pyapimap",  "subeval_aggr", "pattern pyapimap.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PyAPIevalAggrMap;",    "grouped 
aggregates through Python"     ]
+[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str):any ",  
"PYAPI2PyAPIevalStd;",  "Execute a simple Python script returning a single 
value"       ]
+[ "pyapi",     "eval", "pattern pyapi.eval(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalStd;",  "Execute a simple Python script 
value"  ]
+[ "pyapi",     "eval_aggr",    "pattern pyapi.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",      "PYAPI2PyAPIevalAggr;", "grouped aggregates through 
Python"     ]
+[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, 
expr:str):any... ",        "PYAPI2PyAPIevalLoader;",       "loader functions 
through Python"       ]
+[ "pyapi",     "eval_loader",  "pattern pyapi.eval_loader(fptr:ptr, expr:str, 
arg:any...):any... ",    "PYAPI2PyAPIevalLoader;",       "loader functions 
through Python"       ]
+[ "pyapi",     "prelude",      "command pyapi.prelude():void ",        
"PYAPI2PyAPIprelude;",  ""      ]
+[ "pyapi",     "subeval_aggr", "pattern pyapi.subeval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalAggr;", "grouped aggregates through 
Python"     ]
+[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str):any ",       
"PYAPI2PyAPIevalStdMap;",       "Execute a simple Python script returning a 
single value"       ]
+[ "pyapimap",  "eval", "pattern pyapimap.eval(fptr:ptr, expr:str, 
arg:any...):any... ",        "PYAPI2PyAPIevalStdMap;",       "Execute a simple 
Python script value"  ]
+[ "pyapimap",  "eval_aggr",    "pattern pyapimap.eval_aggr(fptr:ptr, expr:str, 
arg:any...):any... ",   "PYAPI2PyAPIevalAggrMap;",      "grouped aggregates 
through Python"     ]
+[ "pyapimap",  "subeval_aggr", "pattern pyapimap.subeval_aggr(fptr:ptr, 
expr:str, arg:any...):any... ",        "PYAPI2PyAPIevalAggrMap;",      "grouped 
aggregates through Python"     ]
 [ "querylog",  "append",       "pattern querylog.append(q:str, pipe:str, 
usr:str, tick:timestamp):void ",      "QLOGappend;",  "Add a new query call to 
the query log" ]
 [ "querylog",  "call", "pattern querylog.call(tick1:timestamp, 
tick2:timestamp, arg:str, tuples:lng, xtime:lng, rtime:lng, cpu:int, 
iowait:int):void ",        "QLOGcall;",    "Add a new query call to the query 
log" ]
 [ "querylog",  "define",       "command querylog.define(q:str, pipe:str, 
size:int):void ",     "QLOGdefineNaive;",     "Noop operation, just marking the 
query"        ]
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
@@ -1939,6 +1939,7 @@ str batcalcRef;
 str batmalRef;
 str batmmathRef;
 str batmtimeRef;
+str batpyapi3Ref;
 str batpyapiRef;
 str batrapiRef;
 str batsqlRef;
@@ -2401,6 +2402,8 @@ InstrPtr pushZero(MalBlkPtr mb, InstrPtr
 str putName(const char *nme);
 str putNameLen(const char *nme, size_t len);
 str putRef;
+str pyapi3Ref;
+str pyapi3mapRef;
 str pyapiRef;
 str pyapimapRef;
 int qtop;
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -289,10 +289,17 @@ AC_ARG_ENABLE([rintegration],
 dft_pyintegration=auto
 AC_ARG_ENABLE([pyintegration],
        [AS_HELP_STRING([--enable-pyintegration],
-               [enable support for Python integration into MonetDB 
(default=auto)])],
+               [enable support for Python 2 integration into MonetDB 
(default=auto)])],
        [enable_pyintegration=$enableval],
        [enable_pyintegration=$dft_pyintegration])
 
+dft_py3integration=auto
+AC_ARG_ENABLE(py3integration,
+       AS_HELP_STRING([--enable-py3integration],
+               [enable support for Python 3 integration into MonetDB 
(default=auto)]),
+       enable_py3integration=$enableval,
+       enable_py3integration=$dft_py3integration)
+
 # The console is a direct client hooked onto the kernel with full
 # administrative privileges, bypassing any security checks.  It is
 # handy only during development.
@@ -1112,13 +1119,13 @@ AS_CASE([$have_python3],
        [
                PYTHON3="$have_python3"])
 
-AC_ARG_WITH([pyconfig],
-       [AS_HELP_STRING([--with-pyconfig=FILE], [python-config is installed as 
FILE])],
-       [have_pyconfig="$withval"])
+AC_ARG_WITH([py2config],
+       [AS_HELP_STRING([--with-py2config=FILE], [python2-config is installed 
as FILE])],
+       [have_py2config="$withval"])
 
-AC_ARG_WITH([pyversion],
-       [AS_HELP_STRING([--with-pyversion=FILE], [python is installed as 
FILE])],
-       [have_pyversion="$withval"])
+AC_ARG_WITH(py3config,
+       AS_HELP_STRING([--with-py3config=FILE], [python3-config is installed as 
FILE]),
+       have_py3config="$withval")
 
 # Figure out a default for PYTHON2 or PYTHON3
 AC_PATH_PROG([PYTHON], [python], [no], [$PATH])
@@ -1938,24 +1945,22 @@ AS_VAR_IF([enable_pyintegration], [no], 
                [/*], [XPATH="$enable_pyintegration"
                       enable_pyintegration=yes],
                [AC_MSG_ERROR([--enable-pyintegration value must be 
yes|no|auto|absolute path of python-config])])
-       AS_VAR_IF([have_pyconfig], [], [
-               AC_PATH_PROG([PYCMD], [python2-config], [no], [$PATH])
-               AS_VAR_IF([PYCMD], [no], [
+       AS_VAR_IF([have_py2config], [], [
+               AC_PATH_PROG([PY2CONFIG], [python2-config], [no], [$PATH])
+               AS_VAR_IF([PY2CONFIG], [no], [
                        AC_PATH_PROG([PYCMD2], [python-config], [no], [$PATH])
                        AS_VAR_IF([PYCMD2], [no], [
                                AS_VAR_IF([enable_pyintegration], [yes],
-                               [AC_MSG_ERROR([python-config library required 
for Python integration support])],
+                               [AC_MSG_ERROR([python2-config library required 
for Python integration support])],
                                [have_libpy="no"
-                               why_have_libpy="(python-config command not 
found)"
+                               why_have_libpy="(python2-config command not 
found)"
                                enable_pyintegration="no"
-                               disable_pyintegration="(python-config command 
not found)"
+                               disable_pyintegration="(python2-config command 
not found)"
                                ])
-                       ], [PYCMD="$PYCMD2"])
+                       ], [PY2CONFIG="$PYCMD2"])
                ], [])
-       ], [PYCMD="$have_pyconfig"])
-       AS_VAR_IF([have_pyversion], [],
-               [PYTHON_CMD=$PYTHON2],
-               [PYTHON_CMD=$have_pyversion])
+       ], [PY2CONFIG="$have_py2config"])
+       PYTHON_CMD=$PYTHON2
        NUMPYVER=`$PYTHON_CMD -c "import numpy; 
print(int(numpy.__version__.split('.').__getitem__(1)) >= 7)"`
        # check numpyconfig.h because autoconf tests includes by
        # compiling a small C program, and other numpy headers do
@@ -1978,7 +1983,7 @@ AS_VAR_IF([enable_pyintegration], [no], 
                         enable_pyintegration="no"
                         disable_pyintegration="(numpy/arrayobject.h not 
found)"])],
                [libpy_CFLAGS=`$PYTHON_CMD -c "from distutils.sysconfig import 
get_python_inc; import numpy; print(' -I' + get_python_inc() + ' -I' + 
numpy.get_include());"`
-                libpy_LIBS=`$PYCMD --ldflags`
+                libpy_LIBS=`$PY2CONFIG --ldflags`
                 HAVEPYTHONHEADER=`$PYTHON_CMD -c "import distutils.sysconfig, 
os; print(os.path.isfile(os.path.join(distutils.sysconfig.get_python_inc(), 
'Python.h')))"`
                 AS_VAR_IF([HAVEPYTHONHEADER], [True],
                        [have_libpy=yes
@@ -1993,6 +1998,90 @@ AS_VAR_IF([enable_pyintegration], [no], 
                                 disable_pyintegration="Python.h not 
found"])])])])
 AM_CONDITIONAL([HAVE_LIBPY], [test x"$have_libpy" != xno])
 
+
+# Python 3 UDFs
+have_libpy3=no
+if test "x$enable_py3integration" != xno; then
+       case "$enable_py3integration" in
+       yes|auto)
+               XPATH="$PATH"
+               ;;
+       /*)
+               XPATH="$enable_py3integration"
+               enable_py3integration=yes
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to