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 = 'T-SQL GRANT EXEC → PG GRANT EXECUTE renaming, plus wrapping each GRANT in DO $ EXCEPTION blocks so the grant tolerates missing roles or functions during fresh installs. sqlglot does not apply this idempotency wrapping or rename EXEC → EXECUTE.'

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

    Human-readable name for logging/debugging

    Priority: number = 80

    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