classRewritePlan
final class RewritePlan
Represents the rewrite outcome for a single SQL statement.
Methods§
public function __construct(
string $sql,
QueryKind $kind,
ShadowMutation|null $mutation = null,
ReturningProjection|null $returningProjection = null,
AffectedRowsMode $affectedRowsMode = AffectedRowsMode::Changed,
)Parameters
$sql | string | Rewritten SQL. |
$kind | QueryKind | Classified kind of the statement. |
$mutation | ShadowMutation|null | Optional mutation to apply after execution. |
$returningProjection | ReturningProjection|null | Optional client-visible write projection. |
$affectedRowsMode | AffectedRowsMode | Observable affected-row convention. |
Calls 1
- class-const AffectedRowsMode::Changed() line 52
public function sql(): stringGet rewritten SQL.
Returns
stringTest cases 3
Called from 3
- method-call ZtdQuery\Session::processExecutedStatement() packages/ztd-query-core/src/Session.php:355
- method-call ZtdQuery\Session::runResultSelectAndApplyShadow() packages/ztd-query-core/src/Session.php:387
- method-call ZtdQuery\Session::runResultSelectAndApplyShadow() packages/ztd-query-core/src/Session.php:391
public function kind(): QueryKindGet statement kind for routing decisions.
Returns
Test cases 2
Called from 4
- method-call ZtdQuery\Session::shouldExecute() packages/ztd-query-core/src/Session.php:137
- method-call ZtdQuery\Session::needsPostProcessing() packages/ztd-query-core/src/Session.php:145
- method-call ZtdQuery\Session::needsPostProcessing() packages/ztd-query-core/src/Session.php:146
- method-call ZtdQuery\Session::processExecutedStatement() packages/ztd-query-core/src/Session.php:347
public function mutation(): ?ShadowMutationGet the mutation for write simulation, if any.
Returns
public function requireMutation(): ShadowMutationAnswers the mutation a simulated write must carry.
A plan whose kind says the write was simulated and that carries no mutation describes nothing the shadow could be told, so the statement is refused rather than read back as though it had been simulated.
Returns
ShadowMutation The mutationThrows
RuntimeException When the plan carries noneTest cases 2
Called from 2
Calls 1
- new
RuntimeExceptionline 99
public function returningProjection(): ?ReturningProjectionReturning projection.
Returns
Test cases 2
Called from 1
public function affectedRowsMode(): AffectedRowsModeAffected rows mode.
Returns
Test cases 1
Called from 1
Private surface 5§
Implementation details, listed for orientation only.
private string $sqlprivate QueryKind $kindprivate ShadowMutation|null $mutationprivate ?ReturningProjection $returningProjectionprivate AffectedRowsMode $affectedRowsModeTest cases 51§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 7
RewritePlanTest::testAffectedRowsModeReturningProjectionAffectedRowsModePlanCarriesReturningAndAffectedRowsMetadatacallsRewritePlanTest::testKindSqlKindPlanHoldsSqlKindAndMutationcallsRewritePlanTest::testMutationPlanWithoutMutationcallsRewritePlanTest::testRequireMutationAnswersTheMutationTheWriteWasSimulatedAscallsRewritePlanTest::testRequireMutationRefusesAPlanThatCarriesNonecallsRewritePlanTest::testReturningProjectionIsNothingWherePlanCarriesNonecallsRewritePlanTest::testSqlKeepsTheStatementThePlanIsForcalls
Other tests reaching this symbol 44
RewriterBenchcallsRewritePlanConsistencyChecker::checkPlancallsExceptionThrowingRewritercallsFakeSqlRewriter::rewritecallsFakeSqlRewriter::rewriteDdlcallsFakeSqlRewriter::rewriteDeletecallsFakeSqlRewriter::rewriteInsertcallsFakeSqlRewriter::rewriteSelectcallsFakeSqlRewriter::rewriteTruncatecallsFakeSqlRewriter::rewriteUpdatecallsFixedRewritercallsMultiRewritePlanTest::testCountReturnsNumberOfPlanscallsMultiRewritePlanTest::testFirstReturnsFirstPlancallsMultiRewritePlanTest::testGetReturnsNullForInvalidIndexcallsMultiRewritePlanTest::testGetReturnsPlanAtIndexcallsMultiRewritePlanTest::testPlansReturnsAllPlanscallsRewriteRefusalTestcallsMysqliResultProcessorTest::testProcessCreatesAnEmptyWriteResultcallsMysqliResultProcessorTest::testProcessPreservesTheOriginalDatabaseExceptioncallsMysqliResultProcessorTest::testProcessUsesNativeRowsForTheShadowMutationcallsSessionTest::testForeignKeyFailureRestoresShadowStatecallsSessionTest::testMutationFailureIsConvertedToDatabaseExceptioncallsSessionTest::testNeedsPostProcessingIsTrueForTheKindsThatChangeTheShadowcallsSessionTest::testProcessExecutedStatementReadsAReadStatementStraightBackcallsSessionTest::testRunResultSelectAndApplyShadowReadsBackWhatTheStatementWouldHaveWrittencallsSessionTest::testShouldExecuteIsFalseOnlyForAPlanNothingIsToBeRunForcallsStatementSimulatorTest::testReadStatementReturnsFalseWhenExecutorFailscallsStatementSimulatorTest::testReadStatementReturnsRowCountcallsStatementSimulatorTest::testSimulateRefusesAWriteThePlanCarriesNoMutationForcallsStatementSimulatorTest::testWriteStatementUpdatesShadowStorecallsZtdMysqliStatementTest::testExecuteAppliesRowsToTheShadowStorecallsZtdMysqliStatementTest::testExecuteDoesNotRunASkippedPlancallsZtdMysqliStatementTest::testExecuteHonorsReadAndUnplannedParameterscallsZtdMysqliStatementTest::testExecuteReturnsFalseForNativeFailurescallsZtdMysqliStatementTest::testGet_resultConsumesTheCachedNativeResultOncecallsZtdMysqliStatementTest::testGet_resultReturnsFalseForAStatementWithoutRowscallsZtdMysqliStatementTest::testResetClearsTheSimulatedAffectedRowCountcallsZtdMysqliTest::testPrepareAndQueriesPreserveNativeFalseResultscallsZtdMysqliTest::testQueryReturnsFalseWhenThePreparedExecutionFailscallsZtdMysqliTest::testQueryReturnsTrueWithoutAResultSetcallsZtdPdoStatementTest::testExecuteDelegatesWhenNoPostProcessingNeededcallsZtdPdoStatementTest::testExecuteReturnsFalseWhenShouldExecuteIsFalsecallsZtdPdoStatementTest::testExecuteWithoutPostProcessingRunsNativeStatementOncecallsZtdPdoStatementTest::testExecuteWrapsSimulationFailureAsAdapterExceptioncalls
Relations§
Instantiated in 22
- new ZtdQuery\RewriteRefusal::forUnsupported() packages/ztd-query-core/src/RewriteRefusal.php:55
- new ZtdQuery\RewriteRefusal::forUnknownSchema() packages/ztd-query-core/src/RewriteRefusal.php:79
- new ZtdQuery\RewriteRefusal::forUnknownSchema() packages/ztd-query-core/src/RewriteRefusal.php:88
- new ZtdQuery\Platform\MySql\Rewrite\MySqlRewriter::rewrite() packages/ztd-query-mysql/src/Rewrite/MySqlRewriter.php:90
- new ZtdQuery\Platform\MySql\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-mysql/src/Rewrite/StatementRewriter.php:58
- new ZtdQuery\Platform\MySql\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-mysql/src/Rewrite/StatementRewriter.php:71
- new ZtdQuery\Platform\MySql\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-mysql/src/Rewrite/StatementRewriter.php:74
- new ZtdQuery\Platform\MySql\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-mysql/src/Rewrite/StatementRewriter.php:82
- new ZtdQuery\Platform\MySql\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-mysql/src/Rewrite/StatementRewriter.php:90
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:67
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:75
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:80
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:89
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteMutation() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:131
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteMutation() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:135
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteMutation() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:141
- new ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter::rewriteMutation() packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:146
- new ZtdQuery\Platform\Sqlite\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-sqlite/src/Rewrite/StatementRewriter.php:59
- new ZtdQuery\Platform\Sqlite\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-sqlite/src/Rewrite/StatementRewriter.php:73
- new ZtdQuery\Platform\Sqlite\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-sqlite/src/Rewrite/StatementRewriter.php:79
- new ZtdQuery\Platform\Sqlite\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-sqlite/src/Rewrite/StatementRewriter.php:87
- new ZtdQuery\Platform\Sqlite\Rewrite\StatementRewriter::rewriteStatement() packages/ztd-query-sqlite/src/Rewrite/StatementRewriter.php:94
Method calls 11
- method-call ZtdQuery\Session::shouldExecute() packages/ztd-query-core/src/Session.php:137
- method-call ZtdQuery\Session::needsPostProcessing() packages/ztd-query-core/src/Session.php:145
- method-call ZtdQuery\Session::needsPostProcessing() packages/ztd-query-core/src/Session.php:146
- method-call ZtdQuery\Session::processExecutedStatement() packages/ztd-query-core/src/Session.php:347
- method-call ZtdQuery\Session::processExecutedStatement() packages/ztd-query-core/src/Session.php:354
- method-call ZtdQuery\Session::processExecutedStatement() packages/ztd-query-core/src/Session.php:355
- method-call ZtdQuery\Session::processExecutedStatement() packages/ztd-query-core/src/Session.php:356
- method-call ZtdQuery\Session::processExecutedStatement() packages/ztd-query-core/src/Session.php:364
- method-call ZtdQuery\Session::runResultSelectAndApplyShadow() packages/ztd-query-core/src/Session.php:384
- method-call ZtdQuery\Session::runResultSelectAndApplyShadow() packages/ztd-query-core/src/Session.php:387
- method-call ZtdQuery\Session::runResultSelectAndApplyShadow() packages/ztd-query-core/src/Session.php:391
Type declarations 26
- type ZtdQuery\Rewrite\MultiRewritePlan packages/ztd-query-core/src/Rewrite/MultiRewritePlan.php:48
- type ZtdQuery\Rewrite\MultiRewritePlan packages/ztd-query-core/src/Rewrite/MultiRewritePlan.php:56
- type ZtdQuery\Rewrite\SqlRewriter packages/ztd-query-core/src/Rewrite/SqlRewriter.php:62
- type ZtdQuery\RewriteRefusal packages/ztd-query-core/src/RewriteRefusal.php:45
- type ZtdQuery\RewriteRefusal packages/ztd-query-core/src/RewriteRefusal.php:69
- type ZtdQuery\Session packages/ztd-query-core/src/Session.php:135
- type ZtdQuery\Session packages/ztd-query-core/src/Session.php:143
- type ZtdQuery\Session packages/ztd-query-core/src/Session.php:314
- type ZtdQuery\Session packages/ztd-query-core/src/Session.php:345
- type ZtdQuery\Session packages/ztd-query-core/src/Session.php:382
- type ZtdQuery\Platform\MySql\Rewrite\MySqlRewriter packages/ztd-query-mysql/src/Rewrite/MySqlRewriter.php:80
- type ZtdQuery\Platform\MySql\Rewrite\StatementRewriter packages/ztd-query-mysql/src/Rewrite/StatementRewriter.php:43
- type ZtdQuery\Adapter\Mysqli\Session\MysqliResultProcessor packages/ztd-query-mysqli-adapter/src/Session/MysqliResultProcessor.php:25
- type ZtdQuery\Adapter\Mysqli\Session\StatementExecution packages/ztd-query-mysqli-adapter/src/Session/StatementExecution.php:28
- type ZtdQuery\Adapter\Mysqli\ZtdMysqli::prepare() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:168
- type ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:51
- type ZtdQuery\Adapter\Pdo\Session\PreparedQuery packages/ztd-query-pdo-adapter/src/Session/PreparedQuery.php:37
- type ZtdQuery\Adapter\Pdo\Session\StatementExecution packages/ztd-query-pdo-adapter/src/Session/StatementExecution.php:34
- type ZtdQuery\Adapter\Pdo\Session\StatementExecution packages/ztd-query-pdo-adapter/src/Session/StatementExecution.php:87
- type ZtdQuery\Adapter\Pdo\ZtdPdo::prepare() packages/ztd-query-pdo-adapter/src/ZtdPdo.php:171
- type ZtdQuery\Adapter\Pdo\ZtdPdoStatement packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:53
- type ZtdQuery\Platform\Postgres\Rewrite\PgSqlRewriter packages/ztd-query-postgres/src/Rewrite/PgSqlRewriter.php:115
- type ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:64
- type ZtdQuery\Platform\Postgres\Rewrite\StatementRewriter packages/ztd-query-postgres/src/Rewrite/StatementRewriter.php:121
- type ZtdQuery\Platform\Sqlite\Rewrite\SqliteRewriter packages/ztd-query-sqlite/src/Rewrite/SqliteRewriter.php:115
- type ZtdQuery\Platform\Sqlite\Rewrite\StatementRewriter packages/ztd-query-sqlite/src/Rewrite/StatementRewriter.php:56