The Jul2021 documentation can be found here.
When processing the WAL, if a to-be-destroyed object cannot be found, don’t stop, but keep processing the rest of the WAL.
A race condition was fixed where certain write-ahead log messages could get intermingled, resulting in a corrupted WAL file.
If opening of a file failed when it was supposed to get memory mapped, an incorrect value was returned to indicate the failure, causing crashes later on. This has been fixed.
When saving a bat failed for some reason during a low-level commit, this was logged in the log file, but the error was then subsequently ignored, possibly leading to files that are too short or even missing.
The write-ahead log (WAL) is now rotated a bit more efficiently by doing multiple log files in one go (i.e. in one low-level transaction).
Fixed a race condition that could lead to a bat being added to the SQL catalog but nog being made persistent, causing a subsequent restart of the system to fail (and crash).
Fixed a race condition where a hash could have been created on a bat using the old bat count while in another thread the bat count got updated. This would make the hash be based on too small a size, causing failures later on.
When extending a bat failed, the capacity had been updated already and was therefore too large. This could then later cause a crash. This has been fixed by only updating the capacity if the extend succeeded.
A bug was fixed when dealing with copy-on-write memory maps. These can occur for some bats used by the write-ahead log code when they grow large enough.
Client connections are cleaned up better so that we get fewer instances of clients that cannot connect.
Fix a bug where the MAL optimizer would use the starttime of the previous query to determine whether a query timeout occurred.
Increased the size of a variable counting the number of changes made to the database (e.g. in case more than a 2 billion rows are added to a table).
Improved cleanup after failures such as failed memory allocations.
An insert into a table from which a column was dropped in a parallel transaction was incorrectly not flagged as a transaction conflict.
Added some error checking to prevent crashes. Errors would mainly occur under memory pressure.
Fixed cleanup after a failed allocation where the data being cleaned up was unitialized but still used as pointers to memory that also had to be freed.
A bug was fixed when optimizing combining of range select subexpressions.
If there was an error in one of the special commands to the server (e.g. setting the reply size for result sets), the server could get into an infinite loop. This has been fixed.
Fixed a double cleanup after a failed allocation in COPY INTO. The double cleanup could cause a crash due to a race condition it enabled.
A bug was fixed when upgrading a database from the Oct2020 releases (11.39.X) or older when the write-ahead log (WAL) was not empty and contained instructions to create new tables.
Avoid logging of failure to backup files that didn’t need to be backed up in the first place.
Avoid an attempt to access a file when the database is in memory.
When destroying a bat, make sure there are no files left over in the BACKUP directory since they can cause problems when the bat id gets reused.
Fixed an off-by-one error in the logger which caused older log files to stick around longer in the write-ahead log than necessary.
When an empty BAT is committed, skip writing (and synchronizing to disk) the heap (tail and theap) files and write 0 for their sizes to the BBP.dir file. When reading the BBP.dir file, if an empty BAT is encountered, set the sizes of those files to 0. This fixes potential issues during startup of the server (BBPcheckbats reporting errors).
Make sure heap files of transient bats get deleted when the bat is destroyed. If the bat was a partial view (sharing the vheap but not the tail), the tail file wasn’t deleted.
Various changes were made to satisfy newer compilers.
The batDirtydesc and batDirtyflushed Boolean values have been deprecated and are no longer used. They were both holdovers from long ago.
Various race conditions (data races) have been fixed.
All accesses to the BACKUP directory need to be protected by the same lock. The lock already existed (GDKtmLock), but wasn’t used consistently. This is now fixed. Hopefully this makes the hot snapshot code more reliable.
When multiple identical messages are written to the log, write the first one, and combine subsequent ones in a single message.
Fixed a leak where the log file wasn’t closed when it was reopened after a log rotation (SIGHUP signal).
Try to deal more gracefully with “inherited” mserver5 processes. This includes not complaining about an “impossible state”, and allowing such processes to be stopped by the monetdbd process.
When a transient failure occurs during processing of a new connection to the monetdbd server, sleep for half a second so that if the transient failure occurs again, the log file doesn’t get swamped with error messages.
Fixed a race condition which could cause a too large size being written for a .theap file to the BBP.dir file after the correct size file had been saved to disk.
We now ignore the size and capacity columns in the BBP.dir file. These values are essential during run time, but not useful in the on-disk image of the database.
Fixed race condition during backup of BATs.
Fixed append to BATs of type msk (bit mask).
Fix to WAL logger when a BAT gets replaced within a transaction.
Add number of rows affected by output statements into the total rowcount.
Fix to MAL code generation.
7225: Invalid memory access when extending a BAT during appends
7228: COMMIT: transaction is aborted because of concurrency conflicts, will ROLLBACK instead
Client Package
MonetDB Common
SQL Frontend
Bug Fixes
MonetDB Common
SQL Frontend
Bug Fixes
Client Package
Mapi Library
ODBC Driver
MonetDB Common
MonetDB5 Server
SQL Frontend
Merovingian
Bug Fixes