MonetDB: default - Add script to create case conversion tables.
Changeset: 52d49237cf83 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/52d49237cf83 Added Files: misc/python/unicaseconvtabs.py Modified Files: gdk/gdk_string.c Branch: default Log Message: Add script to create case conversion tables. Also, add indexes to specialcase table for easy reference. diffs (truncated from 527 to 300 lines): diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c --- a/gdk/gdk_string.c +++ b/gdk/gdk_string.c @@ -1477,153 +1477,155 @@ GDKanalytical_str_group_concat(BAT *r, B * Only for the casefold table, if the converted codepoint is negative, * it is actually an escape into the specialcase table. The absolute * value is the index. */ + +/* These tables were created using the code in unicaseconvtabs.py */ static const char *const specialcase[] = { NULL, - "ss", - "i\xCC\x87", - "\xCA\xBCn", - "j\xCC\x8C", - "\xCE\xB9\xCC\x88\xCC\x81", - "\xCF\x85\xCC\x88\xCC\x81", - "\xD5\xA5\xD6\x82", - "h\xCC\xB1", - "t\xCC\x88", - "w\xCC\x8A", - "y\xCC\x8A", - "a\xCA\xBE", - "\xCF\x85\xCC\x93", - "\xCF\x85\xCC\x93\xCC\x80", - "\xCF\x85\xCC\x93\xCC\x81", - "\xCF\x85\xCC\x93\xCD\x82", - "\xE1\xBC\x80\xCE\xB9", - "\xE1\xBC\x81\xCE\xB9", - "\xE1\xBC\x82\xCE\xB9", - "\xE1\xBC\x83\xCE\xB9", - "\xE1\xBC\x84\xCE\xB9", - "\xE1\xBC\x85\xCE\xB9", - "\xE1\xBC\x86\xCE\xB9", - "\xE1\xBC\x87\xCE\xB9", - "\xE1\xBC\xA0\xCE\xB9", - "\xE1\xBC\xA1\xCE\xB9", - "\xE1\xBC\xA2\xCE\xB9", - "\xE1\xBC\xA3\xCE\xB9", - "\xE1\xBC\xA4\xCE\xB9", - "\xE1\xBC\xA5\xCE\xB9", - "\xE1\xBC\xA6\xCE\xB9", - "\xE1\xBC\xA7\xCE\xB9", - "\xE1\xBD\xA0\xCE\xB9", - "\xE1\xBD\xA1\xCE\xB9", - "\xE1\xBD\xA2\xCE\xB9", - "\xE1\xBD\xA3\xCE\xB9", - "\xE1\xBD\xA4\xCE\xB9", - "\xE1\xBD\xA5\xCE\xB9", - "\xE1\xBD\xA6\xCE\xB9", - "\xE1\xBD\xA7\xCE\xB9", - "\xE1\xBD\xB0\xCE\xB9", - "\xCE\xB1\xCE\xB9", - "\xCE\xAC\xCE\xB9", - "\xCE\xB1\xCD\x82", - "\xCE\xB1\xCD\x82\xCE\xB9", - "\xE1\xBD\xB4\xCE\xB9", - "\xCE\xB7\xCE\xB9", - "\xCE\xAE\xCE\xB9", - "\xCE\xB7\xCD\x82", - "\xCE\xB7\xCD\x82\xCE\xB9", - "\xCE\xB9\xCC\x88\xCC\x80", - "\xCE\xB9\xCD\x82", - "\xCE\xB9\xCC\x88\xCD\x82", - "\xCF\x85\xCC\x88\xCC\x80", - "\xCF\x81\xCC\x93", - "\xCF\x85\xCD\x82", - "\xCF\x85\xCC\x88\xCD\x82", - "\xE1\xBD\xBC\xCE\xB9", - "\xCF\x89\xCE\xB9", - "\xCF\x8E\xCE\xB9", - "\xCF\x89\xCD\x82", - "\xCF\x89\xCD\x82\xCE\xB9", - "ff", - "fi", - "fl", - "ffi", - "ffl", - "st", - "\xD5\xB4\xD5\xB6", - "\xD5\xB4\xD5\xA5", - "\xD5\xB4\xD5\xAB", - "\xD5\xBE\xD5\xB6", - "\xD5\xB4\xD5\xAD", - "SS", - "FF", - "FI", - "FL", - "FFI", - "FFL", - "ST", - "\xD4\xB5\xD5\x92", - "\xD5\x84\xD5\x86", - "\xD5\x84\xD4\xB5", - "\xD5\x84\xD4\xBB", - "\xD5\x8E\xD5\x86", - "\xD5\x84\xD4\xBD", - "\xCA\xBCN", - "\xCE\x99\xCC\x88\xCC\x81", - "\xCE\xA5\xCC\x88\xCC\x81", - "J\xCC\x8C", - "H\xCC\xB1", - "T\xCC\x88", - "W\xCC\x8A", - "Y\xCC\x8A", - "A\xCA\xBE", - "\xCE\xA5\xCC\x93", - "\xCE\xA5\xCC\x93\xCC\x80", - "\xCE\xA5\xCC\x93\xCC\x81", - "\xCE\xA5\xCC\x93\xCD\x82", - "\xCE\x91\xCD\x82", - "\xCE\x97\xCD\x82", - "\xCE\x99\xCC\x88\xCC\x80", - "\xCE\x99\xCD\x82", - "\xCE\x99\xCC\x88\xCD\x82", - "\xCE\xA5\xCC\x88\xCC\x80", - "\xCE\xA1\xCC\x93", - "\xCE\xA5\xCD\x82", - "\xCE\xA5\xCC\x88\xCD\x82", - "\xCE\xA9\xCD\x82", - "\xE1\xBC\x88\xCE\x99", - "\xE1\xBC\x89\xCE\x99", - "\xE1\xBC\x8A\xCE\x99", - "\xE1\xBC\x8B\xCE\x99", - "\xE1\xBC\x8C\xCE\x99", - "\xE1\xBC\x8D\xCE\x99", - "\xE1\xBC\x8E\xCE\x99", - "\xE1\xBC\x8F\xCE\x99", - "\xE1\xBC\xA8\xCE\x99", - "\xE1\xBC\xA9\xCE\x99", - "\xE1\xBC\xAA\xCE\x99", - "\xE1\xBC\xAB\xCE\x99", - "\xE1\xBC\xAC\xCE\x99", - "\xE1\xBC\xAD\xCE\x99", - "\xE1\xBC\xAE\xCE\x99", - "\xE1\xBC\xAF\xCE\x99", - "\xE1\xBD\xA8\xCE\x99", - "\xE1\xBD\xA9\xCE\x99", - "\xE1\xBD\xAA\xCE\x99", - "\xE1\xBD\xAB\xCE\x99", - "\xE1\xBD\xAC\xCE\x99", - "\xE1\xBD\xAD\xCE\x99", - "\xE1\xBD\xAE\xCE\x99", - "\xE1\xBD\xAF\xCE\x99", - "\xCE\x91\xCE\x99", - "\xCE\x97\xCE\x99", - "\xCE\xA9\xCE\x99", - "\xE1\xBE\xBA\xCE\x99", - "\xCE\x86\xCE\x99", - "\xE1\xBF\x8A\xCE\x99", - "\xCE\x89\xCE\x99", - "\xE1\xBF\xBA\xCE\x99", - "\xCE\x8F\xCE\x99", - "\xCE\x91\xCD\x82\xCE\x99", - "\xCE\x97\xCD\x82\xCE\x99", - "\xCE\xA9\xCD\x82\xCE\x99", +
MonetDB: odbc-tls - Merge 'default' into 'odbc-tls'
Changeset: 0de4c922d3cc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/0de4c922d3cc Modified Files: clients/NT/mclient.bat.in clients/NT/msqldump.bat.in clients/Tests/exports.stable.out clients/odbc/driver/ODBCUtil.c monetdb5/NT/M5server.bat.in sql/test/BugTracker-2009/Tests/select_X_where_bla_EQ_whatever.SF-2825974.test Branch: odbc-tls Log Message: Merge 'default' into 'odbc-tls' diffs (truncated from 36644 to 300 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -825,3 +825,5 @@ dcc8c702e685a4faf21ccf663028d1bc3d1165d1 dcc8c702e685a4faf21ccf663028d1bc3d1165d1 Dec2023_SP1_release d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_7 d656785f49ee62c19705722aa6b7c171904c64d5 Dec2023_SP2_release +9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_9 +9a694c41042503a22d6c92aeab5bc4ca1912b62e Dec2023_SP3_release diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ # ChangeLog file for devel # This file is updated with Maddlog +* Wed May 8 2024 Sjoerd Mullender +- The shared library (.dll aka .so files) now have the version number + as part of the name. This should allow the building of compatibility + versions that can be installed in parallel to the latest version. +- Some of the Debian/Ubuntu packages have been renamed. The old monetdb5 + names have been changed to plain monetdb, and libmonetdb5-server-* + packages have been renamed monetdb-*. +- The names of some of the provided RPM files have been changed. + References to the old MonetDB5 name have been removed. All packages + are now just MonetDB. + +* Wed May 8 2024 Niels Nes +- Add support for select exp, count(*) group by 1 order by 1; ie. using + numeric references Added support for group by all and order by all. The + later is ordering on all columns of the selection. The group by all + finds all expressions from the selections which aren't aggregations + and groups on those. All can also be replaced by '*'. + diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -8,8 +8,12 @@ # Copyright August 2008 - 2023 MonetDB B.V.; # Copyright 1997 - July 2008 CWI. -%global name MonetDB %global version 11.50.0 + +%bcond_with compat + +%global name MonetDB%{?with_compat:%version} + %{!?buildno: %global buildno %(date +%Y%m%d)} # Use bcond_with to add a --with option; i.e., "without" is default. @@ -57,7 +61,7 @@ # available. However, the geos library is available in the Extra # Packages for Enterprise Linux (EPEL). %if %{fedpkgs} && (0%{?rhel} != 7) && (0%{?rhel} != 8) -# By default create the MonetDB-geom-MonetDB5 package on Fedora and RHEL 7 +# By default create the MonetDB-geom package on Fedora and RHEL 7 %bcond_without geos %endif @@ -91,7 +95,7 @@ Group: Applications/Databases License: MPL-2.0 URL: https://www.monetdb.org/ BugURL: https://github.com/MonetDB/MonetDB/issues -Source: https://www.monetdb.org/downloads/sources/Dec2023-SP2/%{name}-%{version}.tar.bz2 +Source: https://www.monetdb.org/downloads/sources/Dec2023-SP3/MonetDB-%{version}.tar.bz2 # The Fedora packaging document says we need systemd-rpm-macros for # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7 @@ -117,7 +121,9 @@ BuildRequires: unixODBC-devel BuildRequires: readline-devel %else BuildRequires: pkgconfig(bzip2) +%if %{without compat} BuildRequires: pkgconfig(odbc) +%endif BuildRequires: pkgconfig(readline) %endif %if %{with fits} @@ -154,8 +160,8 @@ BuildRequires: pkgconfig(libR) # BuildRequires: pkgconfig(valgrind)# -DWITH_VALGRIND=ON %if (0%{?fedora} >= 22) -Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release} -Recommends: MonetDB5-server%{?_isa} = %{version}-%{release} +Recommends: %{name}-SQL%{?_isa} = %{version}-%{release} +Recommends: %{name}-server%{?_isa} = %{version}-%{release} Suggests: %{name}-client%{?_isa} = %{version}-%{release} %endif @@ -167,8 +173,8 @@ accelerators. It also has an SQL front This package contains the core components of MonetDB in the form of a single shared library. If you want to use MonetDB, you will certainly -need this package, but you will also need at least the MonetDB5-server -package, and most likely also %{name}-SQL-server5, as well as one or +need this package, but you will also need at least the %{name}-server +package, and most likely also %{name}-SQL, as well as one or more client packages. %ldconfig_scriptlets @@ -176,8 +182,9 @@ more client packages. %files %license COPYING %defattr(-,root,root) -%{_libdir}/libbat.so.* +%{_libdir}/libbat*.so.* +%if %{without compat} %package devel Summary: MonetDB development files Group: Applications/Databases @@ -202,8 +209,9 @@ functionality of MonetDB. %{_includedir}/monetdb/mstring.h %exclude %{_includedir}/monetdb/monetdbe.h %{_includedir}/monetdb/monet*.h -%{_libdir}/libbat.so +%{_libdir}/libbat*.so %{_libdir}/pkgconfig/monetdb-gdk.pc +%endif %
MonetDB: odbc-tls - Add MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT ...
Changeset: 4f9dc3d1505d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/4f9dc3d1505d Modified Files: clients/mapilib/msettings.c clients/mapilib/msettings.h Branch: odbc-tls Log Message: Add MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT to msettings diffs (77 lines): diff --git a/clients/mapilib/msettings.c b/clients/mapilib/msettings.c --- a/clients/mapilib/msettings.c +++ b/clients/mapilib/msettings.c @@ -86,6 +86,7 @@ by_name[] = { { .name="certhash", .parm=MP_CERTHASH }, { .name="clientcert", .parm=MP_CLIENTCERT }, { .name="clientkey", .parm=MP_CLIENTKEY }, + { .name="connect_timeout", .parm=MP_CONNECT_TIMEOUT }, { .name="database", .parm=MP_DATABASE }, { .name="host", .parm=MP_HOST }, { .name="language", .parm=MP_LANGUAGE }, @@ -93,6 +94,7 @@ by_name[] = { { .name="password", .parm=MP_PASSWORD }, { .name="port", .parm=MP_PORT }, { .name="replysize", .parm=MP_REPLYSIZE }, + { .name="reply_timeout", .parm=MP_REPLY_TIMEOUT }, { .name="fetchsize", .parm=MP_REPLYSIZE }, { .name="schema", .parm=MP_SCHEMA }, { .name="sock", .parm=MP_SOCK }, @@ -140,6 +142,7 @@ mparm_name(mparm parm) case MP_CERTHASH: return "certhash"; case MP_CLIENTCERT: return "clientcert"; case MP_CLIENTKEY: return "clientkey"; + case MP_CONNECT_TIMEOUT: return "connect_timeout"; case MP_DATABASE: return "database"; case MP_HOST: return "host"; case MP_LANGUAGE: return "language"; @@ -147,7 +150,8 @@ mparm_name(mparm parm) case MP_MAPTOLONGVARCHAR: return "map_to_long_varchar"; case MP_PASSWORD: return "password"; case MP_PORT: return "port"; - case MP_REPLYSIZE: return "replysize"; + case MP_REPLY_TIMEOUT: return "reply_timeout"; // underscore present means specific to this client library + case MP_REPLYSIZE: return "replysize"; // no underscore means mandatory for all client libraries case MP_SCHEMA: return "schema"; case MP_SOCK: return "sock"; case MP_SOCKDIR: return "sockdir"; @@ -194,6 +198,8 @@ struct msettings { long timezone; long replysize; long map_to_long_varchar; + long connect_timeout; + long reply_timeout; long dummy_end_long; // Must match EXACTLY the order of enum mparm diff --git a/clients/mapilib/msettings.h b/clients/mapilib/msettings.h --- a/clients/mapilib/msettings.h +++ b/clients/mapilib/msettings.h @@ -48,12 +48,18 @@ typedef enum mparm { // bool MP_TLS = MP__BOOL_START, MP_AUTOCOMMIT, + // Note: if you change anything about this enum whatsoever, make sure to + // make the corresponding change to struct msettings in msettings.c as well. // long MP_PORT = MP__LONG_START, MP_TIMEZONE, MP_REPLYSIZE, MP_MAPTOLONGVARCHAR, // specific to ODBC + MP_CONNECT_TIMEOUT, + MP_REPLY_TIMEOUT, + // Note: if you change anything about this enum whatsoever, make sure to + // make the corresponding change to struct msettings in msettings.c as well. // string MP_SOCK = MP__STRING_START, @@ -72,6 +78,8 @@ typedef enum mparm { MP_SCHEMA, // TODO implement this MP_BINARY, MP_LOGFILE, + // Note: if you change anything about this enum whatsoever, make sure to + // make the corresponding change to struct msettings in msettings.c as well. // !! Make sure to keep them all below MP__MAX !! } mparm; ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: odbc-tls - Obey MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT...
Changeset: 9f2d3d897cb3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9f2d3d897cb3 Modified Files: clients/mapilib/connect.c clients/mapilib/connect_unix.c common/stream/socket_stream.c Branch: odbc-tls Log Message: Obey MP_CONNECT_TIMEOUT and MP_REPLY_TIMEOUT in libmapi diffs (132 lines): diff --git a/clients/mapilib/connect.c b/clients/mapilib/connect.c --- a/clients/mapilib/connect.c +++ b/clients/mapilib/connect.c @@ -144,6 +144,17 @@ establish_connection(Mapi mid) msg = mapi_handshake(mid); } + // Switch from MP_CONNECT_TIMEOUT to MP_REPLY_TIMEOUT + if (msg == MOK) { + long connect_timeout = msetting_long(mid->settings, MP_CONNECT_TIMEOUT); + long reply_timeout = msetting_long(mid->settings, MP_REPLY_TIMEOUT); + if (connect_timeout > 0 || reply_timeout > 0) { + if (reply_timeout < 0) + reply_timeout = 0; + msg = mapi_timeout(mid, reply_timeout); + } + } + return msg; } @@ -153,6 +164,7 @@ connect_socket(Mapi mid) assert(!mid->connected); const char *sockname = msettings_connect_unix(mid->settings); const char *tcp_host = msettings_connect_tcp(mid->settings); + long timeout = msetting_long(mid->settings, MP_CONNECT_TIMEOUT); assert(*sockname || *tcp_host); do { @@ -165,6 +177,11 @@ connect_socket(Mapi mid) return mid->error; } while (0); + // the socket code may have set SO_SNDTIMEO and SO_RCVTIMEO but + // the mapi layer doesn't know this yet. + if (timeout > 0) + mapi_timeout(mid, timeout); + mid->connected = true; return MOK; } @@ -293,6 +310,8 @@ connect_socket_tcp(Mapi mid) static SOCKET connect_socket_tcp_addr(Mapi mid, struct addrinfo *info) { + long timeout = msetting_long(mid->settings, MP_CONNECT_TIMEOUT); + if (mid->tracelog) { char addrbuf[100] = {0}; const char *addrtext; @@ -332,6 +351,22 @@ connect_socket_tcp_addr(Mapi mid, struct (void) fcntl(s, F_SETFD, FD_CLOEXEC); #endif + if (timeout > 0) { + struct timeval tv = { + .tv_sec = timeout / 1000, + .tv_usec = timeout % 1000, + }; + if ( + setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) == SOCKET_ERROR + || setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) == SOCKET_ERROR + ) { + closesocket(s); + return mapi_printError( + mid, __func__, MERROR, + "could not set connect timeout: %s", strerror(errno)); + } + } + // cast addrlen to int to satisfy Windows. if (connect(s, info->ai_addr, (int)info->ai_addrlen) == SOCKET_ERROR) { mapi_printError( diff --git a/clients/mapilib/connect_unix.c b/clients/mapilib/connect_unix.c --- a/clients/mapilib/connect_unix.c +++ b/clients/mapilib/connect_unix.c @@ -130,15 +130,16 @@ connect_socket_unix(Mapi mid) { const char *sockname = msettings_connect_unix(mid->settings); assert (*sockname != '\0'); + long timeout = msetting_long(mid->settings, MP_CONNECT_TIMEOUT); - mapi_log_record(mid, "CONN", "Connecting to Unix domain socket %s", sockname); + mapi_log_record(mid, "CONN", "Connecting to Unix domain socket %s with timeout %ld", sockname, timeout); struct sockaddr_un userver; if (strlen(sockname) >= sizeof(userver.sun_path)) { return mapi_printError(mid, __func__, MERROR, "path name '%s' too long", sockname); } - // Create the socket, taking care of CLOEXEC + // Create the socket, taking care of CLOEXEC and SNDTIMEO #ifdef SOCK_CLOEXEC int s = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); @@ -154,6 +155,22 @@ connect_socket_unix(Mapi mid) (void) fcntl(s, F_SETFD, FD_CLOEXEC); #endif + if (timeout > 0) { + struct timeval tv = { + .tv_sec = timeout / 1000, + .tv_usec = timeout % 1000, + }; + if ( + setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)) == SOCKET_ERROR + || setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) == SOCKET_ERROR + ) { + closesocket(s); + return mapi_printError( + mid, __func__, MERROR, + "could not set connect timeout: %s", strerror(errno)); + } + } + // Attempt to connect userver = (struct sockaddr_un) { diff --git a/common/stream/socket_stream.c b/com
MonetDB: odbc-tls - Add error handling to get_serverinfo
Changeset: 393fe95a5c79 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/393fe95a5c79 Modified Files: clients/odbc/driver/SQLConnect.c Branch: odbc-tls Log Message: Add error handling to get_serverinfo diffs (72 lines): 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 @@ -82,14 +82,15 @@ attr_setting_lookup(const char *attr_nam } -static void +static SQLRETURN get_serverinfo(ODBCDbc *dbc) { - MapiHdl hdl; + MapiHdl hdl = NULL; + SQLRETURN rc; // intentionally uninitialized char *n, *v; if ((hdl = mapi_query(dbc->mid, "select name, value from sys.env() where name in ('monet_version', 'gdk_dbname', 'max_clients', 'raw_strings')")) == NULL) - return; + goto end; dbc->raw_strings = false; while (mapi_fetch_row(hdl)) { n = mapi_fetch_field(hdl, 0); @@ -107,15 +108,27 @@ get_serverinfo(ODBCDbc *dbc) msetting_set_string(dbc->settings, MP_DATABASE, v); } } + if (mapi_error(dbc->mid)) + goto end; mapi_close_handle(hdl); if ((hdl = mapi_query(dbc->mid, "select id from sys._tables where name = 'comments' and schema_id = (select id from sys.schemas where name = 'sys')")) == NULL) - return; + goto end; + if (mapi_error(dbc->mid)) + goto end; n = NULL; while (mapi_fetch_row(hdl)) { n = mapi_fetch_field(hdl, 0); } dbc->has_comment = n != NULL; + + rc = SQL_SUCCESS; +end: + if (mapi_error(dbc->mid)) { + addDbcError(dbc, "08001", mapi_error_str(dbc->mid), 0); + rc = SQL_ERROR; + } mapi_close_handle(hdl); + return rc; } @@ -496,7 +509,9 @@ end: SQLRETURN MNDBConnectSettings(ODBCDbc *dbc, const char *dsn, msettings *settings) { + SQLRETURN rc; msettings *clone = msettings_clone(settings); + if (clone == NULL) { addDbcError(dbc, "HY001", NULL, 0); return SQL_ERROR; @@ -529,7 +544,9 @@ MNDBConnectSettings(ODBCDbc *dbc, const dbc->Connected = true; - get_serverinfo(dbc); + rc = get_serverinfo(dbc); + if (!SQL_SUCCEEDED(rc)) + return rc; /* set timeout after we're connected */ mapi_timeout(dbc->mid, dbc->sql_attr_connection_timeout * 1000); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: odbc-tls - Add timeout settings to connect string
Changeset: abf9f671ebf7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/abf9f671ebf7 Modified Files: clients/odbc/driver/SQLConnect.c Branch: odbc-tls Log Message: Add timeout settings to connect string diffs (12 lines): 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 @@ -64,6 +64,8 @@ const struct attr_setting attr_settings[ { "TIMEZONE", "Time Zone", MP_TIMEZONE }, { "REPLYSIZE", "Reply Size", MP_REPLYSIZE }, { "LOGFILE", "Log File", MP_LOGFILE }, + { "LOGINTIMEOUT", "Login Timeout", MP_CONNECT_TIMEOUT}, + { "CONNECTIONTIMEOUT", "Connection Timeout", MP_REPLY_TIMEOUT}, }; const int attr_setting_count = sizeof(attr_settings) / sizeof(attr_settings[0]); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: odbc-tls - Get rid of sql_attr_connection_timeout
Changeset: 54f574debd57 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/54f574debd57 Modified Files: clients/odbc/driver/ODBCDbc.h clients/odbc/driver/SQLConnect.c clients/odbc/driver/SQLExecDirect.c clients/odbc/driver/SQLExecute.c clients/odbc/driver/SQLFetch.c clients/odbc/driver/SQLGetConnectAttr.c clients/odbc/driver/SQLMoreResults.c clients/odbc/driver/SQLSetConnectAttr.c Branch: odbc-tls Log Message: Get rid of sql_attr_connection_timeout diffs (155 lines): diff --git a/clients/odbc/driver/ODBCDbc.h b/clients/odbc/driver/ODBCDbc.h --- a/clients/odbc/driver/ODBCDbc.h +++ b/clients/odbc/driver/ODBCDbc.h @@ -61,7 +61,6 @@ typedef struct tODBCDRIVERDBC { int mapToLongVarchar; /* when > 0 we map WVARCHAR to WLONGVARCHAR, default 0 */ SQLUINTEGER sql_attr_autocommit; SQLUINTEGER sql_attr_metadata_id; - SQLUINTEGER sql_attr_connection_timeout; /* MonetDB connection handle & status information */ Mapi mid; /* connection with server */ 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 @@ -550,9 +550,6 @@ MNDBConnectSettings(ODBCDbc *dbc, const if (!SQL_SUCCEEDED(rc)) return rc; - /* set timeout after we're connected */ - mapi_timeout(dbc->mid, dbc->sql_attr_connection_timeout * 1000); - return SQL_SUCCESS; } 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 @@ -40,6 +40,7 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL const char *err; MapiMsg ret; MapiHdl hdl; + long timeout; hdl = stmt->hdl; @@ -93,7 +94,8 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL break; case MTIMEOUT: /* Timeout expired / Communication link failure */ - addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? "HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0); + timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT); + addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0); return SQL_ERROR; default: err = mapi_result_error(hdl); 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 @@ -434,6 +434,7 @@ MNDBExecute(ODBCStmt *stmt) int i; ODBCDesc *desc; SQLLEN offset; + long timeout; /* check statement cursor state, query should be prepared */ if (stmt->State == INITED || @@ -529,7 +530,8 @@ MNDBExecute(ODBCStmt *stmt) break; case MTIMEOUT: /* Timeout expired / Communication link failure */ - addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? "HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0); + timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT); + addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0); return SQL_ERROR; default: errstr = mapi_result_error(hdl); diff --git a/clients/odbc/driver/SQLFetch.c b/clients/odbc/driver/SQLFetch.c --- a/clients/odbc/driver/SQLFetch.c +++ b/clients/odbc/driver/SQLFetch.c @@ -41,6 +41,7 @@ MNDBFetch(ODBCStmt *stmt, SQLUSMALLINT * int i; SQLULEN row; SQLLEN offset; + long timeout; /* stmt->startRow is the (0 based) index of the first row we * stmt->need to fetch */ @@ -102,7 +103,8 @@ MNDBFetch(ODBCStmt *stmt, SQLUSMALLINT * WriteValue(RowStatusArray, SQL_ROW_ERROR); /* Timeout expired / Communication * link failure */ - addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? "HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0); + timeout = msetting_long(stmt->Dbc->settings, MP_REPLY_TIMEOUT); + addStmtError(stmt, timeout > 0 ? "HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0); return SQL_ERROR; default: if (RowStatusArray) diff --git a/clients/odbc/driver/SQLGetConnectAttr.c b/clients/odbc/driver/SQLGetConnectAttr.c --- a/clients/odbc/driver/SQLGetConnectAttr.c +++ b/clients/odbc/driver/SQLGetConnectAttr.c @@ -41,6 +41,7 @@ MNDBGetConnectAttr(ODBCDbc *dbc, SQLINTEGER BufferLength, SQLINTEGER *StringLengthPtr) { + long timeout; /* check input parameters */
MonetDB: odbc-tls - Use ODBC attr names in ODBC errors
Changeset: ef11e287362e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/ef11e287362e Modified Files: clients/mapilib/msettings.c clients/mapilib/msettings.h clients/odbc/driver/ODBCDbc.c Branch: odbc-tls Log Message: Use ODBC attr names in ODBC errors diffs (135 lines): diff --git a/clients/mapilib/msettings.c b/clients/mapilib/msettings.c --- a/clients/mapilib/msettings.c +++ b/clients/mapilib/msettings.c @@ -232,6 +232,8 @@ struct msettings { char *unix_sock_name_buffer; char certhash_digits_buffer[64 + 2 + 1]; // fit more than required plus trailing '\0' bool validated; + const char* (*localizer)(const void *data, mparm parm); + void *localizer_data; char error_message[256]; }; @@ -356,6 +358,22 @@ format_error(msettings *mp, const char * return mp->error_message; } +const char *msetting_parm_name(const msettings *mp, mparm parm) +{ + const char *localized = NULL; + if (mp->localizer) + localized = (mp->localizer)(mp->localizer_data, parm); + return localized ? localized : mparm_name(parm); +} + +void msettings_set_localizer(msettings *mp, const char* (*localizer)(const void *data, mparm parm), void *data) +{ + mp->localizer = localizer; + mp->localizer_data = data; +} + + + const char* msetting_string(const msettings *mp, mparm parm) { @@ -492,15 +510,15 @@ msetting_parse(msettings *mp, mparm parm case MPCLASS_BOOL: b = msetting_parse_bool(text); if (b < 0) - return format_error(mp, "%s: invalid boolean value", mparm_name(parm)); + return format_error(mp, "%s: invalid boolean value", msetting_parm_name(mp, parm)); return msetting_set_bool(mp, parm, b); case MPCLASS_LONG: if (text[0] == '\0') - return format_error(mp, "%s: integer parameter cannot be empty string", mparm_name(parm)); + return format_error(mp, "%s: integer parameter cannot be empty string", msetting_parm_name(mp, parm)); char *end; long l = strtol(text, &end, 10); if (*end != '\0') - return format_error(mp, "%s: invalid integer", mparm_name(parm)); + return format_error(mp, "%s: invalid integer", msetting_parm_name(mp, parm)); return msetting_set_long(mp, parm, l); case MPCLASS_STRING: return msetting_set_string(mp, parm, text); @@ -574,7 +592,7 @@ msetting_set_named(msettings *mp, bool a return msetting_set_ignored(mp, key, value); if (!allow_core && mparm_is_core(parm)) - return format_error(mp, "%s: parameter not allowed here", mparm_name(parm)); + return format_error(mp, "%s: parameter not allowed here", msetting_parm_name(mp, parm)); return msetting_parse(mp, parm, value); } @@ -607,7 +625,7 @@ validate_certhash(msettings *mp) if (strncmp(certhash, "sha256:", 7) == 0) { certhash += 7; } else { - return "certhash: expected to start with 'sha256:'"; + return format_error(mp, "%s: expected to start with 'sha256:'", msetting_parm_name(mp, MP_CERTHASH)); } size_t i = 0; @@ -615,13 +633,13 @@ validate_certhash(msettings *mp) if (*r == ':') continue; if (!isxdigit(*r)) - return "certhash: invalid hex digit"; + return format_error(mp, "%s: invalid hex digit", msetting_parm_name(mp, MP_CERTHASH)); if (i < sizeof(mp->certhash_digits_buffer) - 1) mp->certhash_digits_buffer[i++] = tolower(*r); } mp->certhash_digits_buffer[i] = '\0'; if (i == 0) - return "certhash: need at least one digit"; + return format_error(mp, "%s: need at least one digit", msetting_parm_name(mp, MP_CERTHASH)); return NULL; } diff --git a/clients/mapilib/msettings.h b/clients/mapilib/msettings.h --- a/clients/mapilib/msettings.h +++ b/clients/mapilib/msettings.h @@ -131,6 +131,9 @@ mapi_export const msettings *msettings_d /* always returns NULL */ mapi_export msettings *msettings_destroy(msettings *mp); +mapi_export const char *msetting_parm_name(const msettings *mp, mparm parm); +mapi_export void msettings_set_localizer(msettings *mp, const char* (*localizer)(const void *data, mparm parm), void *data); + /* retrieve and set; call abort() on type error */ mapi_export const char* msetting_string(const msettings *mp, mparm parm); diff --git a/clients/odbc/driver/ODBCDbc.c b/clients/odbc/driver/ODBCDbc.c --- a/clients/odbc/driver/ODBCDbc.c +
MonetDB: odbc-tls - Approve exports
Changeset: 136c890c8682 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/136c890c8682 Modified Files: clients/Tests/exports.stable.out Branch: odbc-tls Log Message: Approve exports diffs (19 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 @@ -752,6 +752,7 @@ mparm mparm_parse(const char *name); char *msetting_as_string(const msettings *mp, mparm parm); bool msetting_bool(const msettings *mp, mparm parm); long msetting_long(const msettings *mp, mparm parm); +const char *msetting_parm_name(const msettings *mp, mparm parm); msettings_error msetting_parse(msettings *mp, mparm parm, const char *text); int msetting_parse_bool(const char *text); msettings_error msetting_set_bool(msettings *mp, mparm parm, bool value); @@ -775,6 +776,7 @@ const msettings *msettings_default; msettings *msettings_destroy(msettings *mp); bool msettings_malloc_failed(msettings_error err); bool msettings_parse_url(msettings *mp, const char *url, char **error_buffer); +void msettings_set_localizer(msettings *mp, const char *(*localizer)(const void *data, mparm parm), void *data); bool msettings_validate(msettings *mp, char **errmsg); const char *wsaerror(int); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: check - aprove tests
Changeset: fcbb5a7377e1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fcbb5a7377e1 Modified Files: sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test Branch: check Log Message: aprove tests diffs (28 lines): diff --git a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test --- a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test +++ b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.test @@ -27,5 +27,5 @@ WHERE columns.table_id = tables.id 'objects', 'keys', 'modules', 'sequences') ORDER BY TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION -1121 values hashing to bb4b4edafb89bbfcb29b757e953cd0ce +1159 values hashing to 3c2bbe6a5854a6cce3e3b47236e91c82 diff --git a/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test b/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test --- a/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test +++ b/sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658.test @@ -1,4 +1,4 @@ -query IIITIIITIIITITIITIII rowsort +query IIITIITITIIITITIITIII rowsort SELECT * FROM "keys", "objects", "tables", "schemas" WHERE "keys"."id" = "objects"."id" @@ -8,7 +8,7 @@ WHERE "keys"."id" = "objects"."id" AND "keys"."type" = 0 -query IIITIIITIIITITIITIII rowsort +query IIITIITITIIITITIITIII rowsort SELECT * FROM "keys", "objects", "tables", "schemas" WHERE "keys"."id" = "objects"."id" ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: check - fix copy/paste bug
Changeset: fcb13a521f48 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fcb13a521f48 Modified Files: sql/storage/store.c Branch: check Log Message: fix copy/paste bug diffs (12 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -1687,8 +1687,6 @@ dup_sql_column(allocator *sa, sql_table col->storage_type = SA_STRDUP(sa, c->storage_type); if (ol_add(t->columns, &col->base)) return NULL; - if (ol_add(t->columns, &col->base)) - return NULL; return col; } ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: check - remove obsolet missing feature test
Changeset: 93c8186a6fc9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/93c8186a6fc9 Removed Files: sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test Modified Files: sql/test/2024/Tests/check.test sql/test/BugTracker-2013/Tests/All Branch: check Log Message: remove obsolet missing feature test diffs (67 lines): diff --git a/sql/test/2024/Tests/check.test b/sql/test/2024/Tests/check.test --- a/sql/test/2024/Tests/check.test +++ b/sql/test/2024/Tests/check.test @@ -39,3 +39,23 @@ create table baz(j int check (j > (selec statement error create table baz(j int check (j in (select i from foo))) + +-- exported from check-constraint.Bug-3335 + +statement ok +create table t3335(x integer check(x > 0 and x < 2)) + +statement ok +insert into t3335 values(1) + +statement error +insert into t3335 values(0) + +statement error +insert into t3335 values(2) + +statement error +insert into t3335 values(-1) + +statement error +insert into t3335 values(3) diff --git a/sql/test/BugTracker-2013/Tests/All b/sql/test/BugTracker-2013/Tests/All --- a/sql/test/BugTracker-2013/Tests/All +++ b/sql/test/BugTracker-2013/Tests/All @@ -47,7 +47,6 @@ copy-into-compressed.Bug-3351 HAVE_LIBZ?copy-into-compressed-gz.Bug-3351 HAVE_LIBBZ2?copy-into-compressed-bz2.Bug-3351 median.Bug-3352 -check-constraint.Bug-3335 crash_after_creation_of_unique_key.Bug-3363 alter_resets_readonly.Bug-3362 env_errors.Bug-3370 diff --git a/sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test b/sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test deleted file mode 100644 --- a/sql/test/BugTracker-2013/Tests/check-constraint.Bug-3335.test +++ /dev/null @@ -1,24 +0,0 @@ -statement ok -start transaction - -statement error -create table t3335(x integer check(x > 0 and x < 2)) - -statement error -insert into t3335 values(1) - -statement error -insert into t3335 values(0) - -statement error -insert into t3335 values(2) - -statement error -insert into t3335 values(-1) - -statement error -insert into t3335 values(3) - -statement ok -rollback - ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
MonetDB: check - approve new test output
Changeset: 8f41e6d99b7e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/8f41e6d99b7e Modified Files: sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test sql/test/bugs/Tests/groupby_having-bug-sf-947600.test sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test sql/test/pg_regress/Tests/alter_table.test sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test sql/test/sys-schema/Tests/check_Not_Nullable_columns.test Branch: check Log Message: approve new test output diffs (277 lines): diff --git a/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test b/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test --- a/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test +++ b/sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.test @@ -10,7 +10,7 @@ 20 smallint 6 varchar -14 +15 query TI rowsort SELECT type,COUNT(id) FROM cols_6624 GROUP BY type HAVING COUNT(id)>5 ORDER BY 2 DESC @@ -20,7 +20,7 @@ 20 smallint 6 varchar -14 +15 query TI rowsort SELECT type,COUNT(id) as cnt FROM cols_6624 GROUP BY type HAVING COUNT(id)>5 ORDER BY cnt DESC @@ -30,7 +30,7 @@ 20 smallint 6 varchar -14 +15 statement ok DROP TABLE cols_6624 diff --git a/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test b/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test --- a/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test +++ b/sql/test/BugTracker-2019/Tests/alter_table_set_schema.Bug-6701.test @@ -6,7 +6,7 @@ query ITTIIITIIT rowsort SELECT * FROM sys._columns WHERE table_id NOT IN (SELECT id FROM sys._tables) -query IIITII rowsort +query IIITIIT rowsort SELECT * FROM sys.keys WHERE table_id NOT IN (SELECT id FROM sys.tables) @@ -106,7 +106,7 @@ query ITTIIITIIT rowsort SELECT * FROM sys._columns WHERE table_id NOT IN (SELECT id FROM sys._tables) -query IIITII rowsort +query IIITIIT rowsort SELECT * FROM sys.keys WHERE table_id NOT IN (SELECT id FROM sys.tables) @@ -137,7 +137,7 @@ query ITTIIITIIT rowsort SELECT * FROM sys._columns WHERE table_id NOT IN (SELECT id FROM sys._tables) -query IIITII rowsort +query IIITIIT rowsort SELECT * FROM sys.keys WHERE table_id NOT IN (SELECT id FROM sys.tables) diff --git a/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test b/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test --- a/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test +++ b/sql/test/bugs/Tests/groupby_having-bug-sf-947600.test @@ -75,7 +75,7 @@ idxs 12 keys keys -6 +7 keys objects 6 diff --git a/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test b/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test --- a/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test +++ b/sql/test/bugs/Tests/innerjoin_multiple-bug-sf-943661.test @@ -11,7 +11,7 @@ select schemas.name, tables.name, column 'objects', 'keys', 'modules', 'sequences') order by schemas.name, tables.name, columns.name -429 values hashing to 6d7dbf36ca46001022af9219632baa04 +435 values hashing to bb81bada51b1bbe50f43e6f3cc184250 query TTT rowsort select s.name, t.name, c.name from @@ -26,5 +26,5 @@ select s.name, t.name, c.name from 'objects', 'keys', 'modules', 'sequences') order by s.name, t.name, c.name -429 values hashing to 6d7dbf36ca46001022af9219632baa04 +435 values hashing to bb81bada51b1bbe50f43e6f3cc184250 diff --git a/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test b/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test --- a/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test +++ b/sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615.test @@ -1,4 +1,4 @@ -query IIITIIITIIITITIITIII rowsort +query IIITIITITIIITITIITIII rowsort SELECT * FROM "sys"."keys" AS "keys", "sys"."objects" AS "objects", "sys"."tables" AS "tables", "sys"."schemas" AS "schemas" WHERE "keys"."id" = @@ -8,7 +8,7 @@ AND "tables"."schema_id" = "schemas"."id "tables"."name" LIKE 'x' -query IIITIIITIIITITIITIII rowsort +query IIITIITITIIITITIITIII rowsort SELECT * FROM "sys"."keys" AS "keys", "sys"."objects" AS "objects", "sys"."tables" AS "tables", "sys"."schemas" AS "schemas" WHERE "keys"."id" = diff --git a/sql/test/pg_regress/Tests/alter_table.test b/sql/test/pg_regress/Tests/alter_table.test --- a/sql/test/pg_regress/Tests/alter_table.test +++ b/sql/test/pg_regress/Tests/alter_table.test @@ -451,10 +451,10 @@ DROP TABLE PKTABLE cascade statement ok create table atacc1 ( test int ) -statement error +statement ok alter table atacc1 add constraint atacc_test1 check (test>3) -statement ok +statement e
MonetDB: check - merge with default
Changeset: 1c112b6b273c for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/1c112b6b273c Branch: check Log Message: merge with default diffs (truncated from 619 to 300 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1038,6 +1038,7 @@ log_read_types_file(logger *lg, FILE *fp { int id = 0; char atom_name[IDLENGTH]; + bool seen_geom = false; /* scanf should use IDLENGTH somehow */ while (fscanf(fp, "%d,%63s\n", &id, atom_name) == 2) { @@ -1049,9 +1050,17 @@ log_read_types_file(logger *lg, FILE *fp GDKerror("unknown type in log file '%s'\n", atom_name); return GDK_FAIL; } + seen_geom |= strcmp(atom_name, "mbr") == 0 || strcmp(atom_name, "wkb") == 0; lg->type_id[i] = (int8_t) id; lg->type_nr[id < 0 ? 256 + id : id] = i; } +#ifdef HAVE_GEOM + if (!seen_geom && ATOMindex("mbr") > 0) { + GDKerror("incompatible database: server supports GEOM, but database does not\n"); + return GDK_FAIL; + } +#endif + (void) seen_geom; return GDK_SUCCEED; } @@ -1802,7 +1811,8 @@ bm_subcommit(logger *lg, logged_range *p cleanup++; if (lids[p] == -1) continue; - if (BUNappend(dcatalog, &(oid){p}, true) != GDK_SUCCEED) { + if (BUNfnd(dcatalog, &(oid){p}) == BUN_NONE && + BUNappend(dcatalog, &(oid){p}, true) != GDK_SUCCEED) { while (BATcount(dcatalog) > dcnt) { if (BUNdelete(dcatalog, BATcount(dcatalog) - 1) != GDK_SUCCEED) { TRC_CRITICAL(WAL, "delete after failed append failed\n"); diff --git a/gdk/gdk_string.c b/gdk/gdk_string.c --- a/gdk/gdk_string.c +++ b/gdk/gdk_string.c @@ -1477,153 +1477,155 @@ GDKanalytical_str_group_concat(BAT *r, B * Only for the casefold table, if the converted codepoint is negative, * it is actually an escape into the specialcase table. The absolute * value is the index. */ + +/* These tables were created using the code in unicaseconvtabs.py */ static const char *const specialcase[] = { NULL, - "ss", - "i\xCC\x87", - "\xCA\xBCn", - "j\xCC\x8C", - "\xCE\xB9\xCC\x88\xCC\x81", - "\xCF\x85\xCC\x88\xCC\x81", - "\xD5\xA5\xD6\x82", - "h\xCC\xB1", - "t\xCC\x88", - "w\xCC\x8A", - "y\xCC\x8A", - "a\xCA\xBE", - "\xCF\x85\xCC\x93", - "\xCF\x85\xCC\x93\xCC\x80", - "\xCF\x85\xCC\x93\xCC\x81", - "\xCF\x85\xCC\x93\xCD\x82", - "\xE1\xBC\x80\xCE\xB9", - "\xE1\xBC\x81\xCE\xB9", - "\xE1\xBC\x82\xCE\xB9", - "\xE1\xBC\x83\xCE\xB9", - "\xE1\xBC\x84\xCE\xB9", - "\xE1\xBC\x85\xCE\xB9", - "\xE1\xBC\x86\xCE\xB9", - "\xE1\xBC\x87\xCE\xB9", - "\xE1\xBC\xA0\xCE\xB9", - "\xE1\xBC\xA1\xCE\xB9", - "\xE1\xBC\xA2\xCE\xB9", - "\xE1\xBC\xA3\xCE\xB9", - "\xE1\xBC\xA4\xCE\xB9", - "\xE1\xBC\xA5\xCE\xB9", - "\xE1\xBC\xA6\xCE\xB9", - "\xE1\xBC\xA7\xCE\xB9", - "\xE1\xBD\xA0\xCE\xB9", - "\xE1\xBD\xA1\xCE\xB9", - "\xE1\xBD\xA2\xCE\xB9", - "\xE1\xBD\xA3\xCE\xB9", - "\xE1\xBD\xA4\xCE\xB9", - "\xE1\xBD\xA5\xCE\xB9", - "\xE1\xBD\xA6\xCE\xB9", - "\xE1\xBD\xA7\xCE\xB9", - "\xE1\xBD\xB0\xCE\xB9", - "\xCE\xB1\xCE\xB9", - "\xCE\xAC\xCE\xB9", - "\xCE\xB1\xCD\x82", - "\xCE\xB1\xCD\x82\xCE\xB9", - "\xE1\xBD\xB4\xCE\xB9", - "\xCE\xB7\xCE\xB9", - "\xCE\xAE\xCE\xB9", - "\xCE\xB7\xCD\x82", - "\xCE\xB7\xCD\x82\xCE\xB9", - "\xCE\xB9\xCC\x88\xCC\x80", - "\xCE\xB9\xCD\x82", - "\xCE\xB9\xCC\x88\xCD\x82", - "\xCF\x85\xCC\x88\xCC\x80", - "\xCF\x81\xCC\x93", - "\xCF\x85\xCD\x82", - "\xCF\x85\xCC\x88\xCD\x82", - "\xE1\xBD\xBC\xCE\xB9", - "\xCF\x89\xCE\xB9", - "\xCF\x8E\xCE\xB9", - "\xCF\x89\xCD\x82", - "\xCF\x89\xCD\x82\xCE\xB9", - "ff", - "fi", - "fl", - "ffi", - "ffl", - "st", - "\xD5\xB4\xD5\xB6", - "\xD5\xB4\xD5\xA5", - "\xD5\xB4\xD5\xAB", - "\xD5\xBE\xD5\xB6", - "\xD5\xB4\xD5\xAD", - "SS", - "FF", - "FI", - "FL", - "FFI", - "FFL", - "ST", - "\xD4\xB5\xD5\x92", - "\xD5\x84\xD5\x86", - "\xD5\x84\xD4\xB5", - "\xD5\x84\xD4\xBB", - "\xD5\x8E\xD5\x86", - "\xD5\x84\xD4\xBD", - "\xCA\xBCN", - "\xCE\x99\xCC\x88\xCC\x81", - "\xCE\xA5\xCC\x88\xCC\x81", - "J\xCC\x8C", - "H\xCC\xB1", - "T\xCC\x88", - "W\xCC\x8A", - "Y\xCC\x8A", - "A\xCA\xBE", - "\xCE\xA5\