What's New

Track SchemaSmith updates across SQL Server, PostgreSQL, MySQL, and MariaDB — from SchemaTongs extraction to SchemaQuench deployments to DataTongs data sync.

SchemaSmith release notes and version history

Deploy to the servers you already run — SchemaSmith now targets SQL Server 2008, PostgreSQL 12, and MySQL 5.7, and adds MariaDB as a supported platform.

Deploy to older servers
  • New SQL Server 2008 support — The floor drops from SQL Server 2017 to 2008, compatibility level 130 down to 100. SchemaSmith hands its schema model to the server as JSON (OPENJSON/FOR JSON) at level 130 and above and switches automatically to an XML encoding below it, where OPENJSON is a parse error; Target:CompatEncoding (auto|legacy|modern) overrides the pick.
  • New PostgreSQL 12 support — The floor drops from PostgreSQL 15 to 12, verified against real PostgreSQL 12 and 14 containers.
  • New MySQL 5.7 and MariaDB 10.2 support — MySQL's floor drops from 8.0 to 5.7, and MariaDB is supported from 10.2 up (new in this release — see below), both on one version-agnostic JSON_EXTRACT shred in place of JSON_TABLE. Newer DDL falls back to an equivalent path with the same end state, so a column rename uses CHANGE COLUMN instead of RENAME COLUMN; MySQL 5.6 and MariaDB 10.1 have no JSON support and are rejected.
  • New Unsupported-feature policyTarget:UnsupportedFeaturePolicy decides what happens when a declared feature outruns the target's version, on SQL Server, PostgreSQL, MySQL, and MariaDB alike. It covers cases like NULLS NOT DISTINCT below PostgreSQL 15, CHECK constraints below MySQL 8.0.16, and descending index key parts below MySQL 8.0. The default warn applies the object without the unsupported clause and names it under "Unsupported Feature Downgrades" in the deployment summary with the version it needs; fail aborts pre-emptively instead.
Manage MariaDB schemas
  • New MariaDB support — MariaDB 10.2 and higher is a first-class platform with full MySQL-equivalent coverage across SchemaQuench, SchemaTongs, and DataTongs. Declare "Platform": "MariaDb" in Product.json and packages, tokens, templates, fan-out, checkpoint/resume, and WhatIf all work as they do for MySQL. MariaDB gets its own native DDL generation, so it is a platform in its own right — a package built for MySQL does not deploy to MariaDB, or the reverse.
Author for the version you detect
  • New Server version script tokens — Two new automatic tokens, {{ServerMajorVersion}} and {{CompatibilityLevel}}, gate a ShouldApplyExpression or a script body on version with one portable integer comparison ({{CompatibilityLevel}} >= 130) instead of each engine's native version predicate. Gate syntax on {{CompatibilityLevel}} and features on {{ServerMajorVersion}}, since a modern server can host a database left at an old compatibility level; on PostgreSQL, MySQL, and MariaDB the two resolve to the same value, so one expression shape stays portable.
  • New XML data delivery on SQL Server — A DataDelivery can declare "ContentEncoding": "Xml" (default "Json", unchanged), so automatic table-data delivery works at every SQL Server compatibility level, not just the 130 and above that OPENJSON shredding needs. The XML row shape is a documented, stable contract, and SchemaTongs and DataTongs take --DeliveryEncoding=Xml to extract straight into it; SQL Server only, since the other engines have no equivalent cliff.
  • New Detected version in the run log — Pre-flight now logs the engine version it detected and, on SQL Server, the target database's compatibility level, so a version-related diagnosis is self-evident in the log. Covers SchemaQuench per configured server and SchemaTongs' extraction source.
Install with one command, or none at all
  • New wingetwinget install SchemaSmith.SchemaSmith puts all four CLI commands on your PATH. The manifest is submitted to microsoft/winget-pkgs each release.
  • New AUR (Arch Linux)yay -S schemasmith-bin, or any AUR helper, installs all four CLIs from the official release binaries.
  • New Docker image for SchemaQuench — SchemaQuench ships as a multi-arch (linux/amd64 and linux/arm64) image on Docker Hub (schemasmithyfree/schemaquench) and GHCR (ghcr.io/schema-smith/schemaquench), so a deploy runs with no .NET install. Tags are latest, X.Y.Z (immutable), X.Y, and X.
  • New SchemaSmith Deploy GitHub Action — A composite action for running SchemaQuench from a CI/CD pipeline on SQL Server, PostgreSQL, MySQL, and MariaDB, deploying on merge or previewing a run with WhatIf first. It fetches the matching self-contained binary for the runner OS at run time, and pinning @vX.Y.Z pins both the action and the CLI version it runs.
Cross-engine parity & reliability
  • Enhanced Declarative renames beyond SQL ServerOldName now renames a table or column in place on PostgreSQL, MySQL, and MariaDB, preserving its data instead of dropping and recreating the object; previously this worked on SQL Server only. The same deploy also carries the table's own primary key, unique constraint, and index renames, which PostgreSQL used to abort with 42P16: multiple primary keys for table.
  • Fix MySQL and MariaDB re-deploy speed — Re-deploying a product no longer spends minutes in convergence. The foreign-key, index, and table-comparison passes each used to read INFORMATION_SCHEMA once per declared object, in a form the server could not index or push filters down through; INFORMATION_SCHEMA is not a stored table on those engines, so every one of those reads was expensive.
  • Fix SQL Server temporal table round-trip — SchemaTongs extraction now preserves system-versioning. Previously an extract emitted no IsTemporal and re-emitted the period columns (ValidFrom and ValidTo) as ordinary columns, so extract then re-deploy silently dropped system-versioning.

Control what gets dropped, see exactly what a run did, and validate every package before it ships.

Prevent accidental drops
  • New Environment-level PreventDrop — Set PreventDrop: true in SchemaQuench.settings.json (or the SmithySettings_PreventDrop environment variable) and that environment never drops an object for being absent from the package. Withheld drops are itemized in the run summary, and a change that requires dropping and recreating a declared object still applies normally.
  • New Sticky per-table PreventDrop — Mark a table "PreventDrop": true and it is never dropped by absence, even after you delete it from the package. The flag persists in the database itself, as a PreventDrop extended property on SQL Server and, on PostgreSQL and MySQL, a PreventDrop column on the ProductOwnership tracking table, so it survives the table's own removal.
  • Fix SQL Server check-constraint protection — Single-column check constraints now respect drop protection at every cascade tier. Previously DropCheckConstraintsRemovedFromProduct silently failed to protect a named check that referenced only one column.
Track every deployment
  • New Deployment summary report — Every run writes SchemaQuench - Summary.json and SchemaQuench - Summary.md to the log directory, capturing outcome, exit code, duration, per-target results, which migration scripts ran, bottleneck timings, and verified created, modified, and dropped counts per object type.
  • New Failure triage roll-up — When a run fails, SchemaQuench - Failures.log groups every failed scope by phase with its engine error, its resolved-SQL artifact path, and the log lines leading up to it, while a *** FAILED banner marks each one live in the progress stream.
  • Enhanced Resolved-SQL artifacts everywhere — Product-level Before and After scripts, validation scripts, and generated quench DDL now all write a re-runnable resolved-SQL artifact on failure and report it through one Resolved SQL written to: line, honoring ScrubArtifacts redaction like every other failure artifact.
Catch errors early
  • New --Validate static linter — Lint a schema package with no connection, no target, and no side effects, catching malformed files, duplicate objects, dangling references, undefined tokens, and JSON-schema violations. It exits 0 when clean and 2 on any error, so it drops straight into a CI gate.
  • New Canonical table filenames — SchemaTongs now writes each table as <schema>.<table>[.<VariantName>].json, with the schema segment omitted on MySQL and schema-template packages, so a table's variants sort together in source control. A table's identity lives in its content, so a renamed file still deploys; --Validate just emits an SS-FILE-NAME-003 warning naming the canonical form.
Control what goes where
  • New Command-line configuration overrides — Any setting can now be supplied with --Key=value, not just the ones with named switches. Nest with a double underscore (--Target__Server=prod-db) and the override beats the settings file, user secrets, and environment variables.
  • New Gated data deliveries — A table's DataDelivery can now be an array of independently gated deliveries, each with its own ShouldApplyExpression and optional VariantName. Every delivery whose gate passes applies, so you can hold seed data to dev, swap a lean production reference set for a rich one, or layer additive patch slices.
  • New Fleet enumeration from a control database — The new IdentificationDatabase template property re-targets DatabaseIdentificationScript at a control-plane registry database instead of the platform init database. It is token-resolvable, and on PostgreSQL it is the only way to read a registry roster, since a connection there cannot cross databases.
Cross-engine parity & reliability
  • Enhanced Variant-aware re-extraction — When a table or component carries authored variants gated by ShouldApplyExpression, SchemaTongs now evaluates each gate against the source database and folds the extracted shape into the variant that is active there, keeping its gate and variant name. Previously extraction discarded the extracted shape and silently lost real drift.
  • Fix MySQL enum and set values — A column declared enum('web','ios','android') deployed as enum('WEB','IOS','ANDROID'), because type normalization upper-cased the quoted literals along with the keyword. Only the keyword is upper-cased now, and values compare case-sensitively so a corrected declaration converges.
  • Fix PostgreSQL identity and computed columns — A table with a GENERATED … AS IDENTITY column failed to deploy with a repeating syntax error and never converged; identity columns now compare by kind only. Computed columns on a new table also skip the old create-plain-then-drop-and-re-add cycle.

Ship targeted patches, protect what you didn't touch, and deploy safely across engine versions.

Patch delivery
  • New SchemaShears — A supporting patch-delivery tool that carves a deployable patch package from a full schema product using a manifest of changed object paths; objects the manifest omits are preserved on the target rather than dropped, with optional --Zip bundling.
Drop protection
  • New Drop-control cascade — Drop toggles now cascade across environment, product, and template tiers, and a higher tier can hard-lock them off so a production environment suppresses every automatic drop regardless of what a package declares.
  • New Per-object drop gates — Choose whether removed columns, foreign keys, check constraints, statistics, and product-owned indexes are dropped, resolved across the same tiers so any table can tighten protection for its own objects.
Deploy safely across versions
  • New Pre-flight diagnostics--TestConnection and --PreviewTargets validate every configured server and print a read-only report of the databases and schemas a run would touch, exiting before any change is made.
  • Enhanced MinimumVersion enforcement — SchemaQuench detects each target's engine version and aborts the whole run before touching anything if a target is below the declared version floor (previously the field was metadata only).
  • New Version-adaptive deployment — SchemaSmith detects each target server's version at deploy time and adapts the SQL it generates where engine versions differ, so one package deploys correctly across, for example, PostgreSQL 15, 16, and 17.
Cross-engine parity & reliability
  • New MySQL soft-drop hooks — MySQL gains the same custom table drop and restore hooks SQL Server and PostgreSQL already had, enabling recyclebin-style soft-drop and restore of removed tables.
  • New Always Encrypted safety guard — On SQL Server, a deployment that would re-encrypt data on a populated column now stops before any change and names the exact column, instead of failing partway.
  • Enhanced Conditional-deployment expressionsShouldApplyExpression now accepts either a bare predicate or a full SELECT on every kind of gate.
  • Fix Idempotency — Repeated deployments no longer churn columns or primary keys over cosmetic type spellings, and cross-template schema tokens now resolve correctly.

Multi-tenant fan-out, conditional deployments, and deployments you can debug.

Multi-tenant & fan-out
  • New Multi-schema fan-out — One template can deploy across many schemas in a single database on SQL Server and PostgreSQL, with the active schema available to your scripts as {{SchemaName}} — a natural fit when each tenant owns its own schema.
  • New Config-driven targets — Define per-environment lists of databases or schemas in settings and let SchemaQuench provision the missing ones — one package, per-environment tenant rosters.
  • New Selective execution scope — Filter a run by template, database, or schema to deploy to a single newly-onboarded tenant without re-running the whole product.
Conditional deployment
  • New Folder-level conditions — Any script folder can carry a ShouldApplyExpression evaluated against the target at deploy time — split engine-specific folders, skip a folder on managed platforms, or keep test data out of production.
  • New Per-script runtime skip — A script can decide at deploy time that it shouldn't apply and be logged as skipped, without failing the deployment.
Debug & protect
  • New Resolved-SQL artifact — When a script fails, the exact expanded SQL the server rejected is written to a re-runnable file, its path shown in the log, with an optional scrubbed variant safe to attach to support tickets.
  • New Log hygiene — Logs now mask sensitive values — passwords, secrets, API keys, connection strings — by name and strip embedded credentials from connection strings, so CI artifacts and screenshots don't leak secrets.

One free product, three platforms, one source tree.

One Product, Three Tools
  • New One free product, three platforms — SchemaSmith covers SQL Server, PostgreSQL, and MySQL from a shared codebase under SSCL v2.0. Free for any purpose including commercial use, with no restrictions on organization size, revenue, or environment count. The code is on GitHub for anyone to read
  • New Three tools, one workflow — SchemaTongs, SchemaQuench, and DataTongs work across all three platforms with platform-specific adapters and native DDL output. Learn once, deploy on whichever engine you run
Schema Modeling
  • New Indexed and materialized view support — SQL Server indexed views and PostgreSQL materialized views with full index management. Index-only changes skip the view rebuild
  • New Custom properties via Extensions — Attach your own metadata to any table, column, index, foreign key, or view. Custom fields are queryable from your scripts via auto-tokens, so you can drive replication, environment behavior, validation, and audit metadata from the same JSON your schema lives in
  • New Platform-specific types — Native modeling for PostgreSQL (exclude constraints, range types, materialized views) and MySQL (multi-column full-text indexes, generated columns, tablespaces). No more lowest-common-denominator schemas
Deploy Smarter
  • New Checkpoint and resume--ResumeQuench picks up after a failed run and skips everything that already completed. No more re-running the first 50 migrations because the 51st failed
  • New FK-aware data delivery — Declare a DataDelivery block on a table and SchemaSmith handles foreign-key dependency ordering and nullable FK columns automatically. Hand-authored merge scripts go away
  • New Conditional deployment (ShouldApplyExpression) — Templates carry SQL expressions evaluated at runtime. Deploy different schemas to dev, test, and prod from the same package
  • New Multi-server deployment + custom script folders — Push the same product to multiple server instances in one run, and define your own script execution slots beyond the built-in folder structure
  • New Universal token resolution{{TokenName}} resolves in every script (Before/After, objects, migrations, data delivery), with environment-variable overrides. Advanced tags pull values from inline queries, files, binary contents, or full schema JSON. One package parameterizes cleanly across every environment
  • New Datafix-only deploymentsKindleTheForge, UpdateTables, and DropTablesRemovedFromProduct toggles let you run partial-package deployments — data fixes without schema churn, or schema-only without touching reference data
Install Anywhere
  • New Self-contained, signed executables — Single-file builds for Windows, macOS, and Linux on x64 and arm64. Zero .NET runtime required. Windows binaries are Authenticode-signed, so SmartScreen warnings are gone. Runs on minimal Linux containers without libicu
  • New Native package managerschoco install schemasmith on Windows. .deb and .rpm packages for Debian, Ubuntu, RHEL, Fedora, and Amazon Linux. One install puts all three CLI commands on your PATH

Community License v2.0: No Restrictions on Organization Size or Revenue

SQL Server Community
  • License The Community Edition is now licensed under SSCL v2.0: free for any purpose (personal, commercial, internal, production) with no restrictions on organization size, revenue, database scope, or number of environments. You cannot distribute SchemaSmith to others or operate it as an ongoing managed service for others. Setup and configuration services are permitted. Whether you're at a startup or an enterprise, the Community Edition now works at any scale, no organization size or revenue restrictions. Read the full license

License file integration, checkpoint-based deployment recovery, and five new SchemaHammer UI features strengthen reliability and streamline workflow management across all editions.

SQL Server Community v1.1.8
  • Fix SQL batch parsing now handles single quotes inside bracketed identifiers
  • Fix Foreign key comparison correctly identifies ON DELETE and ON UPDATE actions
  • Fix Fulltext index detection now captures TYPE COLUMN in existing index comparison
SQL Server Enterprise v1.2.2

Includes all Community fixes above, plus:

  • New License file integration — Encrypted license file support with automatic search path
  • New Checkpointing and Resume — Save quench progress to checkpoint files; resume interrupted deployments
  • New DeliverData appsetting — Make the automatic Data Delivery step optional
  • New VerboseLogging appsetting — Include PRINT messages in logged output
  • New SchemaHammer: Template creation — Create new templates with default folder structure from context menu
  • New SchemaHammer: Script folder sync — Adding or removing template folders auto-creates directories and tree nodes
  • New SchemaHammer: Token preview — Preview resolved query token values against the quench server
  • New SchemaHammer: Search expansion — Expand token values when searching code
  • New SchemaHammer: File picker — Browse for file-based script tokens instead of manual path entry
  • Enhanced WhatIf mode — Scripts and data delivery steps now logged for better dry-run output
  • Enhanced Tool-specific help — Each tool displays its own relevant command line switches
PostgreSQL Enterprise v1.0.2
  • New License file integration — Encrypted license file support with automatic search path
  • New Checkpointing and Resume — Save quench progress and resume interrupted deployments
  • New DeliverData appsetting — Make Data Delivery optional
  • New SchemaHammer enhancements — Template creation, folder sync, token preview, search expansion, file picker
  • Enhanced WhatIf mode improvements and tool-specific help
  • Enhanced Platform validation — Graceful error when using the wrong platform's toolset
MySQL Enterprise v1.0.0 Initial Release
  • New SchemaSmith for MySQL — Full MySQL 8.0+ support for metadata-driven schema management
  • New SchemaHammer — Visual editor for MySQL schema templates
  • New SchemaQuench — Automated deployment engine for MySQL databases
  • New SchemaTongs — Extract existing MySQL database schemas into templates
  • New DataTongs — Data extraction and delivery for MySQL
  • New License file integration, checkpointing, and resume support
  • New Events, generated columns, and AUTO_INCREMENT management
  • New InnoDB storage engine optimization and table options
  • New REPLACE INTO, INSERT ON DUPLICATE KEY UPDATE, and INSERT IGNORE data delivery
Ask Forge v1.0.1 Initial Release
  • New AI-powered CLI agent — Conversational schema management with agentic LLM workflows across SQL Server, PostgreSQL, and MySQL
  • New MCP server — Expose 46 schema tools to Claude Desktop, VS Code, Cursor, and other MCP clients
  • New 46 tools across 4 tiers — Read-only exploration, generation, modification, and external tool execution
  • New 10 LLM providers — Ollama, OpenAI, Anthropic, Azure OpenAI, Google Gemini, Groq, Mistral, DeepSeek, xAI, and custom endpoints
  • New Trust levels — Observer, Assistant, and Operator tiers control tool access with confirmation gates
  • New Interactive REPL and single commands — Persistent console sessions or one-off CLI commands for scripting and automation
  • New Schema generation from natural language — Describe what you need and Ask Forge generates platform-specific schema JSON
  • New Migration script generation — Automated migration planning with step-by-step SQL scripts
  • New Data validation tools — Detect nulls, orphaned foreign keys, duplicates, and data type mismatches
  • New 30-article knowledge base — Embedded articles covering architecture, best practices, and troubleshooting

Refined DataTongs configuration and improved PostgreSQL type handling deliver cleaner error messages and more precise data extraction for enterprise workflows.

SQL Server Community v1.1.7
  • Enhanced Simplified DataTongs configuration to reduce confusing errors and edge cases
  • Enhanced Streamlined binary distribution for easier downloads
SQL Server Enterprise v1.2.1

Includes all Community changes above, plus:

  • Enhanced Improved error messages when table or schema names contain typos
PostgreSQL Enterprise v1.0.1

Includes shared changes above, plus:

  • Fix Virtual column flag correctly handled during schema extraction
  • Fix BPCHAR type correctly mapped when extracting table definitions
  • Fix Unconstrained numeric types handled properly
  • Fix User-defined type length modifiers no longer added erroneously during extraction

PostgreSQL Enterprise edition launches alongside table import capabilities and limited patch mode, expanding SchemaSmith's reach across database platforms.

SQL Server Community v1.1.6
  • Enhanced Platform identification added to product metadata and version output
  • Enhanced Error when using the wrong platform's toolset for a product
SQL Server Enterprise v1.2.0

Includes all Community changes above, plus:

  • New SchemaHammer: Table import — Import existing database tables into a product template
  • New Limited patch mode — Run only patches and data fixes by disabling table updates and kindling
  • New Run scripts twice option — Execute scripts a second time for two-pass deployment scenarios
  • Enhanced Preserve custom properties and ShouldApplyExpression when re-extracting tables
  • Enhanced Preserve data delivery options when re-extracting tables
  • Fix Index-only mode now correctly sets product ownership
  • Fix Minor SchemaHammer UI fixes for adding table components
PostgreSQL Enterprise v1.0.0 Initial Release
  • New SchemaSmith for PostgreSQL — Full PostgreSQL support for schema management
  • New SchemaHammer — Visual editor for PostgreSQL schema templates
  • New SchemaQuench — Automated deployment engine for PostgreSQL databases
  • New SchemaTongs — Extract existing PostgreSQL database schemas into templates
  • New DataTongs — Data extraction and delivery for PostgreSQL
  • New Expression column support for index definitions
  • New WITHOUT OVERLAPS support for unique and primary key constraints
  • New Statistics management and exclude constraints
  • New Fill factor management for tables and indexes
  • New Cluster index updates
  • New Older PostgreSQL version compatibility

Targeted fixes for data handling and delivery reliability round out the fall release cycle.

SQL Server Community v1.1.5
  • Fix TEXT, NTEXT, and IMAGE column handling fixed in DataTongs
SQL Server Enterprise v1.1.5

Includes all Community fixes above, plus:

  • Fix Data delivery behavior and missing default folder fixes

Table and column rename support, expanded CLI flexibility, and streamlined installers forge a more powerful and accessible schema management experience.

SQL Server Community v1.1.3–v1.1.4
  • New Table and column renames — SchemaQuench can now handle table and column rename operations
  • New --ConfigFile switch — Specify an alternate appsettings configuration file
  • New --Version switch — Display version information from the command line
  • New --LogPath switch — Specify a custom path for log file output
  • New Zipped package support — Quench directly from a zipped schema package
  • New Combined MSI installers — Single installer packages all CLI tools together
  • Enhanced New SCHEMASMITH_ environment variable prefix for configuration
  • Fix Table trigger name comparison corrected
SQL Server Enterprise v1.1.3–v1.1.4

Includes all Community changes above, plus:

  • New DataTongs export column list — Specify which columns to include in data exports
  • Enhanced Template load performance improvements in SchemaHammer
  • Enhanced Preserve custom properties and data delivery options when re-extracting tables

Foundation release introduces DataTongs trigger controls, Docker containerization support, and core stability improvements for production-ready deployments.

SQL Server Community v1.1.0–v1.1.2
  • New DataTongs trigger control — Option to disable triggers during data load operations
  • Enhanced Docker build support improvements
  • Fix DataTongs SQL script corrections
SQL Server Enterprise v1.1.0–v1.1.2

Includes all Community changes above, plus:

  • Enhanced Data delivery integration tests and reliability improvements