Revision history for DBIO-DB2

0.900001  2026-07-12
    * Diff
        - Fix DROP INDEX / DROP TABLE collision in full-schema sync (karr #19).
          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 DB2's DROP TABLE already removes the
          table's own indexes, the standalone DROP INDEX failed (index no longer
          exists) and aborted apply()/upgrade(). DBIO::DB2::Diff::Index now
          receives the tables sections (threaded in by DBIO::DB2::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. Backward compatible: absent table sections
          yield an empty dropped set (original two-argument behaviour).
        - Add t/32-diff-drop-table-index.t and extend t/30-diff.t: full-diff
          regression for the collision (karr #19) plus Diff::Index unit cases for
          the tables-aware drop suppression, including an over-suppression guard
          (a surviving table's index is still dropped standalone).

    * Project
        - Added SECURITY.md following CPAN Security Group author guidelines
          (v1.5.0): private email-first reporting with CPANSec escalation

    * Dependencies
        - DBD::DB2 is now a hard requires (was recommends); a
          database-specific DBIO driver is useless without its DBD
        - Requires core DBIO >= 0.900001 (family-wide version alignment)

0.900000  2026-06-23
    First release. IBM DB2 driver for DBIO with native introspection, diff,
    DDL generation and test-deploy-and-compare deployment.

    * Storage
        - DB2 storage driver, autodetected from dbi:DB2: DSNs
        - -db2 shortcut and DBIO::DB2 schema component pin the driver
        - DateTime::Format::DB2 datetime parsing, "-quoted identifiers,
          schema-qualified table references, last_insert_id support

    * SQLMaker
        - DB2 LIMIT/OFFSET dialect via apply_limit: ROW_NUMBER() OVER()
          for offset, FETCH FIRST n ROWS ONLY otherwise

    * Introspect (SYSCAT + information_schema)
        - tables, columns, indexes and foreign keys from SYSCAT
        - GENERATED AS IDENTITY captured as is_auto_increment for
          DBIO::Generate
        - PK-backing index tagged origin=>'pk' so inherited table_uniq_info
          drops it; built on DBIO::Introspect::Base canonical shape

    * Diff
        - native DB2 model diff (table/column/index/foreign key) on
          DBIO::Diff::Op, using changed_column_fields / changed_index_fields
          / changed_fk_fields from DBIO::Diff::Compare
        - foreign-key changes on existing tables emitted as ALTER TABLE
          ADD/DROP CONSTRAINT (drop-then-add for a changed FK)

    * DDL
        - generate DB2 DDL from Result classes
        - emit named inline FOREIGN KEY constraints (deterministic
          fk_<table>_<cols> names) that round-trip through introspection
        - emit CREATE VIEW for non-virtual views (from view_definition)
          after all tables

    * Deploy
        - test-deploy-and-compare deployment on DBIO::Deploy::Base
          (install/diff/apply/upgrade), with DB2-specific target model
          built via a throwaway CREATE SCHEMA
