Repository navigation
Feat/config mysql sqlite support - #8
Conversation
- Add .dbdiff.yml config with table/column ignore patterns (*.col, table.*, table.col) - Add --config CLI flag (defaults to .dbdiff.yml) - Add MySQL/MariaDB loader via mysql_async (information_schema introspection) - Add SQLite loader via rusqlite with bundled SQLite (PRAGMA introspection) - Add Cargo feature flags: postgres, mysql, sqlite (all default-enabled) - Make database backends optional via conditional compilation - Bump version to 0.2.0 https://claude.ai/code/session_011ybGPfyvWTRUPcii7Yeqxq
- Install libssl-dev and pkg-config on Ubuntu for mysql_async - Use --all-features for clippy and docs to check all feature-gated code - Add system deps to release workflow for cross-compilation https://claude.ai/code/session_011ybGPfyvWTRUPcii7Yeqxq
ci: harden workflow permissions and pin rust-toolchain action
There was a problem hiding this comment.
💡 Codex Review
Lines 274 to 279 in e41698d
When dialect is SqlDialect::Sqlite, default-only column diffs still generate ALTER TABLE ... ALTER COLUMN ... SET/DROP DEFAULT statements, but SQLite does not support ALTER COLUMN syntax. This means any SQLite schema drift involving a default value produces a migration that fails at execution time, even though type/nullability changes are already handled as manual migrations in this function.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| .query_map([], |row| row.get::<_, Option<String>>(2))? | ||
| .filter_map(|r| r.ok().flatten()) | ||
| .collect(); |
There was a problem hiding this comment.
Skip SQLite indexes that contain expression terms
PRAGMA index_info returns NULL for expression terms; this code drops those entries with filter_map and keeps the index if any named column remains. For mixed indexes (for example, lower(name), created_at), the loader records only created_at, so diffs and generated migrations can silently rewrite the index to a different definition. Treating any NULL term as unsupported (and skipping the whole index) would avoid incorrect migrations.
Useful? React with 👍 / 👎.
No description provided.