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