All notable changes to this project will be documented in this file.
- Add
Displayimpls for all AST types with round-trip assertions (ba9e0eb, #15) - Add DuckDB migration dialect with sequence-backed autoincrement (5c0ceab)
- Add DuckDB e2e integration tests with in-memory database (4eb4de9)
- Add comprehensive SQL parser integration tests — 154 tests across 12 focused test files (6bb2e2a, a60c960)
- Add
derive(Table)tutorial to oxide-sql-core rustdoc (f20b841) - Add dialect-aware
CreateTableOp::from_tablefromderive(Table)structs (8279ca7) - Add schema diff engine for auto-migration generation with
auto_diff_tableandauto_diff_schema(80d4128) - Add
SetUnique(bool)andSetAutoincrement(bool)toAlterColumnChangewith dialect-specific SQL generation (119564b) - Add N:M rename heuristic using Levenshtein similarity scoring for column and table renames (119564b)
- Add
IndexSnapshotandForeignKeySnapshottypes with index and foreign key diff support (119564b) - Add
SchemaDiff::to_sql()convenience method for generating SQL from diffs (119564b) - Add migration code generation (
codegen.rs) withgenerate_migration_code()producing completeMigrationtrait impls (119564b) - Add SQLite introspection helpers (
sqlite_helpersmodule) with PRAGMA constants, type affinity parsing, andcolumn_from_pragma()(119564b) - Add reversible diffs with
SchemaDiff::reverse(),is_reversible(), andnon_reversible_operations()(119564b) - Add
DiffWarningenum for column ordering detection (ColumnOrderChanged), primary key changes, and autoincrement changes (119564b)
- BREAKING: Upgrade to Rust edition 2024 — requires a Rust toolchain that supports edition 2024 (4034f8b)
- BREAKING:
TableSnapshotstruct gained two required fields:indexes: Vec<IndexSnapshot>andforeign_keys: Vec<ForeignKeySnapshot>. Addindexes: vec![], foreign_keys: vec![]to existing struct literals (119564b) - BREAKING:
SchemaDiffstruct gained a requiredwarnings: Vec<DiffWarning>field. Addwarnings: vec![]to existing struct literals (119564b) - BREAKING:
AmbiguousChange::PossibleRenameandPossibleTableRenamevariants gained asimilarity: f64field. Update pattern matches to includesimilarityor use..(119564b) - BREAKING:
AlterColumnChangeenum gainedSetUnique(bool)andSetAutoincrement(bool)variants. Exhaustive match statements must handle the new variants (119564b) - BREAKING:
SchemaDiff::is_empty()now also returnsfalsewhenwarningsis non-empty (119564b) - Rename
parser/parser.rstoparser/core.rswith module docs (d359403)
- Fix typed
Select/Update/Deleteto propagate WHERE params (c330464)
- Initial release of oxide-sql workspace
oxide-sql-core: type-safe SQL parser and query builder with compile-time validationoxide-sql-derive: derive macros for type-safe SQL table definitionsoxide-sql-sqlite: SQLite-specific SQL extensions (upsert, etc.)