classInsertRowProjection
final class InsertRowProjection
What one column of a rewritten INSERT ... VALUES will read back as.
A rewritten INSERT does not insert: it selects the row it would have written. Every column of the target therefore has to be accounted for, including the ones the statement left out, because a row read back without them is not the row a database would have stored. A column is written into the projection as exactly one of four things, and which one it is decides what the SELECT says in its place.
Methods§
public function __construct(
private string $targetColumn,
private ?string $providedExpression,
private ?string $defaultExpression,
private ?int $generatedIdentityValue,
private bool $nullValue,
)Binds one column of the projection to exactly one of the four things it can be.
Every way of building one goes through a named constructor, because which of the four it is decides what the SELECT says in its place.
Parameters
$targetColumn | string | |
$providedExpression | ?string | |
$defaultExpression | ?string | |
$generatedIdentityValue | ?int | |
$nullValue | bool |
Test cases 7
InsertRowProjectionTest::testDefaultExpressionValueDefaultExpressionRepresentsProvidedDefaultGeneratedAndNullValuesWithoutSqlRenderingcoversInsertRowProjectionTest::testGeneratedIdentityValueAcceptsMinimumGeneratedIdentityValuecoversInsertRowProjectionTest::testIsNullValueIsFalseForEveryOtherKindOfColumncoversInsertRowProjectionTest::testNullValueReadsBackAsNullAndNothingElsecoversInsertRowProjectionTest::testProvidedCarriesTheExpressionTheStatementWrotecoversInsertRowProjectionTest::testProvidedExpressionIsNothingForAColumnTheStatementLeftOutcoversInsertRowProjectionTest::testTargetColumnNamesTheColumnOfTheTargetTablecovers
public static function provided(string $targetColumn, string $expression): selfProvided.
Parameters
$targetColumn | string | |
$expression | string |
Returns
selfTest cases 4
InsertRowProjectionTest::testDefaultExpressionValueDefaultExpressionRepresentsProvidedDefaultGeneratedAndNullValuesWithoutSqlRenderingcovers and callsInsertRowProjectionTest::testIsNullValueIsFalseForEveryOtherKindOfColumncovers and callsInsertRowProjectionTest::testProvidedCarriesTheExpressionTheStatementWrotecovers and callsInsertRowProjectionTest::testTargetColumnNamesTheColumnOfTheTargetTablecovers and calls
Called from 1
Calls 1
- new
selfline 45
public static function defaultExpression(string $targetColumn, string $expression): selfDefault expression.
Parameters
$targetColumn | string | |
$expression | string |
Returns
selfTest cases 1
Called from 1
Calls 1
- new
selfline 57
public static function generatedIdentity(string $targetColumn, int $value): selfParameters
$targetColumn | string | |
$value | int |
Returns
selfThrows
InvalidDefinitionException When the identity is not a positive numberTest cases 3
InsertRowProjectionTest::testDefaultExpressionValueDefaultExpressionRepresentsProvidedDefaultGeneratedAndNullValuesWithoutSqlRenderingcovers and callsInsertRowProjectionTest::testGeneratedIdentityValueAcceptsMinimumGeneratedIdentityValuecovers and callsInsertRowProjectionTest::testIsNullValueIsFalseForEveryOtherKindOfColumncovers and calls
Called from 1
Calls 2
- new InvalidDefinitionException line 66
- new
selfline 69
public static function nullValue(string $targetColumn): selfNull value.
Parameters
$targetColumn | string |
Returns
selfTest cases 3
InsertRowProjectionTest::testDefaultExpressionValueDefaultExpressionRepresentsProvidedDefaultGeneratedAndNullValuesWithoutSqlRenderingcovers and callsInsertRowProjectionTest::testNullValueReadsBackAsNullAndNothingElsecovers and callsInsertRowProjectionTest::testProvidedExpressionIsNothingForAColumnTheStatementLeftOutcovers and calls
Called from 1
Calls 1
- new
selfline 80
public function targetColumn(): stringTarget column.
Returns
stringpublic function providedExpression(): ?stringProvided expression.
Returns
?stringTest cases 4
InsertRowProjectionTest::testDefaultExpressionValueDefaultExpressionRepresentsProvidedDefaultGeneratedAndNullValuesWithoutSqlRenderingcoversInsertRowProjectionTest::testNullValueReadsBackAsNullAndNothingElsecoversInsertRowProjectionTest::testProvidedCarriesTheExpressionTheStatementWrotecoversInsertRowProjectionTest::testProvidedExpressionIsNothingForAColumnTheStatementLeftOutcovers
public function defaultExpressionValue(): ?stringDefault expression value.
Returns
?stringpublic function generatedIdentityValue(): ?intGenerated identity value.
Returns
?intTest cases 3
InsertRowProjectionTest::testDefaultExpressionValueDefaultExpressionRepresentsProvidedDefaultGeneratedAndNullValuesWithoutSqlRenderingcoversInsertRowProjectionTest::testGeneratedIdentityValueAcceptsMinimumGeneratedIdentityValuecoversInsertRowProjectionTest::testNullValueReadsBackAsNullAndNothingElsecovers
public function isNullValue(): boolReports whether null value.
Returns
boolTest cases 3
Private surface 5§
Implementation details, listed for orientation only.
private string $targetColumnprivate ?string $providedExpressionprivate ?string $defaultExpressionprivate ?int $generatedIdentityValueprivate bool $nullValueTest cases 8§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 7
InsertRowProjectionTest::testDefaultExpressionValueDefaultExpressionRepresentsProvidedDefaultGeneratedAndNullValuesWithoutSqlRenderingcovers and callsInsertRowProjectionTest::testGeneratedIdentityValueAcceptsMinimumGeneratedIdentityValuecovers and callsInsertRowProjectionTest::testIsNullValueIsFalseForEveryOtherKindOfColumncovers and callsInsertRowProjectionTest::testNullValueReadsBackAsNullAndNothingElsecovers and callsInsertRowProjectionTest::testProvidedCarriesTheExpressionTheStatementWrotecovers and callsInsertRowProjectionTest::testProvidedExpressionIsNothingForAColumnTheStatementLeftOutcovers and callsInsertRowProjectionTest::testTargetColumnNamesTheColumnOfTheTargetTablecovers and calls
Other tests reaching this symbol 1
Relations§
Static calls 4
- static-call ZtdQuery\Rewrite\InsertRowProjectionPlanner::plan() packages/ztd-query-core/src/Rewrite/InsertRowProjectionPlanner.php:29
- static-call ZtdQuery\Rewrite\InsertRowProjectionPlanner::plan() packages/ztd-query-core/src/Rewrite/InsertRowProjectionPlanner.php:33
- static-call ZtdQuery\Rewrite\InsertRowProjectionPlanner::plan() packages/ztd-query-core/src/Rewrite/InsertRowProjectionPlanner.php:37
- static-call ZtdQuery\Rewrite\InsertRowProjectionPlanner::plan() packages/ztd-query-core/src/Rewrite/InsertRowProjectionPlanner.php:40