Member Junction
    Preparing search index...

    Interface for a single conversion rule.

    Rules are applied to statements that match their AppliesTo list. They can pre-process (before sqlglot), post-process (after sqlglot), or fully bypass sqlglot by setting BypassSqlglot = true.

    Implements

    Index

    Constructors

    Properties

    AppliesTo: StatementType[] = ...

    Statement types this rule applies to

    BypassJustification: string = 'sqlglot does not handle T-SQL ALTER TABLE patterns: multi-column ADD with inline CONSTRAINT clauses, ADD CONSTRAINT name DEFAULT val FOR col syntax (T-SQL named defaults), inline FOREIGN KEY in ADD COLUMN, ALTER COLUMN type NOT NULL (must become SET NOT NULL in PG), or DEFERRABLE INITIALLY DEFERRED FK behavior we add. Custom rule produces idiomatic PG output and applies PG case-sensitive identifier quoting.'

    If BypassSqlglot is true, this field documents WHY sqlglot is bypassed. Intended audience: future maintainers deciding whether the bypass is still needed (e.g., after a sqlglot upgrade). Should describe:

    • What sqlglot fails to handle for this statement type
    • The specific T-SQL → PG transformation we need that sqlglot doesn't produce
    • A link to an upstream sqlglot issue if applicable

    Required when BypassSqlglot is true. Helps with the architecture goal of "SQLGlot handles >90% of statements" by making the bypass surface auditable.

    BypassSqlglot: boolean = true

    If true, this rule handles conversion entirely — skip sqlglot. The PostProcess method receives the original SQL as both parameters.

    Name: string = 'AlterTableRule'

    Human-readable name for logging/debugging

    Priority: number = 60

    Priority — lower numbers run first (default: 100)

    SourceDialect: string = 'tsql'

    Source SQL dialect this rule converts from (e.g., 'tsql')

    TargetDialect: string = 'postgres'

    Target SQL dialect this rule converts to (e.g., 'postgres')

    Methods