The MonetDB team at MonetDB Solutions BV is pleased to announce the Jan2022-SP4 bugfix release of the MonetDB suite of programs. More information about MonetDB can be found on our website at https://www.monetdb.org/. For details on this release, please see the release notes at https://www.monetdb.org/documentation/admin-guide/release-notes/jan2022/. As usual, the download location is https://www.monetdb.org/downloads/. ### Client Package - Implemented dump of global grants, that is to say, grants for COPY INTO and COPY FROM which grant permission to users to write to or read from files on the server (COPY INTO queries without the ON CLIENT option). - Fixed a bug where when the semicolon at the end of a COPY INTO query that reads from STDIN is at exactly a 10240 byte boundary in a file, the data isn't read as input for the COPY INTO but instead as a new SQL query. ### MonetDB Common - 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. - 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. ### MonetDB5 Server - Various race conditions (data races) have been fixed. ### Merovingian - 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. ### Bug Fixes - [7040](https://github.com/MonetDB/MonetDB/issues/7040): Memory leak detected for MAPI interface - [7298](https://github.com/MonetDB/MonetDB/issues/7298): Irresponsive database server after reading incomplete SQL script. - [7308](https://github.com/MonetDB/MonetDB/issues/7308): Race condition in MVCC transaction management