Changeset: 962cd064e2c1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/962cd064e2c1 Branch: manti Log Message:
merged from default diffs (truncated from 4980 to 300 lines): diff --git a/ChangeLog.Dec2025 b/ChangeLog.Dec2025 --- a/ChangeLog.Dec2025 +++ b/ChangeLog.Dec2025 @@ -1,6 +1,18 @@ # ChangeLog file for devel # This file is updated with Maddlog +* Fri Nov 6 2026 Sjoerd Mullender <[email protected]> +- There was a regression in the handling of the --dbextra=in-memory option. + Instead of keeping the "extra" farm (i.e. all transient BATs) fully + in memory, they were stored in a subdirectory called in-memory. +- There was a bug in handling backslash escapes in strings if the + backslash was immediately followed by a non-ASCII UTF-8 character. +- On Fedora 45, there was a change in how the ODBC drivers are configured. + The MonetDB ODBC driver now follows the new way of doing things. +- In Dec2025-SP4, the MonetDB-geom module was accidentally not built for + Fedora and RHEL 9 and 10. This has been corrected. The module cannot + be built for RHEL 8 since the required geos library is too old. + * Fri Oct 23 2026 Sjoerd Mullender <[email protected]> - Added an option --relative-dir to mclient to specify the directory for relative path names when using the ON CLIENT option in SQL queries. diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -62,7 +62,7 @@ # derivatives (CentOS, Scientific Linux), the geos library is not # available. However, the geos library is available in the Extra # Packages for Enterprise Linux (EPEL). -%if 0%{?fedpkgs} && (0%{?rhel} > 8) +%if 0%{?fedpkgs} && (%{!?rhel:10}%{?rhel} > 8) # By default create the MonetDB-geom package on Fedora %bcond_without geos %endif diff --git a/clients/odbc/driver/ODBCConvert.c b/clients/odbc/driver/ODBCConvert.c --- a/clients/odbc/driver/ODBCConvert.c +++ b/clients/odbc/driver/ODBCConvert.c @@ -190,7 +190,7 @@ parsemonthinterval(bignum_t *nval, SQL_I ival->intval.year_month.month = (SQLUINTEGER) (nval->val % 12); } -static short monthlengths[] = { +static const short monthlengths[] = { 0, /* dummy */ 31, /* Jan */ 29, /* Feb */ diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c --- a/clients/odbc/driver/ODBCUtil.c +++ b/clients/odbc/driver/ODBCUtil.c @@ -1232,7 +1232,7 @@ ODBCParsePV(const char *tab, const char res[i++] = *s; } /* raw strings prefix syntax is only supported by servers since Jun2020 (11.37) */ - if (dbc->major == 11 && dbc->minor >= 37) { + if ((dbc->major >= 56) || (dbc->major == 11 && dbc->minor >= 37)){ s = "' escape r'\\'"; } else { s = "' escape '\\\\'"; diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c --- a/clients/odbc/driver/SQLConnect.c +++ b/clients/odbc/driver/SQLConnect.c @@ -73,7 +73,7 @@ get_serverinfo(ODBCDbc *dbc) goto end; /* table sys.comments should exist since Mar2018 (11.29) */ - if (dbc->major == 11 && dbc->minor > 29) { + if ((dbc->major >= 56) || (dbc->major == 11 && dbc->minor > 29)) { dbc->has_comment = true; } else { mapi_close_handle(hdl); diff --git a/clients/odbc/driver/SQLExecDirect.c b/clients/odbc/driver/SQLExecDirect.c --- a/clients/odbc/driver/SQLExecDirect.c +++ b/clients/odbc/driver/SQLExecDirect.c @@ -52,7 +52,7 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL if (stmt->qtimeout != stmt->Dbc->qtimeout) { char buf[48]; snprintf(buf, sizeof(buf), "call sys.%s(%" PRIu64 ")", - (stmt->Dbc->major == 11 && stmt->Dbc->minor >= 37) + ((stmt->Dbc->major >= 56) || (stmt->Dbc->major == 11 && stmt->Dbc->minor >= 37)) ? "setquerytimeout" : "settimeout", (uint64_t) stmt->qtimeout); if (mapi_query_handle(hdl, buf) == MOK) diff --git a/clients/odbc/driver/SQLExecute.c b/clients/odbc/driver/SQLExecute.c --- a/clients/odbc/driver/SQLExecute.c +++ b/clients/odbc/driver/SQLExecute.c @@ -480,7 +480,7 @@ MNDBExecute(ODBCStmt *stmt) } if (stmt->qtimeout != stmt->Dbc->qtimeout) { snprintf(query, querylen, "call sys.%s(%" PRIu64 ")", - (stmt->Dbc->major == 11 && stmt->Dbc->minor >= 37) + ((stmt->Dbc->major >= 56) || (stmt->Dbc->major == 11 && stmt->Dbc->minor >= 37)) ? "setquerytimeout" : "settimeout", (uint64_t) stmt->qtimeout); if (mapi_query_handle(hdl, query) == MOK) diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c --- a/clients/odbc/driver/SQLGetInfo.c +++ b/clients/odbc/driver/SQLGetInfo.c @@ -378,7 +378,10 @@ MNDBGetInfo(ODBCDbc *dbc, break; case SQL_CREATE_VIEW: nValue = SQL_CV_CREATE_VIEW | SQL_CV_CHECK_OPTION; - /* SQL_CV_CASCADE | SQL_CV_LOCAL */ + /* CREATE LOCAL TEMPORARY VIEW is supported since 11.53 (Mar2025) */ + if ((dbc->major >= 56) || (dbc->major == 11 && dbc->minor >= 53)) + nValue = nValue | SQL_CV_LOCAL; + /* SQL_CV_CASCADE */ break; case SQL_CURSOR_COMMIT_BEHAVIOR: case SQL_CURSOR_ROLLBACK_BEHAVIOR: diff --git a/clients/odbc/tests/ODBCgetInfo.c b/clients/odbc/tests/ODBCgetInfo.c --- a/clients/odbc/tests/ODBCgetInfo.c +++ b/clients/odbc/tests/ODBCgetInfo.c @@ -395,7 +395,7 @@ const struct { .info = SQL_CREATE_VIEW, .name = "SQL_CREATE_VIEW", .type = INTEGER, - .i = SQL_CV_CREATE_VIEW | SQL_CV_CHECK_OPTION, + .i = SQL_CV_CREATE_VIEW | SQL_CV_CHECK_OPTION | SQL_CV_LOCAL, }, { .info = SQL_CURSOR_COMMIT_BEHAVIOR, diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake --- a/cmake/monetdb-defines.cmake +++ b/cmake/monetdb-defines.cmake @@ -52,10 +52,6 @@ function(monetdb_configure_defines) check_symbol_exists("gethostbyname" "netdb.h" HAVE_NETDB_H) check_symbol_exists("setsockopt" "sys/socket.h" HAVE_SYS_SOCKET_H) check_symbol_exists("gettimeofday" "sys/time.h" HAVE_SYS_TIME_H) - # Linux specific, in the future, it might be ported to other platforms - check_symbol_exists("getaddrinfo" "sys/types.h;sys/socket.h;netdb.h" UNIX_GETADDRINFO) - check_symbol_exists("getaddrinfo" "ws2tcpip.h" WIN_GETADDRINFO) - #check_symbol_exists("WSADATA" "winsock2.h" HAVE_WINSOCK_H) check_symbol_exists("fdatasync" "unistd.h" HAVE_FDATASYNC) # Some libc versions on Linux distributions don't have it check_symbol_exists("accept4" @@ -83,7 +79,7 @@ function(monetdb_configure_defines) check_symbol_exists("strerror_s" "string.h" HAVE_STRERROR_S) check_symbol_exists("strerror_r" "string.h" HAVE_STRERROR_R) check_function_exists("lockf" HAVE_LOCKF) - check_symbol_exists("madvise" "sys/mman.h" HAVE_MADVISE) +# check_symbol_exists("madvise" "sys/mman.h" HAVE_MADVISE) check_function_exists("malloc_info" HAVE_MALLOC_INFO) check_function_exists("mallinfo2" HAVE_MALLINFO2) check_symbol_exists("mremap" "sys/mman.h" HAVE_MREMAP) @@ -97,7 +93,7 @@ function(monetdb_configure_defines) check_symbol_exists("posix_fadvise" "fcntl.h" HAVE_POSIX_FADVISE) # Some POSIX systems don't have it (e.g. Macos) check_symbol_exists("posix_fallocate" "fcntl.h" HAVE_POSIX_FALLOCATE) - check_symbol_exists("posix_madvise" "sys/mman.h" HAVE_POSIX_MADVISE) +# check_symbol_exists("posix_madvise" "sys/mman.h" HAVE_POSIX_MADVISE) check_function_exists("setsid" HAVE_SETSID) check_function_exists("sockatmark" HAVE_SOCKATMARK) check_function_exists("shutdown" HAVE_SHUTDOWN) @@ -110,7 +106,6 @@ function(monetdb_configure_defines) check_function_exists("strptime" HAVE_STRPTIME) check_symbol_exists("sysconf" "unistd.h" HAVE_SYSCONF) check_function_exists("task_info" HAVE_TASK_INFO) - check_function_exists("times" HAVE_TIMES) check_function_exists("uname" HAVE_UNAME) cmake_push_check_state() set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}") @@ -190,12 +185,6 @@ macro(monetdb_macro_variables) set(SOCKET_LIBRARIES "ws2_32") endif() - if(UNIX_GETADDRINFO) - set(HAVE_GETADDRINFO 1) - endif() - if(WIN_GETADDRINFO) - set(HAVE_GETADDRINFO 1) - endif() # compiler options, profiling (google perf tools), valgrind # Check that posix regex is available when pcre is not found # "monetdb5/module/mal/pcre.c" assumes the regex library is available @@ -204,12 +193,6 @@ macro(monetdb_macro_variables) message(FATAL_ERROR "PCRE library or GNU regex library not found but required for MonetDB5") endif() - set(MAPI_PORT 50000) - set(MAPI_PORT_STR "${MAPI_PORT}") - - set(DIR_SEP "/") - set(PATH_SEP ":") - set(DIR_SEP_STR "/") set(SO_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}") set(SO_EXT "${CMAKE_SHARED_LIBRARY_SUFFIX}") @@ -241,15 +224,6 @@ macro(monetdb_configure_sizes) check_type_size(size_t SIZEOF_SIZE_T LANGUAGE C) set(SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) check_type_size(ssize_t SIZEOF_SSIZE_T LANGUAGE C) - if(NOT HAVE_SIZEOF_SSIZE_T) - # Set a default value - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(ssize_t "int64_t") - else() - set(ssize_t "int32_t") - endif() - set(SIZEOF_SSIZE_T ${CMAKE_SIZEOF_VOID_P}) - endif() check_type_size(char SIZEOF_CHAR LANGUAGE C) check_type_size(short SIZEOF_SHORT LANGUAGE C) check_type_size(int SIZEOF_INT LANGUAGE C) diff --git a/ctest/cmake/CMakeLists.txt b/ctest/cmake/CMakeLists.txt --- a/ctest/cmake/CMakeLists.txt +++ b/ctest/cmake/CMakeLists.txt @@ -32,9 +32,6 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/dete include(${CMAKE_CURRENT_SOURCE_DIR}/detect-valgrind.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/detect-geos.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/detect-gdal.cmake) -include(${CMAKE_CURRENT_SOURCE_DIR}/detect-unixgetaddrinfo.cmake) -include(${CMAKE_CURRENT_SOURCE_DIR}/detect-wingetaddrinfo.cmake) -include(${CMAKE_CURRENT_SOURCE_DIR}/detect-getaddrinfo.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/detect-pthreadinit.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/detect-pthreadkill.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/detect-pthreadsig.cmake) diff --git a/ctest/cmake/detect-getaddrinfo.cmake b/ctest/cmake/detect-getaddrinfo.cmake deleted file mode 100644 --- a/ctest/cmake/detect-getaddrinfo.cmake +++ /dev/null @@ -1,50 +0,0 @@ -#[[ -# SPDX-License-Identifier: MPL-2.0 -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at https://mozilla.org/MPL/2.0/. -# -# For copyright information, see the file debian/copyright. -#]] - -if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - get_os_release_info(LINUX_DISTRO LINUX_DISTRO_VERSION) -endif() - -if (${LINUX_DISTRO} STREQUAL "debian") - if(${LINUX_DISTRO_VERSION} STREQUAL "9") - set(DETECT "0") - set(UNDETECT "1") - endif() - if(${LINUX_DISTRO_VERSION} STREQUAL "10") - set(DETECT "0") - set(UNDETECT "1") - endif() -elseif (${LINUX_DISTRO} STREQUAL "ubuntu") - if(${LINUX_DISTRO_VERSION} VERSION_GREATER_EQUAL "18") - set(DETECT "0") - set(UNDETECT "1") - endif() -elseif(${LINUX_DISTRO} STREQUAL "fedora") - if(${LINUX_DISTRO_VERSION} VERSION_GREATER_EQUAL "30") - set(DETECT "0") - set(UNDETECT "1") - endif() -else() - message(ERROR "Linux distro: ${LINUX_DISTRO} not known") - message(ERROR "Linux distro version: ${LINUX_DISTRO_VERSION} not known") -endif() - -configure_file(test_detect_getaddrinfo.c.in - ${CMAKE_CURRENT_BINARY_DIR}/test_detect_getaddrinfo.c - @ONLY) - -add_executable(test_detect_getaddrinfo) -target_sources(test_detect_getaddrinfo - PRIVATE - ${CMAKE_CURRENT_BINARY_DIR}/test_detect_getaddrinfo.c) -target_link_libraries(test_detect_getaddrinfo - PRIVATE - monetdb_config_header) -add_test(NAME testDetectGetaddrinfo COMMAND test_detect_getaddrinfo) diff --git a/ctest/cmake/detect-unixgetaddrinfo.cmake b/ctest/cmake/detect-unixgetaddrinfo.cmake deleted file mode 100644 --- a/ctest/cmake/detect-unixgetaddrinfo.cmake +++ /dev/null @@ -1,47 +0,0 @@ -#[[ -# SPDX-License-Identifier: MPL-2.0 -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at https://mozilla.org/MPL/2.0/. -# -# For copyright information, see the file debian/copyright. -#]] - -if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - get_os_release_info(LINUX_DISTRO LINUX_DISTRO_VERSION) -endif() - -if (${LINUX_DISTRO} STREQUAL "debian") - if(${LINUX_DISTRO_VERSION} STREQUAL "9") - set(DETECT "0") - set(UNDETECT "1") - endif() - if(${LINUX_DISTRO_VERSION} STREQUAL "10") - set(DETECT "0") - set(UNDETECT "1") - endif() -elseif (${LINUX_DISTRO} STREQUAL "ubuntu") _______________________________________________ checkin-list mailing list -- [email protected] To unsubscribe send an email to [email protected]
