SchemaSmith Documentation

Feature List - PostgreSQL (Enterprise)

All Enterprise capabilities available for PostgreSQL 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), Schemas, Views, Procedures, Functions
  • Trigger Functions, Window Functions, Aggregates
  • Domain Types, Enum Types, Composite Types
  • Sequences, Rules, Triggers

Extraction Controls

  • ObjectList filtering to extract named subsets of objects
  • Per-type ShouldCast flags to include/exclude object categories
  • Functions flag controls Functions, Trigger Functions, and Window Functions together
  • 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 16 script directories created on disk
  • New templates auto-added to TemplateOrder

Enterprise Table JSON

  • Table-level: OldName, AccessMethod, PersistenceType, RowLevelSecurity, ShouldApply, custom properties
  • Column-level: Generated, Compression, Storage, OldName, custom properties
  • Index-level: AccessMethod, FilterExpression, IncludeColumns, 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 & Ownership

  • Multi-threaded processing with configurable MaxThreads
  • Multi-database targeting via DatabaseIdentificationScript
  • Product ownership tracking via ProductOwnership table
  • 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 ARRAY, generated columns, dropped columns

Data Delivery (SchemaQuench)

Full reference →

  • Three merge strategies: Insert, Insert/Update, Insert/Update/Delete
  • 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_populate_record
  • MergeDisableTriggers, MergeDisableRules, 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
  • AccessMethod for table access method (heap, btree, etc.)
  • PersistenceType for logged vs. unlogged tables
  • RowLevelSecurity for enabling row-level security policies
  • 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 generated/computed columns (STORED)
  • Compression for column-level TOAST compression (pglz, lz4)
  • Storage for TOAST storage strategy (plain, extended, external, main)
  • Collation for column-level collation override
  • CheckExpression for inline check constraints
  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Index Properties

  • AccessMethod for index type (btree, hash, gin, gist, brin)
  • FilterExpression for partial indexes (WHERE clause)
  • IncludeColumns for covering indexes (INCLUDE)
  • UpdateFillFactor override at the individual index level
  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Exclude Constraint Properties

  • PostgreSQL-specific EXCLUDE constraints
  • ShouldApply / ShouldApplyExpression with token access
  • Custom properties accessible via script tokens

Foreign Key Properties

  • MatchType for FK match behavior (SIMPLE, FULL, PARTIAL)
  • 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, TableSchema, 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 →

  • DatabaseIdentificationScript for multi-database 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