Class PvtSqlGenerator

Assembly: redb.MSSql.Pro.dll

PVT SQL generator for T-SQL syntax.
Uses MAX(CASE WHEN) for scalar fields - single pass optimization.
Uses STRING_AGG for array fields (SQL Server 2017+).
Two-level CTE: raw_values (aggregation) → pvt_cte (filters).
SECURITY: Parameterized SQL queries.

public class PvtSqlGenerator

Inheritance

ObjectPvtSqlGenerator

Properties

AliasMappings

Gets the field alias mappings generated during SQL generation.

public IReadOnlyList<FieldAliasMapping> AliasMappings { get; }

Methods

EscapeIdentifier(string)

Escapes field path for use as T-SQL identifier.

public static string EscapeIdentifier(string path)

GenerateExistsClause(IReadOnlyList<FieldInfo>, string, string)

Generates EXISTS with PVT subquery for WHERE condition (T-SQL syntax).

public CompiledPvtQuery GenerateExistsClause(IReadOnlyList<FieldInfo> fields, string whereCondition, string tableAlias = "o")

GeneratePvtCte(IReadOnlyList<FieldInfo>, string, string, string?)

Generates two-level CTE with MAX(CASE WHEN) optimization.

public PvtSqlGenerator.PvtCteResult GeneratePvtCte(IReadOnlyList<FieldInfo> fields, string whereCondition, string schemeIdParam, string? additionalObjectFilter = null)

GeneratePvtSelect(IReadOnlyList<FieldInfo>, string)

Generates PVT subquery for SELECT (data retrieval) - T-SQL syntax.

public string GeneratePvtSelect(IReadOnlyList<FieldInfo> fields, string tableAlias = "o")

GetNestedDictFields(IReadOnlyList<FieldInfo>)

Gets nested Dictionary fields that require special handling.

public IReadOnlyList<FieldInfo> GetNestedDictFields(IReadOnlyList<FieldInfo> fields)

GetSimpleFields(IReadOnlyList<FieldInfo>)

Gets simple fields (including simple Dictionary fields) for pvt.

public IReadOnlyList<FieldInfo> GetSimpleFields(IReadOnlyList<FieldInfo> fields)

UnescapeIdentifier(string)

Restores original field path from escaped identifier.

public static string UnescapeIdentifier(string escaped)

WrapForMax(string, string)

Wraps column for MAX() aggregation with table alias.

public static string WrapForMax(string tableAlias, string dbColumn)

WrapForMax(string)

Wraps column for MAX() aggregation. T-SQL doesn't support MAX on BIT type.

public static string WrapForMax(string dbColumn)

Constructors