Skip to content

Latest commit

 

History

History
302 lines (212 loc) · 9.65 KB

File metadata and controls

302 lines (212 loc) · 9.65 KB

MySQLfs ChangeLog

This file consolidates the historical notes that were previously split between ChangeLog and NEWS, and extends them with the work done after the 0.4.3 release notes up to the current 1.0.0 line.

Version 1.0.4 (2026-04-04)

  • Corrected local package versioning for FreeBSD builds:

    • the FreeBSD package builder now derives the package version from the checked-out source tree before falling back to git tags
    • local .pkg builds no longer reuse stale tag versions when a newer release has not yet been fetched to the build host
  • Refreshed release metadata across the project:

    • aligned the runtime mysqlfs version banner and --version output with the 1.0.4 release
    • updated mysqlfs_setup to report the current release number
    • updated the Debian package changelog to 1.0.4

Version 1.0.3 (2026-04-04)

  • Added first local packaging support for current Linux and FreeBSD systems:

    • introduced an initial Debian packaging layout under debian/
    • added a minimal Debian post-install message pointing users at the installed documentation
    • introduced a local FreeBSD package builder under pkg/freebsd/
    • verified local .deb and .pkg creation and installation flows on Debian 13 and FreeBSD 15
  • Refreshed release metadata across the project:

    • aligned the runtime mysqlfs version banner and --version output with the 1.0.3 release
    • updated mysqlfs_setup to report the current release number
    • documented the release tagging checklist in AGENTS.md

Version 1.0.2 (2026-04-04)

  • Improved the cross-platform build helpers:

    • introduced a shared build.sh flow for Linux and BSD systems
    • refactored build-macos.sh into a thinner macOS-specific wrapper
    • fixed library discovery for current FreeBSD and Debian layouts
  • Improved local test portability across supported systems:

    • simplified run-tests.sh so it no longer manages MySQL users or grants directly
    • made the regression harness work cleanly on macOS, FreeBSD 15, and Debian 13
    • normalized mount readiness checks across Linux, BSD, and macOS
  • Refreshed the main documentation for current users:

    • reorganized the README around setup, usage, and upgrade tasks
    • documented the currently validated operating systems and database versions
    • clarified the current libfuse 2.x compatibility baseline

Version 1.0.1 (2026-04-04)

  • Validated the current 1.0 line on FreeBSD 15:

    • fixed a duplicate global definition of the shared table-name pointer that newer linkers reject
    • confirmed build and test execution on FreeBSD with FUSE user mounts enabled
    • verified manual mount, remount, and persistence behavior on FreeBSD
  • Corrected logical file size handling for sparse writes:

    • query_write() now preserves the logical EOF instead of recomputing inode size from the sum of allocated block lengths
    • sparse-file regression coverage now matches the intended filesystem semantics across platforms
  • Improved test and setup portability:

    • run-tests.sh now finds the expected build output on non-macOS systems more reliably
    • documented the extra privilege requirement for trigger creation when mysqlfs_setup runs against a server with binary logging enabled

Version 1.0.0 (2026-04-04)

  • Hardened several correctness-critical filesystem paths:

    • rename target replacement is now handled transactionally inside query_rename()
    • write and truncate now hold an inode-level transactional lock
    • size updates are kept inside the same write transaction
    • path lookup SQL building in query_inode_full() is guarded against oversized paths instead of overflowing internal buffers
    • readdir() now propagates SQL failures back to FUSE instead of silently reporting success
    • getattr() reports block counts correctly for non-512-aligned sizes and loads file size directly from inode metadata
    • unlink no longer leaks pooled connections on multi-link paths
  • Improved startup and mount behavior:

    • the bootstrap root directory is created with the mounting user's ownership
    • unknown native FUSE options are forwarded correctly to libfuse, restoring support for debug, foreground, and single-threaded runs
  • Modernized portability and build tooling:

    • added Debian 9 build notes and library path guidance
    • added a dedicated macOS build helper script
    • cleaned up CMake support for current toolchains and platform library discovery
    • fixed modern compiler warnings in the C sources
    • documented permission-enforcement expectations more clearly
  • Added a repeatable local test harness:

    • run-tests.sh now recreates and initializes a clean test database
    • mysqlfs_setup can be used non-interactively for local testing
    • added shell-based end-to-end regression tests covering: root bootstrap, write/read round-trips, rename, truncate, mkdir plus move, unlink, in-place overwrite, rename over an existing target, directory listings, symbolic links, and a 16 MiB checksum test
  • Improved database setup and migrations:

    • fixed several SQL update issues
    • fixed MySQL "commands out of sync" failures
    • improved fsck-related fixes and follow-up SQL maintenance
    • fixed SQL update handling for modern MySQL
    • added migration 00000009.sql to enable InnoDB compressed row format on inodes and data_blocks
  • Improved query behavior and performance:

    • optimized path and sequence lookup queries
    • simplified joins where climbing through parents did not require a LEFT JOIN
  • Clarified supported filesystem semantics:

    • symbolic links are supported and covered by regression tests
    • hard links are now explicitly reported as unsupported instead of failing later with schema-driven I/O errors

Version rel_0.9.9 (2015-04-14)

  • Switched the project from autotools to CMake.

  • Improved build and packaging support:

    • fixed CMake scripts
    • improved mysqlfs_update
    • made SQL update files easier to install and locate from shared paths
    • resolved LibM lookup issues in the build system
  • Improved portability and documentation:

    • refreshed build and usage documentation
    • cleaned up older FreeBSD-specific warnings once big_writes behavior was confirmed
  • Fixed directory emptiness handling:

    • added the missing empty-folder checks
    • fixed the "directory not empty" validation logic

Version 0.4.3 (2014-01-19)

  • Fixed CHOWN compatibility with FreeBSD.

  • Added table prefix support across the project:

    • C code
    • PHP API
    • documentation
  • Improved the PHP API, including path handling fixes.

  • Fixed issues in the SQL update flow.

  • General cleanup and packaging updates for the 0.4.3 release.

Version 0.4.2 (2012-07-25)

  • Made inode size updates replication-safe by computing the value through an intermediate variable.

  • Added the first database upgrade scripting support.

  • Cached data_blocks sizes in a dedicated column to speed up inode updates. Thanks to Armin Wied for the idea.

  • Added an index to the tree table to speed up file lookups. Thanks to Armin Wied for this idea too.

  • Included the first rough PHP API to browse and fetch data directly from mysqlfs-backed tables.

  • Improved transaction safety, including transaction-safe truncate.

Version 0.4.1 (2012-04-08)

  • Switched the database engine from MyISAM to InnoDB.

  • Added basic transaction support with rollback handling.

  • Upgraded to the FUSE 2.6 API and implemented the newer create() operation.

  • Added support for big_writes.

  • Added FreeBSD support.

  • Added filesystem statistics reporting, including inode usage and pseudo-realistic space reporting.

  • Made the filesystem report file sizes in a way that is compatible with du.

  • Fixed command-line parsing issues.

  • Added support for allow_other and default_permissions.

Version 0.4.0

  • Reworked file storage to use 4 KiB blocks instead of one huge record per file. This greatly improved update performance and storage efficiency.

  • Added sparse file support as a consequence of block-based storage.

  • This release changed the database schema.

Version 0.3.1 (2006-10-03)

  • Added the missing schema.sql file to the distribution tarball.

Version 0.3 (2006-09-23)

  • Reworked the database schema to separate:

    • directory tree
    • inodes
    • file data
  • This new layout made delayed unlink and hard-link-aware inode accounting possible.

  • Rewrote connection pooling to avoid exhausting database connections and to reuse idle connections efficiently.

  • open() began caching the inode number in fi->fh so subsequent operations no longer needed to resolve the pathname each time.

  • Implemented or completed a substantial part of the core filesystem API:

    • better write behavior
    • truncate
    • symlink
    • readlink
    • link
    • chown
    • limited rename support for regular files
  • Added better logging infrastructure based on log_printf().

  • Added automatic root directory creation on startup.

  • Changed inode timestamp storage to Unix-style integer fields.

  • Added support for reading MySQL defaults from my.cnf.

  • Added MySQL version checks and reconnect handling.

  • Requires MySQL 5.0 or newer.

Version 0.2 (2006-07-23)

  • Improved performance through MySQL connection pooling.

  • Added atime and mtime updates.

  • Added chmod().

  • Improved error handling.

Version 0.1 (2006-06-08)

  • Initial release.