classSqliteCteShadowComposer
final class SqliteCteShadowComposer
Merges fixture CTEs with existing WITH declarations without shadowing user CTEs.
Methods§
public function compose(string $sql, array<string, string> $tableCtes): stringParameters
$sql | string | |
$tableCtes | array<string, string> |
Returns
stringTest cases 9
SqliteCteShadowComposerTest::testAddsShadowsAfterRecursiveModifiercallsSqliteCteShadowComposerTest::testComposesAReferencedShadowWithoutAnExistingWithClausecallsSqliteCteShadowComposerTest::testComposesShadowOverSchemaQualifiedSelectSourcecallsSqliteCteShadowComposerTest::testDoesNotTreatLiteralsCommentsOrIdentifierPrefixesAsReferencescallsSqliteCteShadowComposerTest::testHandlesAWithTokenWithoutFollowingHeaderTokenscallsSqliteCteShadowComposerTest::testIncludesTransitivelyReferencedShadowCtescallsSqliteCteShadowComposerTest::testInjectsReferencedBaseTableBeforeUserCtescallsSqliteCteShadowComposerTest::testPreservesUserCteThatOwnsThePhysicalTableNamecallsSqliteCteShadowComposerTest::testSkipsEntriesIndependentlyAndMatchesDeclaredNamesCaseInsensitivelycalls
Called from 1
Calls 9
- method-call CteDependencies::required() line 19
- new CteDependencies line 19
- function-call
array_keysline 20 - method-call SqliteSelectRelationParser::unqualify() line 26
- new SqliteSelectRelationParser line 26
- static-call SqlTokenStream::tokenize() line 27
- static-call SqliteLexerProfile::create() line 27
- function-call
implodeline 30 - function-call
substr_replaceline 39
public function declaredCteNames(string $sql): list<string>Parameters
$sql | string |
Returns
list<string>Test cases 4
SqliteCteShadowComposerTest::testDeclaredCteNamesReadsQuotedAndColumnListedCteNamescallsSqliteCteShadowComposerTest::testHandlesNonHeadersIncompleteHeadersAndEmptyInputcallsSqliteCteShadowComposerTest::testParsesRecursiveMaterializationAndNestedCteBodiescallsSqliteCteShadowComposerTest::testUnquotesEmptyAndEscapedCteIdentifierscalls
Called from 1
Calls 2
- method-call CteHeaderParser::parseHeader() line 52
- new CteHeaderParser line 52
public function carryPrefix(string $originalSql, string $rewrittenStatement): stringPreserves the original WITH prefix around a rewritten statement.
Parameters
$originalSql | string | |
$rewrittenStatement | string |
Returns
stringTest cases 6
SqliteCteShadowComposerTest::testCarriesAnEmptyRewriteWithoutDereferencingMissingTokenscallsSqliteCteShadowComposerTest::testCarryPrefixCarriesTheCompleteCteHeaderOntoARewrittenDmlProjectioncallsSqliteCteShadowComposerTest::testMergesProjectionCtesIntoTheOriginalHeadercallsSqliteCteShadowComposerTest::testMergesRecursiveHeadersAndPreservesLeadingCommentscallsSqliteCteShadowComposerTest::testOrdersShadowCtesBeforeUserCtesThatReadThemcallsSqliteCteShadowComposerTest::testRecognizesRecursiveRewrittenHeaderDependenciescalls
Called from 3
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\DeleteTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/DeleteTransformer.php:56
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:103
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\UpdateTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/UpdateTransformer.php:63
Calls 11
- method-call CteHeaderParser::parseHeader() line 60
- new CteHeaderParser line 60
- function-call
rtrimline 65 - function-call
substrline 65 - static-call SqlTokenStream::tokenize() line 67
- static-call SqliteLexerProfile::create() line 67
- function-call
trimline 82 - method-call CteReferences::referencesAnyIdentifier() line 88
- new CteReferences line 88
- method-call CtePrefixMerger::prepend() line 92
- new CtePrefixMerger line 92
public function statementSql(string $sql): stringReturns the main statement following any WITH declarations.
Parameters
$sql | string |
Returns
stringTest cases 3
Calls 3
- method-call CteHeaderParser::parseHeader() line 108
- new CteHeaderParser line 108
- function-call
substrline 110
Test cases 35§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 20
SqliteCteShadowComposerTest::testAddsShadowsAfterRecursiveModifiercallsSqliteCteShadowComposerTest::testCarriesAnEmptyRewriteWithoutDereferencingMissingTokenscallsSqliteCteShadowComposerTest::testCarryPrefixCarriesTheCompleteCteHeaderOntoARewrittenDmlProjectioncallsSqliteCteShadowComposerTest::testComposesAReferencedShadowWithoutAnExistingWithClausecallsSqliteCteShadowComposerTest::testComposesShadowOverSchemaQualifiedSelectSourcecallsSqliteCteShadowComposerTest::testDeclaredCteNamesReadsQuotedAndColumnListedCteNamescallsSqliteCteShadowComposerTest::testDoesNotTreatLiteralsCommentsOrIdentifierPrefixesAsReferencescallsSqliteCteShadowComposerTest::testHandlesAWithTokenWithoutFollowingHeaderTokenscallsSqliteCteShadowComposerTest::testHandlesNonHeadersIncompleteHeadersAndEmptyInputcallsSqliteCteShadowComposerTest::testIncludesTransitivelyReferencedShadowCtescallsSqliteCteShadowComposerTest::testInjectsReferencedBaseTableBeforeUserCtescallsSqliteCteShadowComposerTest::testMergesProjectionCtesIntoTheOriginalHeadercallsSqliteCteShadowComposerTest::testMergesRecursiveHeadersAndPreservesLeadingCommentscallsSqliteCteShadowComposerTest::testOrdersShadowCtesBeforeUserCtesThatReadThemcallsSqliteCteShadowComposerTest::testParsesRecursiveMaterializationAndNestedCteBodiescallsSqliteCteShadowComposerTest::testPreservesUserCteThatOwnsThePhysicalTableNamecallsSqliteCteShadowComposerTest::testRecognizesRecursiveRewrittenHeaderDependenciescallsSqliteCteShadowComposerTest::testSkipsEntriesIndependentlyAndMatchesDeclaredNamesCaseInsensitivelycallsSqliteCteShadowComposerTest::testStatementSqlExtractsTheStatementFollowingTheCteHeadercallsSqliteCteShadowComposerTest::testUnquotesEmptyAndEscapedCteIdentifierscalls
Other tests reaching this symbol 15
ReferencedTableLookupTest::testAssertKnownTablesPermitsQueriesBeforeFixtureRegistrationcallsReferencedTableLookupTest::testAssertKnownTablesRejectsUnknownSourcesWhenContextExistscallsReferencedTableLookupTest::testFindUnknownTableIgnoresUserCtesAndFindsUnknownJoinSourcescallsReferencedTableLookupTest::testHasSchemaContextIncludesViewscallsReferencedTableLookupTest::testTableExistsRecognizesEachSchemaStatecallsSqliteRewriterTestcallsStatementRewriterTest::testRewriteStatementRejectsUnknownReadSourcescallsStatementRewriterTest::testRewriteStatementSimulatesWritesWithoutApplyingThemcallsStatementRewriterTest::testRewriteStatementUsesShadowRowsForReadscallsDeleteTransformerTestcallsInsertTransformerTestcallsSelectTransformerTestcallsSqliteTransformerTestcallsUpdateTransformerTestcallsSqliteSessionFactoryTestcalls
Relations§
Instantiated in 5
- new ZtdQuery\Platform\Sqlite\Rewrite\SqliteRewriter::__construct() packages/ztd-query-sqlite/src/Rewrite/SqliteRewriter.php:95
- new ZtdQuery\Platform\Sqlite\Rewrite\Transformer\DeleteTransformer::__construct() packages/ztd-query-sqlite/src/Rewrite/Transformer/DeleteTransformer.php:32
- new ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer::__construct() packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:52
- new ZtdQuery\Platform\Sqlite\Rewrite\Transformer\SelectTransformer::__construct() packages/ztd-query-sqlite/src/Rewrite/Transformer/SelectTransformer.php:53
- new ZtdQuery\Platform\Sqlite\Rewrite\Transformer\UpdateTransformer::__construct() packages/ztd-query-sqlite/src/Rewrite/Transformer/UpdateTransformer.php:34
Method calls 5
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Context\ReferencedTableLookup::findUnknownTable() packages/ztd-query-sqlite/src/Rewrite/Context/ReferencedTableLookup.php:43
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\DeleteTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/DeleteTransformer.php:56
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:103
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\SelectTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/SelectTransformer.php:110
- method-call ZtdQuery\Platform\Sqlite\Rewrite\Transformer\UpdateTransformer::transform() packages/ztd-query-sqlite/src/Rewrite/Transformer/UpdateTransformer.php:63
Type declarations 7
- type ZtdQuery\Platform\Sqlite\Rewrite\Context\ReferencedTableLookup packages/ztd-query-sqlite/src/Rewrite/Context/ReferencedTableLookup.php:24
- type ZtdQuery\Platform\Sqlite\Rewrite\SqliteRewriter packages/ztd-query-sqlite/src/Rewrite/SqliteRewriter.php:63
- type ZtdQuery\Platform\Sqlite\Rewrite\StatementRewriter packages/ztd-query-sqlite/src/Rewrite/StatementRewriter.php:38
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\DeleteTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/DeleteTransformer.php:21
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\InsertTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/InsertTransformer.php:35
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\SelectTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/SelectTransformer.php:33
- type ZtdQuery\Platform\Sqlite\Rewrite\Transformer\UpdateTransformer packages/ztd-query-sqlite/src/Rewrite/Transformer/UpdateTransformer.php:23