classInsertProjectionBuilder
final class InsertProjectionBuilder
Restricted visibility: declared "@visibility ZtdQuery\Platform\Sqlite". Code outside that scope must not name this declaration.
Builds INSERT SELECT and VALUES projections in table column order.
Methods§
public function __construct(
private CastRenderer $castRenderer,
private ShadowIdentityAllocator $identityAllocator,
private InsertSelectRenderer $insertSelectRenderer,
private SqliteParser $parser,
private InsertRowRenderer $rowRenderer,
)Binds the collaborators used by this operation.
Parameters
$castRenderer | CastRenderer | |
$identityAllocator | ShadowIdentityAllocator | |
$insertSelectRenderer | InsertSelectRenderer | |
$parser | SqliteParser | |
$rowRenderer | InsertRowRenderer |
public function buildInsertSelect<TValue>(
string $sql,
string $tableName,
list<string> $tableColumns,
list<string> $insertColumns,
array<string, ColumnDeclaration> $columnTypes,
array<string, string> $columnDefaults,
array<string, IdentityGenerationStrategy> $identityStrategies,
array<int, array<string, TValue>> $existingRows,
): stringParameters
$sql | string | |
$tableName | string | |
$tableColumns | list<string> | |
$insertColumns | list<string> | |
$columnTypes | array<string, ColumnDeclaration> | |
$columnDefaults | array<string, string> | |
$identityStrategies | array<string, IdentityGenerationStrategy> | |
$existingRows | array<int, array<string, TValue>> |
Returns
stringThrows
RuntimeExceptionTest cases 2
Called from 1
Calls 9
- method-call SqliteParser::hasInsertSelect() line 57
- method-call InsertProjectionBuilder::buildSelectSource() line 58
- static-call SqlTokenStream::tokenize() line 69
- static-call SqliteLexerProfile::create() line 69
- method-call SqliteParser::extractInsertValues() line 71
- function-call
countline 76 - new UnsupportedSqlException line 77
- method-call InsertProjectionBuilder::buildInsertRowSelect() line 79
- function-call
implodeline 91
public function buildInsertRowSelect<TValue>(
array<int, string> $values,
string $tableName,
list<string> $tableColumns,
list<string> $insertColumns,
array<string, ColumnDeclaration> $columnTypes,
array<string, string> $columnDefaults,
array<string, IdentityGenerationStrategy> $identityStrategies,
array<int, array<string, TValue>> $existingRows,
): stringParameters
$values | array<int, string> | |
$tableName | string | |
$tableColumns | list<string> | |
$insertColumns | list<string> | |
$columnTypes | array<string, ColumnDeclaration> | |
$columnDefaults | array<string, string> | |
$identityStrategies | array<string, IdentityGenerationStrategy> | |
$existingRows | array<int, array<string, TValue>> |
Returns
stringThrows
RuntimeExceptionTest cases 1
Called from 1
Calls 9
- static-call InsertProjectionBuilder::orderedValues() line 118
- function-call
countline 120 - new
RuntimeExceptionline 121 - method-call InsertRowRenderer::providedExpressions() line 123
- method-call ShadowIdentityAllocator::allocateMissing() line 124
- function-call
array_keysline 127 - method-call InsertRowRenderer::render() line 130
- method-call CastRenderer::renderCast() line 136
- function-call
implodeline 141
public static function orderedValues<T>(array<array-key, T> $values): list<T>Parameters
$values | array<array-key, T> |
Returns
list<T>Test cases 1
Called from 3
- static-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\Insert\InsertProjectionBuilder::buildInsertRowSelect() packages/ztd-query-sqlite/src/Rewrite/Transformer/Insert/InsertProjectionBuilder.php:118
- static-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:73
- static-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:74
public function buildSelectSource<TValue>(
string $sql,
string $tableName,
list<string> $tableColumns,
list<string> $insertColumns,
array<string, string> $columnDefaults,
array<string, IdentityGenerationStrategy> $identityStrategies,
array<int, array<string, TValue>> $existingRows,
): stringProjects an INSERT SELECT source and allocates any omitted identities.
Parameters
$sql | string | |
$tableName | string | |
$tableColumns | list<string> | |
$insertColumns | list<string> | |
$columnDefaults | array<string, string> | |
$identityStrategies | array<string, IdentityGenerationStrategy> | |
$existingRows | array<int, array<string, TValue>> |
Returns
stringThrows
RuntimeExceptionCalled from 1
Calls 4
- method-call SqliteParser::extractInsertSelect() line 178
- new UnsupportedSqlException line 180
- method-call ShadowIdentityAllocator::allocateSelectStarts() line 184
- method-call InsertSelectRenderer::render() line 191
Private surface 5§
Implementation details, listed for orientation only.
private CastRenderer $castRendererprivate ShadowIdentityAllocator $identityAllocatorprivate InsertSelectRenderer $insertSelectRendererprivate SqliteParser $parserprivate InsertRowRenderer $rowRendererTest cases 10§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 5
InsertProjectionBuilderTest::testBuildInsertRowSelectFillsDefaultsAndAppliesColumnTypescallsInsertProjectionBuilderTest::testBuildInsertSelectProjectsMultipleRowsWithGeneratedIdentitycallsInsertProjectionBuilderTest::testBuildInsertSelectRejectsMismatchedRowCardinalitycallsInsertProjectionBuilderTest::testBuildSelectSourceProjectsAnInsertSelectSourcecallsInsertProjectionBuilderTest::testOrderedValuesDiscardsKeysWithoutReorderingExpressionscalls
Other tests reaching this symbol 5
SqliteRewriterTestcallsStatementRewriterTestcallsInsertTransformerTestcallsSqliteTransformerTestcallsSqliteSessionFactoryTestcalls
Relations§
Instantiated in 1
Static calls 2
- static-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:73
- static-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:74