Revision history for DBIO-Firebird

0.900001  2026-07-12
    * Diff
        - Fix DROP INDEX / DROP TABLE collision in full-schema sync (karr #14,
          from dbio core #77 / dbio-postgresql #32). When diff reconciled a
          live schema containing a table absent from the target (removed from
          the app's DBIO classes, or an unmanaged leftover), it emitted both
          DROP TABLE <t> and a later standalone DROP INDEX for one of that
          table's indexes; since Firebird's DROP TABLE already removes the
          table's own indexes, the standalone DROP INDEX failed once the table
          was gone and aborted apply()/upgrade(). DBIO::Firebird::Diff::Index
          now receives the tables sections (via the aux-section wiring in
          DBIO::Firebird::Diff) and suppresses a standalone DROP INDEX for any
          index whose owning table is itself being dropped in the same pass.
          Indexes of surviving tables are still dropped as before. The diff
          signature stays backward compatible: absent table sections yield an
          empty dropped set (old two-argument behaviour).

    * Dependencies
        - DBD::Firebird is now a hard "requires" instead of "recommends":
          the driver is useless without it, and t/00-load.t failed (rather
          than skipping) when it was absent
          (codeberg #1, reported by Slaven Rezić / eserte)
        - Requires core DBIO >= 0.900001 (family-wide version alignment)

    * Project
        - Added SECURITY.md (CPAN Security Group guidelines v1.5.0)

    * Tests
        - Add t/45-diff-drop-table-index-cascade.t and extend t/40-diff.t:
          full-diff regression for the DROP INDEX / DROP TABLE collision
          (karr #14) plus Diff::Index unit cases for the new tables-aware drop
          suppression, including an over-suppression guard (a surviving table's
          index is still dropped standalone)
        - t/50-introspect-contract.t: make the generated-code table()
          assertions quote-agnostic (['"]). DBIO::Generate renders all
          literals through DBIO::Generate::Util::pl_str -> B::perlstring,
          which always emits double quotes, so the old single-quoted
          regexes failed 2/40 offline; matches Core's quote-agnostic
          precedent in ../dbio/t/generate/*

0.900000  2026-06-23
    First release. Firebird and InterBase database driver for DBIO.

    * Storage
        - DBD::Firebird storage (driver "Firebird") and DBD::InterBase
          storage variant (driver "InterBase"), auto-detected from the DSN
        - shared Firebird/InterBase storage base with generator-based
          autoincrement, savepoint support, and server-version detection
        - ODBC connection variant supported via the InterBase storage path
        - softcommit and datetime connect-calls, SQL dialect 3 forcing
        - quoted identifiers and INSERT ... RETURNING

    * SQLMaker
        - Firebird FIRST/SKIP limit dialect via apply_limit

    * Schema component and shortcut
        - DBIO::Firebird schema component pinning the storage type
        - "use DBIO -fb" shortcut (DBIO::Shortcut::fb)

    * Types and DateTime
        - Firebird type-system mapping for introspection and DDL
        - DateTime formatter for Firebird / InterBase

    * Introspection
        - native introspection via RDB$ system tables: tables, columns,
          indexes, foreign keys, and unique constraints

    * DDL and deploy
        - native DDL generation from DBIO Result classes, deduping sources
          that share a physical table, skipping subquery/view sources,
          dereferencing literal table names, and emitting CREATE VIEW for
          non-virtual views
        - desired-state deploy and upgrade via test-deploy-and-compare

    * Diff
        - native model diff for tables, columns, and indexes
