Member Junction
    Preparing search index...

    SQL Server dialect implementation. Uses [bracket] quoting, TOP for pagination, BIT for booleans, T-SQL functions.

    Hierarchy (View Summary)

    Index

    Constructors

    Accessors

    • get AllowsOrderByInCTE(): boolean

      Whether the platform allows ORDER BY inside CTE definitions without TOP, OFFSET, or FOR XML. SQL Server: false (ORDER BY in CTEs is illegal without TOP/OFFSET/FOR XML) PostgreSQL: true (ORDER BY in CTEs is always legal)

      Returns boolean

    • get BinaryTypeNames(): readonly string[]

      SQL type names this dialect uses for binary blob columns (image, bytea, varbinary).

      Returns readonly string[]

    • get BooleanTypeNames(): readonly string[]

      SQL type names this dialect uses for boolean columns.

      Returns readonly string[]

    • get CurrencyTypeNames(): readonly string[]

      SQL type names this dialect uses for fixed-precision currency columns.

      Returns readonly string[]

    • get DateTypeNames(): readonly string[]

      SQL type names this dialect uses for date / time / timestamp columns.

      Returns readonly string[]

    • get DefaultPagingOrderBy(): string

      Default ORDER BY expression for paging when no user-specified ORDER BY exists. SQL Server: '(SELECT NULL)', PostgreSQL: '1'

      Returns string

    • get FixedWidthStringTypeNames(): readonly string[]

      Subset of StringTypeNames that represents fixed-width / space-padded character types. SQL Server char/nchar and PostgreSQL char/bpchar/character (without varying) all right-pad stored values with spaces up to the declared length and return that padding in result sets. Variable-width types (varchar, nvarchar, text, etc.) do not.

      Used by BaseEntity to rtrim padding on load so dirty-checks and downstream consumers see the logical value, not the storage form.

      Returns readonly string[]

    • get FloatTypeNames(): readonly string[]

      SQL type names this dialect uses for floating-point / decimal columns.

      Returns readonly string[]

    • get IntegerTypeNames(): readonly string[]

      SQL type names this dialect uses for integer columns (int, bigint, smallint, …).

      Returns readonly string[]

    • get IntervalTypeNames(): readonly string[]

      SQL type names this dialect uses for interval / duration columns.

      Returns readonly string[]

    • get JsonTypeNames(): readonly string[]

      SQL type names this dialect uses for JSON / XML structured columns.

      Returns readonly string[]

    • get MaxColumnCount(): number

      SQL Server's hard per-table column cap.

      Returns number

    • get MaxInRowSizeBytes(): number

      SQL Server enforces a hard ~8060-byte in-row row size; only variable-length values go off-row.

      Returns number

    • get MaxKeyStringLength(): number

      SQL Server index keys are limited to 900 bytes → 450 NVARCHAR (2-byte) chars.

      Returns number

    • get NetworkTypeNames(): readonly string[]

      SQL type names this dialect uses for network address columns (inet, cidr, …).

      Returns readonly string[]

    • get NullLiteral(): string

      Returns the dialect's literal representation of NULL as it would appear in generated SQL (e.g. as the result of a default-value formatter). Both SQL Server and PostgreSQL use the bare keyword NULL, but a future dialect could differ — codegen comparisons should route through this rather than hard-coding the string.

      Returns string

    • get ParserDialect(): string

      Returns the dialect name used by node-sql-parser for AST parsing. SQL Server: 'TransactSQL', PostgreSQL: 'PostgresQL', etc.

      Returns string

    • get StringTypeNames(): readonly string[]

      SQL type names this dialect uses for variable-length character / text columns.

      Returns readonly string[]

    • get UuidTypeNames(): readonly string[]

      SQL type names this dialect uses for UUID / uniqueidentifier columns.

      Returns readonly string[]

    Methods

    • Returns ALTER COLUMN clause(s) for type/nullability changes. SQL Server: ALTER TABLE t ALTER COLUMN [col] newType NULL/NOT NULL; PostgreSQL: ALTER TABLE t ALTER COLUMN "col" TYPE newType, ALTER COLUMN "col" SET/DROP NOT NULL;

      Parameters

      Returns string

    • Wraps a list of statements in ONE all-or-nothing transaction batch for this platform, ready to run as a single ExecuteSQL(script) call. Owns the platform-specific session/transaction setup so callers don't sniff PlatformKey themselves:

      • SQL Server: SET QUOTED_IDENTIFIER ON / SET ANSI_NULLS ON (required for UPDATE/DELETE against tables with filtered / computed-column indexes or indexed views — Msg 1934 otherwise)
        • SET XACT_ABORT ON (any failure rolls the whole batch back) + BEGIN/COMMIT TRANSACTION.
      • PostgreSQL: plain BEGIN … COMMIT — no session pragmas (QUOTED_IDENTIFIER/ANSI_NULLS are SQL-Server concepts) and PostgreSQL already aborts the whole transaction on any error.

      Returns an empty string for an empty statement list (nothing to run).

      Parameters

      • statements: string[]

        individual SQL statements (each WITHOUT a trailing ;)

      Returns string

    • Returns a boolean literal for the platform. SQL Server: "1"/"0", PostgreSQL: "true"/"false"

      Parameters

      • value: boolean

      Returns string

    • Returns the SQL type token for a boolean parameter in a stored-procedure / function signature. Used by codegen when emitting tolerant-SP _Clear companion parameters and other boolean-typed params.

      SQL Server: bit (BIT type, 0/1) PostgreSQL: boolean (BOOLEAN type, TRUE/FALSE)

      Hardcoding bit everywhere worked on SQL Server but produced sprocs that PG rejected as operator does not exist: boolean = integer when the generated CASE compared a bit-declared parameter with = 1.

      Returns string

    • Returns a CAST to a bounded-width string type. Used when the result needs to be comparable against an indexed column (SQL Server cannot compare/index NVARCHAR(MAX)) or against a fixed-width text column such as MJ's RecordID (NVARCHAR(450) on SQL Server).

      Implemented by composing ResolveAbstractType({ type: 'string', maxLength }), which dialects already supply — SQL Server emits NVARCHAR(N) and PostgreSQL emits VARCHAR(N). Defaults to MJ's standard 450-char width to match the cap on indexable string columns in SQL Server.

      Parameters

      • expr: string
      • maxLength: number = 450

      Returns string

    • Returns a CAST-to-text expression. SQL Server: CAST(expr AS NVARCHAR(MAX)), PostgreSQL: CAST(expr AS TEXT)

      Parameters

      • expr: string

      Returns string

    • Returns a CAST-to-UUID expression. SQL Server: CAST(expr AS UNIQUEIDENTIFIER), PostgreSQL: CAST(expr AS UUID)

      Parameters

      • expr: string

      Returns string

    • SQL Server supports COALESCE as an ANSI-standard alternative to its native ISNULL. The two differ subtly in return-type inference and argument arity (COALESCE is n-ary; ISNULL is two-arg only). Use this helper when codegen needs the n-ary form or when caller intent is ANSI-portable rather than T-SQL-native.

      Parameters

      • expr: string
      • fallback: string

      Returns string

    • Returns description metadata SQL for a column. SQL Server: EXEC sp_addextendedproperty with

      Parameters

      • schema: string
      • table: string
      • column: string
      • comment: string

      Returns string

      = 'COLUMN' PostgreSQL: COMMENT ON COLUMN schema."table"."column" IS '...';

      This extends CommentOnObject to support the 3-part column reference that CommentOnObject doesn't handle.

    • CommentOnColumn that is safe to re-run. Default returns the standard statement (PostgreSQL COMMENT ON COLUMN already includes its terminator and is idempotent). SQL Server overrides to guard sp_addextendedproperty.

      Parameters

      • schema: string
      • table: string
      • column: string
      • comment: string

      Returns string

    • Returns a COMMENT ON statement (PostgreSQL) or sp_addextendedproperty (SQL Server).

      Parameters

      • objectType: string
      • schema: string
      • name: string
      • comment: string

      Returns string

    • CommentOnObject that is safe to re-run (no error if the description already exists). Default returns the standard statement terminated with ';' — adequate where the comment statement is inherently idempotent (PostgreSQL COMMENT ON replaces in place). SQL Server overrides to guard sp_addextendedproperty with a fn_listextendedproperty check.

      Parameters

      • objectType: string
      • schema: string
      • name: string
      • comment: string

      Returns string

    • Returns a conditional IF/ELSE block in platform-appropriate procedural SQL. SQL Server: IF (condition) BEGIN thenSQL END ELSE BEGIN elseSQL END PostgreSQL: DO $$ BEGIN IF condition THEN thenSQL; ELSE elseSQL; END IF; END $$;

      Parameters

      • condition: string

        SQL boolean condition

      • thenSQL: string

        SQL to execute when condition is true

      • OptionalelseSQL: string

        Optional SQL to execute when condition is false

      Returns string

    • Whether the platform supports CREATE OR REPLACE for a given object type. PostgreSQL supports it for FUNCTION, VIEW. SQL Server does not.

      Parameters

      • _objectType: string

      Returns boolean

    • Returns CREATE SCHEMA IF NOT EXISTS SQL. SQL Server: IF NOT EXISTS (...) EXEC('CREATE SCHEMA [name]'); GO PostgreSQL: CREATE SCHEMA IF NOT EXISTS "name";

      Parameters

      • schemaName: string

      Returns string

    • A full CREATE TABLE that runs only if the table is absent, as a SINGLE statement. Default (PostgreSQL et al.): CREATE TABLE IF NOT EXISTS <fullTable> (...); SQL Server overrides with an IF OBJECT_ID(...) IS NULL guard (it has no native CREATE TABLE IF NOT EXISTS).

      Parameters

      • fullTable: string

        Already-quoted schema.table identifier

      • columnsBody: string

        The column/constraint lines that go between the parentheses

      Returns string

    • Returns a full CREATE TABLE wrapped in a "create if not exists" guard. SQL Server: IF NOT EXISTS (sys.tables check) BEGIN CREATE TABLE ... END; PostgreSQL: CREATE TABLE IF NOT EXISTS ...;

      Parameters

      • schema: string

        Schema name

      • tableName: string

        Table name

      • columnsDDL: string

        The column definitions (everything between the parentheses)

      Returns string

    • Returns a date/time arithmetic expression. SQL Server: DATEADD(MINUTE, 30, GETUTCDATE()) PostgreSQL: (NOW() AT TIME ZONE 'UTC') + INTERVAL '30 minutes'

      Parameters

      • unit: "MINUTE" | "HOUR" | "DAY"

        Time unit

      • amount: number

        Number of units to add (can be negative)

      • baseExpr: string

        Base timestamp expression (e.g., from CurrentTimestampUTC())

      Returns string

    • Returns the empty-GUID sentinel literal (00000000-0000-0000-0000-000000000000) formatted for use in a CASE-comparison expression. The base class returns the literal as a plain quoted string — SQL Server's implicit conversion accepts that directly. Dialects with strict typing (PostgreSQL) override to add the explicit cast their grammar requires.

      Returns string

    • SQL Server-specific Flyway escape. Interleaves a CAST(N'' AS NVARCHAR(MAX)) between the split halves so the running T-SQL concat chain inherits NVARCHAR(MAX) precedence. Without the cast, N'a' + N'b' produces NVARCHAR(a+b) capped at NVARCHAR(4000) and silently truncates anything past 4,000 characters.

      Parameters

      • sql: string

      Returns string

    • Minimum in-row byte footprint of a column. Off-row-capable variable-length / LOB types (incl. (N)VARCHAR(MAX)) contribute only a 24-byte in-row pointer; fixed-length types contribute their full size. Unknown types are treated as off-row pointers (conservative).

      Parameters

      • rawSqlType: string

      Returns number

    • Returns SQL to check if a database object exists.

      Parameters

      • objectType: string

        "TABLE", "VIEW", "FUNCTION", "PROCEDURE", "TRIGGER"

      • schema: string

        Schema name

      • name: string

        Object name

      Returns string

    • SQL Server FK-graph query for cascade planning — reads the sys.foreign_keys catalog. Returns one row per FK column with childNullable (from sys.columns.is_nullable) and colCount (columns in the constraint, for composite exclusion). Both parent + child are filtered to schema. Schema is embedded as a literal (no bind params) so it runs via ExecuteSQL(sql).

      Parameters

      • schema: string

      Returns string

    • Returns DDL to create a full-text index. SQL Server: FULLTEXT CATALOG + FULLTEXT INDEX PostgreSQL: tsvector column + GIN index

      Parameters

      • table: string
      • columns: string[]
      • Optionalcatalog: string

      Returns string

    • Returns a full-text search predicate expression. SQL Server: CONTAINS(column, searchTerm) PostgreSQL: column @@ plainto_tsquery('english', searchTerm)

      Parameters

      • column: string
      • searchTerm: string

      Returns string

    • Returns a GRANT statement for the platform.

      Parameters

      • permission: string
      • _objectType: string
      • schema: string
      • object: string
      • role: string

      Returns string

    • Returns an IIF/CASE equivalent expression. SQL Server: IIF(condition, trueVal, falseVal) PostgreSQL: CASE WHEN condition THEN trueVal ELSE falseVal END

      Parameters

      • condition: string
      • trueVal: string
      • falseVal: string

      Returns string

    • Returns true if the given error represents an infrastructure-level connection failure (timeout, refused, pool closed, etc.) as opposed to a query-level error (bad SQL, constraint violation).

      Each dialect implements this using its driver's structured error types:

      • SQL Server (mssql): error.name === 'ConnectionError'
      • PostgreSQL (pg): Node.js network error codes on plain Error

      Used by GenericDatabaseProvider to re-throw connection errors from RunView/RunQuery instead of swallowing them into { Success: false }.

      Parameters

      • e: unknown

      Returns boolean

    • SQL Server has both ISNULL (T-SQL native, two-arg only) and COALESCE (ANSI, n-ary). For two-argument null-coalescing we emit the native ISNULL form so generated SPs match the conventional T-SQL idiom and the data-type-of-first-argument semantics callers may already rely on.

      Parameters

      • expr: string
      • fallback: string

      Returns string

    • Returns true if value is the dialect's representation of a NULL literal in generated SQL. Comparison is case-insensitive after trimming whitespace. Subclasses may override if a dialect uses a non-keyword form (none currently do).

      Parameters

      • value: string

      Returns boolean

    • Returns a JSON value extraction expression. SQL Server: JSON_VALUE(column, path) PostgreSQL: column->>'path' or jsonb_extract_path_text

      Parameters

      • column: string
      • path: string

      Returns string

    • Wraps an expression in the dialect's lowercase function — used for case-insensitive comparison when authoring filters that must work on both SS (default case-insensitive collation) and PG (case-sensitive).

      Both SQL Server and PostgreSQL implement LOWER() per the ANSI SQL standard, so the default returns LOWER(${expr}). A subclass would override only for an exotic dialect (e.g. one that exposes lc() or needs a CAST first).

      Use this instead of hardcoding LOWER(...) in callers — keeps the dialect-aware SQL surface in one place per the SQLDialect contract.

      Parameters

      • expr: string

      Returns string

    • Convenience: maps a SQL Server type to this dialect's equivalent.

      Parameters

      • sqlServerType: string
      • Optionallength: number
      • Optionalprecision: number
      • Optionalscale: number

      Returns MappedType

    • Convenience: maps a SQL Server type to a full type string.

      Parameters

      • sqlServerType: string
      • Optionallength: number
      • Optionalprecision: number
      • Optionalscale: number

      Returns string

    • Returns the default-value clause appended to a parameter declaration. SQL Server: = NULL (or = 0, etc.), PostgreSQL: DEFAULT NULL. value should be a SQL literal already formatted by the caller (e.g. the dialect's NullLiteral, a quoted string, a numeric literal).

      Parameters

      • value: string

      Returns string

    • Returns the parameter-reference syntax used by this dialect's stored-procedure / function bodies. SQL Server: @MyName, PostgreSQL functions: p_my_name. Codegen should call this rather than hard-coding '@' + name.

      Parameters

      • name: string

      Returns string

    • Returns the SQL syntax for calling a stored procedure or function. SQL Server: EXEC [schema].[name] @p0,

      Parameters

      • schema: string
      • name: string
      • params: string[]

      Returns string

      PostgreSQL: SELECT * FROM schema.name($1, $2)

    • SQL Server identifiers are case-insensitive by default, so a bare alias preserves the requested casing when echoed in result-set column metadata. Bracketed quoting would also work but is unnecessary.

      Parameters

      • aliasName: string

      Returns string

    • Quotes a database identifier (table name, column name, etc.). SQL Server: [name], PostgreSQL: "name"

      Parameters

      • name: string

      Returns string

    • Produces a schema-qualified object reference. SQL Server: [schema].[object], PostgreSQL: schema."object"

      Parameters

      • schema: string
      • object: string

      Returns string

    • Quotes a value as a SQL string literal. Both SQL Server and PostgreSQL use single quotes with '' doubling to escape internal apostrophes — this is concrete in the base class so callers don't reinvent the value.replace(/'/g, "''") pattern. Subclasses may override if a future dialect needs a different escape rule.

      Parameters

      • value: string

      Returns string

    • Returns a non-fatal signal/notice statement detectable in CLI output. Used for signaling conditions (e.g., "lock held") without aborting the script. SQL Server: RAISERROR('message', 16, 1) — appears in sqlcmd stdout PostgreSQL: RAISE NOTICE 'message' — appears in psql stderr

      Note: For PostgreSQL, this must be used inside a ConditionalBlock (DO $$ context).

      Parameters

      • message: string

        Signal message to emit (used for detection in CLI output)

      Returns string

    • Resolves an abstract schema field type to a concrete SQL type string. Used by SchemaEngine for DDL generation from platform-agnostic definitions. SQL Server: 'string' -> 'NVARCHAR(255)', 'boolean' -> 'BIT' PostgreSQL: 'string' -> 'VARCHAR(255)', 'boolean' -> 'BOOLEAN'

      Parameters

      Returns string

    • Returns the clause used to get inserted values back. SQL Server: OUTPUT INSERTED.col1, INSERTED.col2 PostgreSQL: RETURNING col1, col2

      Parameters

      • Optionalcolumns: string[]

      Returns string

    • Splits an oversized SQL batch into individual statements on ;+EOL boundaries so a caller (e.g. the RSU migration executor) can re-group them into smaller chunks that each fit under a client request timeout.

      Base implementation = the naive split(/;\s*\n/g) semantics: split on a ; followed by optional inline whitespace and a newline, trim each fragment, drop empties, and ensure each returned statement ends with ;. This is correct for SQL Server (no dollar-quoted blocks).

      PostgreSQL overrides this with a dollar-quote-aware split that never tears apart DO $$ … $$ / $tag$ … $tag$ blocks whose bodies legitimately contain ;+newline.

      Parameters

      • batch: string

      Returns string[]

    • Returns a STRING_SPLIT or equivalent expression. SQL Server: STRING_SPLIT(value, delimiter) PostgreSQL: string_to_array(value, delimiter) or regexp_split_to_table

      Parameters

      • value: string
      • delimiter: string

      Returns string