SchemaSmith Documentation

Feature List - MySQL (Enterprise)

All Enterprise capabilities available for MySQL workflows and tooling.

Development Cycle

Overview

  • No limits on seats, servers, or databases
  • Priority support and enhancement requests
  • All four tools: SchemaTongs, SchemaQuench, SchemaHammer, DataTongs

SchemaTongs Extraction

Extracts database schema into the SchemaSmith metadata format. Full reference →

Extracted Object Types

  • Tables (JSON definitions), Functions, Views, Stored Procedures
  • Triggers (DML triggers on tables)
  • Events (MySQL-specific scheduled tasks)
  • DELIMITER batch splitting for functions, procedures, triggers, and events

Extraction Controls

  • ObjectList filtering to extract named subsets of objects
  • Per-type ShouldCast flags to include/exclude object categories
  • SchemaSmith_ prefixed helper objects auto-excluded from extraction
  • Custom properties preserved on re-extraction
  • Username/password authentication

Package Initialization

  • Product.json and Template.json created with Enterprise options
  • JSON schema files in .json-schemas/ for editor validation
  • All 8 script directories created on disk
  • New templates auto-added to TemplateOrder

Enterprise Table JSON

  • Table-level: OldName, Engine, RowFormat, CharacterSet, AutoIncrementValue, ShouldApply, custom properties
  • Column-level: Generated, CharacterSet, OnUpdate, OldName, custom properties
  • Index-level: IndexType, Visible, FilterExpression, custom properties

SchemaQuench Deployment

Applies schema definitions to target databases. Full reference →

Execution & Quench Slots

  • Product-level Before and After script slots
  • Template-level: Before, Objects, BetweenTablesAndKeys, AfterTablesScripts, AfterTablesObjects, TableData, After
  • Configurable Script Folders at both product and template levels
  • Migration scripts with automatic tracking and re-execution control

Deployment Modes

  • Index Only mode for managing indexes without touching table structure
  • UpdateFillFactor control at template, table, and index levels
  • WhatIf dry-run mode for previewing changes without executing
  • ShouldApply conditional deployment on tables and all components
  • Drop unknown indexes and removed tables options

Scale

  • Multi-threaded processing with configurable MaxThreads
  • Multi-database targeting via SchemaIdentificationScript
  • Required vs. optional template marking
  • Baseline ValidationScript and VersionStampScript

Resilience

Data Management DataTongs & Data Delivery

Extraction (DataTongs)

Full reference →

  • Two output formats: JSON content files (.tabledata) and SQL scripts
  • SelectColumns for column selection
  • Filter for row filtering with WHERE clauses
  • ConfigureDataDelivery auto-updates table JSON with delivery properties
  • Content files usable as file tokens for custom delivery scripts
  • Special type handling for spatial, binary/blob, generated columns, AUTO_INCREMENT

Data Delivery (SchemaQuench)

Full reference →

  • Three merge strategies: REPLACE INTO, INSERT ... ON DUPLICATE KEY UPDATE, INSERT IGNORE
  • FK-aware topological sort with dependency ordering
  • Two-pass delivery for nullable foreign keys (deferred column update)
  • Circular dependency handling with retry
  • Data loading via JSON_TABLE
  • MergeDisableTriggers and MergeUpdateDescendents

SchemaHammer Visual IDE

Enterprise-only visual editor for schema metadata. Full reference →

Editing & Navigation

  • Tree view interface for Product, Template, and Table definitions
  • Table and column rename support via OldName
  • SQL syntax highlighting for defaults, expressions, and SQL fragments
  • In-tool SQL Editor for object and migration scripts
  • Create new templates from context menu with default folder structure
  • File system watching with automatic sync to tree view

Script Tokens & Search

  • Manage script tokens at product and template levels
  • Script preview with resolved token values in syntax-highlighting window
  • Preview resolved query token values against configured server
  • Advanced search by name or content with token expansion
  • Jump to token definition from within script editor
  • File picker for file-based tokens instead of manual path entry

Extensibility

Table Component Options

Enterprise adds custom properties, conditional deployment, and expression-level script token access to every table component. Full property reference →

Table Properties

  • OldName for rename detection without data loss
  • Engine for storage engine selection (InnoDB, MyISAM, etc.)
  • RowFormat for row storage format (DYNAMIC, COMPRESSED, etc.)
  • CharacterSet and Collation at the table level
  • AutoIncrementValue for seeding auto-increment counters
  • UpdateFillFactor override at the table level
  • ShouldApply / ShouldApplyExpression for conditional deployment
  • Data delivery properties: MergeType, MatchColumns, ContentFileName
  • Custom properties accessible via script tokens

Column Properties

  • OldName for column rename detection
  • Generated for computed columns (VIRTUAL and STORED)
  • AutoIncrement flag for auto-increment columns
  • CharacterSet and Collation at the column level
  • OnUpdate expression (e.g., CURRENT_TIMESTAMP)
  • CheckExpression for inline check constraints
  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Index Properties

  • IndexType for index algorithm (BTREE, HASH, FULLTEXT, SPATIAL)
  • Visible for optimizer visibility control (MySQL 8.0+)
  • FilterExpression for filtered indexes
  • IncludeColumns for covering indexes
  • UpdateFillFactor override at the individual index level
  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Full-Text Index Properties

  • Parser for custom full-text parsers (ngram, mecab)
  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Foreign Key Properties

  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Check Constraint Properties

  • CheckExpression with script token and custom property access
  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Statistic Properties

  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Script Tokens & Expressions

Enterprise dramatically expands the token system. Full reference →

Token Types

  • <*Query*> tokens execute SQL and embed the result
  • <*QueryFile*> tokens execute SQL from an external file
  • <*File*> tokens embed file contents inline
  • <*BinaryFile*> tokens embed binary content as hex
  • <*SpecificTable*> tokens reference individual table properties
  • Standard replacement tokens at product and template levels

Token Scoping & Resolution

  • Product-level tokens (global across all templates)
  • Template-level tokens (scoped to a single template)
  • Configuration overrides via appsettings
  • Custom property tokens for table component expressions
  • Built-in tokens: ProductName, TemplateName, TableName
  • Tokens resolved in expressions: Default, CheckExpression, ShouldApplyExpression, FilterExpression

Product & Template Configuration

Product Options

Full reference →

  • TemplateOrder for controlling deployment sequence
  • Configurable product-level script folders
  • Product-level Before and After quench slots
  • ValidationScript and VersionStampScript
  • Product-level script tokens
  • Platform validation in Product.json

Template Options

Full reference →

  • SchemaIdentificationScript for multi-schema targeting
  • Template-level script tokens
  • Configurable template-level script folders with all quench slots
  • IndexOnlyTableQuenches for index-only mode
  • UpdateFillFactor for fill factor enforcement
  • Required vs. optional template marking

Configuration & Architecture

Configuration Hierarchy

  • appsettings.json with environment-specific overrides
  • Environment variable overrides using __ separator
  • User secrets integration for local development
  • Command-line argument overrides
  • Git branch integration (BranchNameFile, branch name masks)

Deployment Architecture

  • Schema package as ZIP file for CI/CD distribution
  • CI/CD integration with any pipeline tool
  • .NET cross-platform runtime (Windows, Linux, macOS)
  • Long path support for deep directory structures
  • License files with grace period after expiration

Related Documentation