final class SelectTransformer
    implements SqlTransformer

Applies CTE shadowing to SELECT statements for PostgreSQL.

Key differences from MySQL SelectTransformer:

  • Uses double-quote identifiers ("table") instead of backticks
  • Uses AS MATERIALIZED for CTE definition (PG 12+ inline prevention)
  • Uses VALUES clause for multi-row CTEs instead of UNION ALL chains
  • Uses WHERE FALSE for empty CTEs instead of FROM DUAL WHERE 0
  • Uses PostgreSQL CAST types (INTEGER, TEXT, BOOLEAN, etc.)

Methods§

public function __construct(
    ?CastRenderer $castRenderer = null,
    ?IdentifierQuoter $quoter = null,
    ?ValueRenderer $valueRenderer = null,
)

Initializes the collaborators and state used by this select transformer.

Parameters

$castRenderer?CastRenderer
$quoter?IdentifierQuoter
$valueRenderer?ValueRenderer
Calls 6
public function transform(string $sql, array $tables): string

{@inheritDoc}

Parameters

$sqlstring
$tablesarray

Returns

string

Throws

UnsupportedSqlException when a shadow relation uses an unsupported TABLESAMPLE method.
Test cases 56
Called from 6
Calls 7

Private surface 6§

Implementation details, listed for orientation only.

private CastRenderer $castRenderer
private IdentifierQuoter $quoter
private ValueRenderer $valueRenderer
private PgSqlCteShadowComposer $cteComposer
private PgSqlGeneratedColumnProjector $generatedColumnProjector
private PgSqlTableSampleRewriter $tableSampleRewriter

Test cases 278§

Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.

Dedicated tests 53
Other tests reaching this symbol 225

Relations§

Instantiated in 1
Method calls 6
Type declarations 9