interfaceCastRenderer
interface CastRenderer
Renders platform-specific CAST expressions.
Each platform provides an implementation that maps ColumnDeclaration to the appropriate CAST syntax for that SQL dialect.
Methods§
public function renderCast(string $expression, ColumnDeclaration $type): stringRender a CAST expression for a given expression string.
Parameters
$expression | string | The SQL expression to cast (e.g. "'Alice'", "1", "NULL"). |
$type | ColumnDeclaration | The target column type. |
Returns
string A SQL CAST expression (e.g. "CAST('Alice' AS CHAR)").Called from 9
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Insert\ResultProjection::buildInsertRowSelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Insert/ResultProjection.php:98
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Insert\ResultProjection::buildInsertSetSelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Insert/ResultProjection.php:132
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Insert\ResultProjection::buildInsertSourceSelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Insert/ResultProjection.php:168
- method-call ZtdQuery\Platform\MySql\Sql\Value\MySqlValueRenderer::renderValue() packages/ztd-query-mysql/src/Sql/Value/MySqlValueRenderer.php:52
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\Insert\ExpressionCast::castInsertExpression() packages/ztd-query-postgres/src/Rewrite/Transformer/Insert/ExpressionCast.php:37
- method-call ZtdQuery\Platform\Postgres\Sql\Value\PgSqlValueRenderer::renderValue() packages/ztd-query-postgres/src/Sql/Value/PgSqlValueRenderer.php:55
- method-call ZtdQuery\Platform\Postgres\Sql\Value\PgSqlValueRenderer::renderValue() packages/ztd-query-postgres/src/Sql/Value/PgSqlValueRenderer.php:69
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Insert\InsertProjectionBuilder::buildInsertRowSelect() packages/ztd-query-sqlite/src/Rewrite/Transformer/Insert/InsertProjectionBuilder.php:136
- method-call ZtdQuery\Platform\Sqlite\Sql\Value\SqliteValueRenderer::renderValue() packages/ztd-query-sqlite/src/Sql/Value/SqliteValueRenderer.php:66
public function renderNullCast(ColumnDeclaration $type): stringRender a CAST expression for NULL with the given type.
Used for empty CTE definitions to preserve column type information.
Parameters
$type | ColumnDeclaration | The target column type. |
Returns
string A SQL CAST(NULL AS ...) expression.Called from 5
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Shadow\CteRows::emptySelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Shadow/CteRows.php:118
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\Cte\RowSourceRenderer::renderFallbackNullCast() packages/ztd-query-postgres/src/Rewrite/Transformer/Cte/RowSourceRenderer.php:142
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\Cte\RowSourceRenderer::declaredSource() packages/ztd-query-postgres/src/Rewrite/Transformer/Cte/RowSourceRenderer.php:159
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Select\ShadowCteRenderer::renderFallbackNullCast() packages/ztd-query-sqlite/src/Rewrite/Transformer/Select/ShadowCteRenderer.php:86
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Select\ShadowCteRenderer::renderEmptyTable() packages/ztd-query-sqlite/src/Rewrite/Transformer/Select/ShadowCteRenderer.php:120
Test cases 8§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 1
CastRendererTestcalls
Other tests reaching this symbol 7
CastRendererContractTestcallsFakeCastRenderercallsInsertTransformerTest::testUsesInjectedCastRendererAndColumnTypescallsInsertTransformerTest::testUsesInjectedCastRendererForTypedValuecallsSelectTransformerTest::testCustomCastRendererIsUsedForRowscallsSelectTransformerTest::testTransformUsesCustomCastRenderercallsSelectTransformerTest::testTransformWithCustomCastRendererUsesItcalls
Relations§
Implemented by 4
- FakeCastRenderer packages/ztd-query-core/tests/Fake/FakeCastRenderer.php:14
- MySqlCastRenderer packages/ztd-query-mysql/src/Sql/Value/MySqlCastRenderer.php:16
- PgSqlCastRenderer packages/ztd-query-postgres/src/Sql/Value/PgSqlCastRenderer.php:16
- SqliteCastRenderer packages/ztd-query-sqlite/src/Sql/Value/SqliteCastRenderer.php:16
Method calls 14
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Insert\ResultProjection::buildInsertRowSelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Insert/ResultProjection.php:98
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Insert\ResultProjection::buildInsertSetSelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Insert/ResultProjection.php:132
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Insert\ResultProjection::buildInsertSourceSelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Insert/ResultProjection.php:168
- method-call ZtdQuery\Platform\MySql\Rewrite\Transformer\Shadow\CteRows::emptySelect() packages/ztd-query-mysql/src/Rewrite/Transformer/Shadow/CteRows.php:118
- method-call ZtdQuery\Platform\MySql\Sql\Value\MySqlValueRenderer::renderValue() packages/ztd-query-mysql/src/Sql/Value/MySqlValueRenderer.php:52
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\Cte\RowSourceRenderer::renderFallbackNullCast() packages/ztd-query-postgres/src/Rewrite/Transformer/Cte/RowSourceRenderer.php:142
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\Cte\RowSourceRenderer::declaredSource() packages/ztd-query-postgres/src/Rewrite/Transformer/Cte/RowSourceRenderer.php:159
- method-call ZtdQuery\Platform\Postgres\Rewrite\Transformer\Insert\ExpressionCast::castInsertExpression() packages/ztd-query-postgres/src/Rewrite/Transformer/Insert/ExpressionCast.php:37
- method-call ZtdQuery\Platform\Postgres\Sql\Value\PgSqlValueRenderer::renderValue() packages/ztd-query-postgres/src/Sql/Value/PgSqlValueRenderer.php:55
- method-call ZtdQuery\Platform\Postgres\Sql\Value\PgSqlValueRenderer::renderValue() packages/ztd-query-postgres/src/Sql/Value/PgSqlValueRenderer.php:69
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Insert\InsertProjectionBuilder::buildInsertRowSelect() packages/ztd-query-sqlite/src/Rewrite/Transformer/Insert/InsertProjectionBuilder.php:136
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Select\ShadowCteRenderer::renderFallbackNullCast() packages/ztd-query-sqlite/src/Rewrite/Transformer/Select/ShadowCteRenderer.php:86
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Select\ShadowCteRenderer::renderEmptyTable() packages/ztd-query-sqlite/src/Rewrite/Transformer/Select/ShadowCteRenderer.php:120
- method-call ZtdQuery\Platform\Sqlite\Sql\Value\SqliteValueRenderer::renderValue() packages/ztd-query-sqlite/src/Sql/Value/SqliteValueRenderer.php:66
Type declarations 24
- type ZtdQuery\Platform\MySql\Rewrite\Transformer\Insert\ResultProjection packages/ztd-query-mysql/src/Rewrite/Transformer/Insert/ResultProjection.php:28
- type ZtdQuery\Platform\MySql\Rewrite\Transformer\InsertTransformer packages/ztd-query-mysql/src/Rewrite/Transformer/InsertTransformer.php:27
- type ZtdQuery\Platform\MySql\Rewrite\Transformer\InsertTransformer packages/ztd-query-mysql/src/Rewrite/Transformer/InsertTransformer.php:40
- type ZtdQuery\Platform\MySql\Rewrite\Transformer\SelectTransformer packages/ztd-query-mysql/src/Rewrite/Transformer/SelectTransformer.php:27
- type ZtdQuery\Platform\MySql\Rewrite\Transformer\SelectTransformer packages/ztd-query-mysql/src/Rewrite/Transformer/SelectTransformer.php:40
- type ZtdQuery\Platform\MySql\Rewrite\Transformer\Shadow\CteRows packages/ztd-query-mysql/src/Rewrite/Transformer/Shadow/CteRows.php:32
- type ZtdQuery\Platform\MySql\Sql\Value\MySqlValueRenderer packages/ztd-query-mysql/src/Sql/Value/MySqlValueRenderer.php:21
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\Cte\RowSourceRenderer packages/ztd-query-postgres/src/Rewrite/Transformer/Cte/RowSourceRenderer.php:22
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\Cte\RowSourceRenderer packages/ztd-query-postgres/src/Rewrite/Transformer/Cte/RowSourceRenderer.php:30
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\Insert\ExpressionCast packages/ztd-query-postgres/src/Rewrite/Transformer/Insert/ExpressionCast.php:18
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\Insert\ExpressionCast packages/ztd-query-postgres/src/Rewrite/Transformer/Insert/ExpressionCast.php:23
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\Insert\ValueProjection packages/ztd-query-postgres/src/Rewrite/Transformer/Insert/ValueProjection.php:26
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\InsertTransformer packages/ztd-query-postgres/src/Rewrite/Transformer/InsertTransformer.php:24
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\InsertTransformer packages/ztd-query-postgres/src/Rewrite/Transformer/InsertTransformer.php:37
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\SelectTransformer packages/ztd-query-postgres/src/Rewrite/Transformer/SelectTransformer.php:30
- type ZtdQuery\Platform\Postgres\Rewrite\Transformer\SelectTransformer packages/ztd-query-postgres/src/Rewrite/Transformer/SelectTransformer.php:41
- type ZtdQuery\Platform\Postgres\Sql\Value\PgSqlValueRenderer packages/ztd-query-postgres/src/Sql/Value/PgSqlValueRenderer.php:26
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Insert\InsertProjectionBuilder packages/ztd-query-sqlite/src/Rewrite/Transformer/Insert/InsertProjectionBuilder.php:29
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:31
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:44
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Select\ShadowCteRenderer packages/ztd-query-sqlite/src/Rewrite/Transformer/Select/ShadowCteRenderer.php:26
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\SelectTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/SelectTransformer.php:30
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\SelectTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/SelectTransformer.php:46
- type ZtdQuery\Platform\Sqlite\Sql\Value\SqliteValueRenderer packages/ztd-query-sqlite/src/Sql/Value/SqliteValueRenderer.php:22