The Jun2023 documentation can be found here.
Fixed a regression where after a while the write-ahead log files weren’t being rotated, meaning from some point onwards, the newest file just kept on growing.
When saving the SQL catalog during a low-level commit, we should only save the part of the catalog that corresponds to the part of the write-ahead log that has been processed. What we did was save more, which resulted in the catalog containing references to tables and columns whose disk presence is otherwise only in the write-ahead log.
A bug was fixed where the administration of which bats were in use was interpreted incorrectly during startup, causing problems later. One symptom that has been observed was failure to startup with a message that the catalog tables could not be loaded.
7300: Implement missing standard SQL DATE and TIMESTAMP functions
7324: string_distance(‘method’,str1, str2) as a generic distance function
7409: Numpy table returning UDFs with variadic arguments
7410: SIGSEGV cause database corruption
Fixed an installation issue on Debian and Ubuntu introduced in the last build.
Do a lot more error checking, mostly for allocation failures. More is still needed, though.
Improve performance of the ILIKE operator when the pattern contains only ASCII characters. In this case we do not need to treat any characters as UTF-8 and we can use much faster routines that perform byte comparisons.
Fixed a number of data races (race conditions).
Fixed a reference counting problem when a BAT could nog be loaded, e.g. because of resource limitations.
Only check for virtual memory limits when creating or growing bats, not for general memory allocations. There is (still) too much code that doesn’t properly handle failing allocations, so we need to avoid those as much as possible. This has mostly an effect if there are virtual memory size restrictions imposed by cgroups (memory.swap.max in cgroups v2, memory.memsw.limit_in_bytes in cgroups v1).
The low-level commit turned out to always commit every persistent bat in the system. There is no need for that, it should only commit bats that were changed. This has now been fixed.
Implemented timeout/exit checks in a bunch more operators. Long(er) running operators occasionally check whether they’re taking too long (past a user-specified timeout) or whether the server is exiting. This is now done in more places.
7094: Drop remote tables in transactions and rollback
7303: Improve the performance of multi-column filters
7400: VM max memory is not check correctly for cgroups v2
7401: Column aliases used incorrectly in UNION subqueries
7402: Privileges on merge table not propagated to partition tables
7388: Query results in large cross product
7394: BBPextend: ERROR: trying to extend BAT pool beyond the limit (163840000)
Extended Windows MonetDB ODBC Data Source setup program with option to specify a logfile to enable tracing of ODBC Driver API calls. On other platforms users can edit the odbc.ini file and add a line: logfile=/home/username/odbctrace.log When a logfile is specified it will start logging the ODBC Driver API calls to the logfile after a new connection is made via SQLConnect() or SQLDriverConnect() or SQLBrowseConnect(). Note that enabling ODBC logging will slow down the performance of ODBC applications, so enable it only for analysing ODBC Driver problems.
Enhanced SQLTables() by adding support for table type names: ‘BASE TABLE’, ‘GLOBAL TEMPORARY’ and ‘LOCAL TEMPORARY’ in parameter TableType. These are synonyms of: ‘TABLE’, ‘GLOBAL TEMPORARY TABLE’ and ‘LOCAL TEMPORARY TABLE’.
Add MAX_MEMORY and MAX_WORKERS options to the ALTER USER statement
Function ‘similarity(x string, y string)’ marked as deprecated and will be removed in the next release.
New functionality for string matching and similarity: startswith, endswith, contains, Levenshtein distance and Jaro-Winkler similarity. The functions startswith, endswith and contains have a version where a case insentive flag can be used. Also, there are new custom join functionality for startswith, endswith, contains, Levenshtein distance and Jaro-Winkler similarity.
Renamed previous Levenshtein distance to Damerau-Levenshtein distance.
New string function that transform from UTF-8 encoding to Ascii called asciify.
Session timeout feature improvement to start evaluating from the moment the procedure is called, instead of beginning of the session.
Queries stopped with the stop procedure are now marked as ‘aborted’ ‘finished’.
The DEBUG statement has been removed.
SQL function sys.queue() overloaded with sys.queue(username string), SYSADMIN only, allowing to filter the global queue by username or use ‘ALL’ to retrieve the global queue. Calling the function without arguments returns the queue for the current user.
SQL procedures sys.pause(tag bigint), sys.resume(tag bigint), sys.stop(tag bigint) overloaded with sys.pause(tag bigint, username string), sys.resume(tag bigint, username string) and sys.stop(tag bigint, username string), SYSADMIN only, allowing to pause, resume and stop query executions by TAG, USERNAME. The call without arguments is a public procedure giving access to users to pause, resume and stop their own query executions.
Added support of ODBC escape sequences syntax to SQL layer. Now all clients (including ODBC/JDBC/pymonetdb) can use them without further processing. For details on ODBC escape sequences syntax see: https://learn.microsoft.com/en-us/sql/odbc/reference/appendixes/odbc-escape-sequences
It is no longer allowed to create a merge table or remote table or replica table or unlogged table in schema “tmp”. The tmp schema is reserved for temporary objects only, such as local/global temp tables.
System views sys.dependency_tables_on_functions and dependency_views_on_functions have been extended with column: function_id.
When loading data using COPY BINARY INTO, apply default values instead of just inserting NULLs.
When loading data using COPY BINARY INTO, validate DECIMAL(prec,scale) and VARCHAR(n) column width.
When loading data using COPY BINARY INTO, string used to have their line endings converted from CR LF to LF. Do not do this, it is the responsibility of the client.
Implemented dumping binary data using COPY SELECT … INTO BINARY <file(s)>.
Removed code for Workload Capture and Replace, including system schemas “wlc” and “wlr” and the objects in those schemas. The code was experimental, and it didn’t work out. A different approach will be taken.
7311: Missing REGEXP_REPLACE
function.
7344: Database upgrade failure due to user object dependency on system procedure
7348: Subquery inside case always evaluated
7378: MonetDB server crashes at sql_trans_copy_key
7379: MonetDB server 11.46.0 crashes at cs_bind_ubat
7380: MonetDB server 11.46.0 crashes at BLOBcmp
7381: MonetDB server 11.46.0 crashes at log_create_delta
7382: MonetDB server 11.46.0 crashes at gc_col
7383: MonetDB server 11.46.0 crashes at list_append
7384: MonetDB server 11.46.0 crashes at __nss_database_lookup
7386: MonetDB server 11.46.0 crashes in rel_deps
7387: MonetDB server 11.46.0 crashes in rel_sequences