Highlights of each release, grouped by minor version. The upstream
CHANGELOG.md
carries the complete, detailed history — including the analysis behind each fix — and every
tagged release is listed on the
GitHub releases page.
0.16.0
August 2026
Informix overhaul and a JDBC shutdown fix
- JDBC connectors no longer hang on exit. Worker threads now detach from the JVM together with their connection, so a migration that used to hang indefinitely after printing its summary finishes in under a second.
- Informix: system catalog no longer migrated. Discovery now separates user objects from the server’s own — one test database went from 534 routines and 89 tables down to the 17 routines and 24 tables the schema actually defines.
- Informix: many object types now migrate at all. Fixes for
BSON/JSONcolumns, collection and row types,INTERVALcolumns, descending and function-based indexes, check constraints,MERGEstatements, global variables, and triggers — several of which previously failed the whole planning phase. - Informix:
MONEYmigrates asNUMERICwith its precision and scale preserved, rather than as PostgreSQL’s very differentMONEYtype.
0.15.0
July 2026
T-SQL parser and validation depth
- Validation compares structure, not just data. Column, index and constraint counts are now extracted from both sides, persisted in the
validation_indexesandvalidation_constraintsprotocol tables, and rendered as side-by-side grids in the Markdown report. Any mismatch fails the table validation. - Sybase ASE / T-SQL parser hardening. Temporary
#tables map topg_temp,EXEC @id = func(...)becomes a proper PL/pgSQL assignment, legacy transaction directives andGOTOlabels are neutralised, and cursor definitions spanning multiple lines are parsed correctly. - Oracle moved to
python-oracledb, replacing the outdatedcx_Oracle. Thin mode is the default, so the Oracle Instant Client is no longer required. - Validation connection exhaustion fixed — checksum engines no longer sever the validator’s long-lived connections mid-loop.
- Validation compares structure, not just data. Column, index and constraint counts are now extracted from both sides, persisted in the
0.14.0
May 2026
Conflict resolution and a Sybase SQL parser
data_conflict_actionadded totable_settings— choosereplace,merge_keep_target,merge_keep_sourceorskipwhen data exists in both source and target. Implemented across all connectors.table_nameaccepts lists and regular expressions, so one directive can now cover many tables at once — uniformly across batch size overrides, chunking and selective migration toggles.- Sybase ASE gained a real SQL parser for stored procedures, the same one previously used only for views — with a long list of T-SQL conversion fixes covering
IF/ELSEnesting,UNION,PRINT,CONVERTdatetime styles and inline conditionals.
0.12.x
March – April 2026
Parallel view migration and DB2 z/OS aliases
- Views migrate in parallel via a thread pool, with alias views deliberately processed only after all standard views finish to avoid dependency collisions.
- DB2 alias resolution now labels an alias target as
TABLEorVIEWin the catalog, preventing view-to-alias circular dependencies. - CSV ingestion handles comma decimal separators, merging fields only where the target column is a scaled
NUMERIC/DECIMAL/FLOAT. - Fixes for check constraints (#57), sequence fetching on Informix, MySQL and Sybase (#63), view migration across most connectors (#65) and PostgreSQL-to-PostgreSQL data type substitution (#67).
0.11.x
November 2025 – March 2026
Offline DDL connectivity and IBM DB2 z/OS
- New
ddlconnectivity type — database objects can be read from DDL files instead of a live connection, configured viaddl.directory. - IBM DB2 z/OS support added through the new
ibm_db2_zosconnector; the existing DB2 connector was renamed toibm_db2_luw. - Sybase ASE conversion rewritten with a SQL parser for control flow, cursors and data types, plus support for legacy outer join syntax (
*=/=*), user-defined types,OUTPUTtoINOUTparameters and@@rowcountviaGET DIAGNOSTICS. - MS SQL Server gained view conversion with correct data types, user-defined type conversion and a first, usable version of trigger/function/procedure conversion.
- First version of the user documentation added to the
docs/directory.
- New
0.10.x
October – November 2025
Informix LOB import at scale
- Parallel LOB import for Informix. Informix exports each CLOB/BLOB into its own file (max 2 GB), referenced by pointers in the main UNL file. Sequential processing was workable up to about ten files; a configurable number of parallel workers now handles the hundreds of files that real tables produce.
- Multiple LOB columns per table are supported, and
NULLLOB values are recognised whether they appear as the0,0,0placeholder or as a literalNULL. - UNL to CSV conversion hardened against trailing backslashes, Windows
\r\nline endings and escaped delimiters. - MySQL gained ODBC and JDBC connectivity alongside the existing native driver.
0.9.x
June 2025
PyPI distribution and sqlglot-based view conversion
- Published to PyPI via
pyproject.toml, makingpip install credativ-pg-migratorthe standard installation route. sqlglotadopted for view conversion, starting with Sybase ASE, which significantly raised the view migration success rate.names_case_handling(lower,upper,preserve) is now honoured when generatingCREATEstatements — legacy engines disagree about identifier casing, and users need to choose.- Data is selected by explicit column list instead of
SELECT *, so awkward types (geometry, sets, LOBs, user-defined types) can be cast or transformed in the source query. - Pre-migration analysis started — automating the questions that otherwise get asked of every client about their source database.
- Published to PyPI via
0.8.0
June 2025
First public release
- The initial public release of
credativ-pg-migrator, with connectors moved into their own module directory.
- The initial public release of
Older releases#
Versions before 0.8.0 predate the public release. Their history is preserved in the full changelog.
