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 = 'Custom output adds CREATE INDEX IF NOT EXISTS for idempotency, strips T-SQL filegroup syntax (ON [PRIMARY]), removes WITH NOCHECK, truncates index names to PG\'s 63-char limit (with hash suffix), and quotes column names with PascalCase. sqlglot does not apply MJ\'s naming conventions or idempotency wrappers.'

    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 = 'CreateIndexRule'

    Human-readable name for logging/debugging

    Priority: number = 70

    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