Roadmap
Current Version: 1.21.0
Completed Features
Section titled “Completed Features”All core features have been released:
| Version | Feature | Status |
|---|---|---|
| v1.4.0 | Test Data Generator + Merge (fixture generator superseded by generate, see below) | Released |
| v1.5.0 | Sample (FK-aware sampling) | Released |
| v1.6.0 | Shard (tenant extraction) | Released |
| v1.7.0 | Convert (dialect conversion) | Released |
| v1.8.x | Validate + Glob Patterns | Released |
| v1.9.x | Diff (schema + data comparison) | Released |
| v1.10.0 | Redact (data anonymization) | Released |
| v1.11.0 | Graph + Order (ERD + FK ordering) | Released |
| v1.12.0 | Query (DuckDB analytics) | Released |
| v1.12.x | MSSQL Support (fourth dialect) | Released |
| v1.13.0 | JSON Schema Generation | Released |
| v1.13.x | Library feature flags, Docker images, convert fixes | Released |
| v1.14.0 | -o - stdout support, redact compression fix | Released |
| v1.15.0 | Output compression (--compress), archive output (tar.*/zip), 2.4–4.4× split speedup | Released |
| v1.16.0 | Zip input (all commands), adaptive --io-strategy for slow devices | Released |
| v1.17.0 | Synthetic data generation (generate) | Released |
Released in v1.17.0
Section titled “Released in v1.17.0”generate — Synthetic Data Generation
Section titled “generate — Synthetic Data Generation”Generate production-shaped synthetic SQL from a dump, schema, or reusable YAML model. This supersedes the old test_data_gen fixture crate from v1.4.0 (removed) as the product feature for synthetic data:
sql-splitter generate production.sql -o synthetic.sqlsql-splitter generate production.sql --emit-config synthetic.yamlsql-splitter generate --config synthetic.yaml --verify -o synthetic.sqlFeatures:
- Bounded basic/full profiling and exact emitted row counts
- Editable per-table and per-column YAML rules, with generators, modifiers, and planners for relational and multi-column invariants (see
generate) - Stable global, table, column, and operator seed streams
- Public library API using the same compiler and engine as the CLI
- Neutral profile evidence reusable by the future
infercommand (see below) — profiler internals are not frozen aroundinfer’s unbuilt needs
Full documentation: generate command reference,
model reference,
generator catalog,
planner catalog, and
library API.
v1.16.0 — Zip Input + Adaptive I/O Profiles (shipped)
Section titled “v1.16.0 — Zip Input + Adaptive I/O Profiles (shipped)”.zip dumps are now accepted as input across all commands — real-world exports often arrive as dump.sql.zip:
sql-splitter split reflow_latest.sql.zip -o tables/Zip input:
- Streams the zip’s
.sqlmember through the existing decompression pipeline (no full extraction) - Exactly-one-
.sql-member policy, with clear errors for multi-member or encrypted archives - No new dependencies — reuses the
zipcrate already powering archive output
Adaptive I/O strategys — measured on a USB spinning disk, the default (SSD-tuned) write path runs at ~22–33 MB/s while a single writer with large buffers reaches ~55 MB/s (2.5×, near the drive’s physical ceiling):
sql-splitter split dump.sql -o tables/ --io-strategy auto # defaultsql-splitter split dump.sql -o tables/ --io-strategy hdd # pin it- An fsync probe picks the opening profile; after that, a feedback loop driven by the pipeline’s own backpressure steps between fast/HDD/slow-flash profiles — no device fingerprinting, works for network mounts and cheap USB sticks too
- Output stays byte-identical across all profiles (verified by cross-profile hash tests)
Upcoming Features
Section titled “Upcoming Features”v1.18.0 — Enum Type Conversion
Section titled “v1.18.0 — Enum Type Conversion”Proper bidirectional enum conversion between PostgreSQL and MySQL. Today, ENUM('a','b') converts lossily to VARCHAR(255) — this replaces that with real type conversion:
Features:
- PostgreSQL
CREATE TYPE ... AS ENUM→ MySQL inlineENUM() - MySQL inline
ENUM()→ PostgreSQLCREATE TYPE(deterministic naming) - Registry-based type tracking across statements (streaming-safe)
- Strip
::typecasts in DML statements VARCHARfallback with a warning for unknown types
v1.19.0 — Migration Generation
Section titled “v1.19.0 — Migration Generation”Generate ALTER statements from schema differences:
sql-splitter migrate old.sql new.sql -o migration.sqlsql-splitter migrate old.sql new.sql --rollback -o rollback.sqlsql-splitter migrate old.sql new.sql --breaking-changesFeatures:
- Generate migration scripts (ALTER TABLE, CREATE INDEX)
- Multi-dialect migration output
- Rollback script generation
- Breaking change detection
v1.20.0 — DBML Import/Export
Section titled “v1.20.0 — DBML Import/Export”Schema documentation and interoperability with DBML:
Features:
- Export SQL dump schemas to DBML for dbdiagram.io visualization (extends
graph) - Generate SQL DDL from DBML schema-as-code definitions (extends
convert)
v2.0.0 — Parallel Processing
Section titled “v2.0.0 — Parallel Processing”Multi-threaded performance:
sql-splitter split dump.sql -o tables/ --parallel 8sql-splitter convert dump.sql --parallel autoTargets:
- 4x speedup on 8-core systems
- Linear scaling up to available cores
- Memory-bounded parallel processing
v2.1.0 — Schema Inference
Section titled “v2.1.0 — Schema Inference”Generate DDL from data-only dumps:
sql-splitter infer data-only.sql -o schema.sqlsql-splitter infer data.csv --table users --dialect mysqlFeatures:
- Type inference from INSERT values
- Primary key detection
- Index suggestion
- FK inference (heuristic)
- Reuses or extends
generate’s bounded neutral profile evidence
Non-Goals
Section titled “Non-Goals”These features are explicitly out of scope:
- GUI interface — CLI only
- Database connection — File-based only
- Binary backup formats — No .bak (MSSQL)
- Stored procedure conversion — Too complex
- Real-time streaming — Batch processing only
- Cloud storage integration — Use pipes
Contributing
Section titled “Contributing”Want to contribute to a roadmap feature? See Contributing.
For feature requests, open an issue on GitHub.