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