Skip to content

Version 9.0.1

Latest
Compare
Choose a tag to compare
@Remi-Coulom Remi-Coulom released this 25 Jun 15:59
· 379 commits to master since this release
  • Dual locking: instead of using one global lock for a joedb file, this version locks head and tail separately. This allows a much nicer handling of concurrent access to files:

    • Journal construction locks the head only, so it does not block if a transaction is in progress or the file was opened in exclusive mode since both of those situations lock the tail only.
    • Concurrent reads use a shared lock on the head of the file to read the checkpoint, and can be blocked only during very short periods of time when a writable journal is constructed or when the checkpoint is modified.
  • Write access to exclusive and shared files is completely unified, so Connection and File_Connection can now handle both exclusive and shared files.

  • Explicit handling of pull-only connections. The server can now cleanly serve a read-only file.

  • New CURL_File allows opening any URL as a read-only file. An http server supporting range access can serve a read-only database.

  • SQL dump connection

  • Generated code produces an error if compiled with a version of joedb different from the version that was used to generate it.

  • Incompatibilities with previous version:

    • In Posix environments, locking changed from using flock to using fcntl. Those two locking mechanisms are not compatible in Linux, so it is important to avoid mixing joedb versions because they may not understand each-other's locks. Windows and MacOS do not have this problem.
    • The network protocol changed to indicate a pull-only connection during handshake, so it is not compatible with the previous version.
    • Local_Connection is removed since it can be replaced by a plain Connection.
    • Pullable_Database is removed and replaced by Readonly_Client.