Repository navigation
What's Changed
Cross-Database Type Synchronization
MySQL, PostgreSQL, and MariaDB schemas can now be compared and synchronized in all directions. This is powered by a canonical intermediate type system that maps between database-specific types.
Core features:
- CanonicalType — database-agnostic intermediate type enum covering 30+ type variants
- Type Mappers — MySQL, PostgreSQL, and MariaDB each have independent mappers with
to_canonical/from_canonical/map_default_value - MariaDB independence — native
uuid,inet6support,jsonb→longtext(not reusing MySQL mapper) - Type warnings — inline icons on diff tree items + summary panel showing degraded/skipped conversions
- Default value normalization —
now()↔CURRENT_TIMESTAMP,true/false↔1/0, PG cast stripping
PostgreSQL Improvements
- Array type support — reads array columns via
udt_name(e.g.,_int4→integer[]) - Enum support — reads enum values from
pg_enum, generatesCREATE TYPE AS ENUMwhen targeting PostgreSQL - Serial variants —
SERIAL/BIGSERIAL/SMALLSERIALchosen based on integer width - ALTER COLUMN auto_increment — generates
CREATE SEQUENCE+SET DEFAULT nextval()+OWNED BY
Bug Fixes
- Frontend
DiffTypealigned with backendsnake_caseserialization — fixes diff item color/icon/badge rendering - Skipped (unmappable) columns now produce visible DiffItems with warnings instead of being silently dropped
CREATE TABLEin cross-db mode filters skipped columns from PK, indexes, FKs, and unique constraints- Indexes/FKs/UCs referencing skipped columns are excluded from cross-db comparison
Full Changelog: v1.3.0...v1.4.0