classStatementExecution
final class StatementExecution
implements StatementInterface
Coordinates rewritten preparation, native execution and shadow post-processing. Its StatementInterface exposes native result rows to the core result-select runner.
Methods§
public function __construct(
private PdoStatement $statement,
private Session $session,
private ?RewritePlan $plan,
private ?PreparedQuery $prepared = null,
private Bindings $bindings = new \ZtdQuery\Adapter\Pdo\Session\Bindings(),
)Retain the native statement and the plan that governs its execution.
Parameters
$statement | PdoStatement | |
$session | Session | |
$plan | ?RewritePlan | |
$prepared | ?PreparedQuery | |
$bindings | Bindings |
public function bindParameter(int|string $parameter, Closure(PDOStatement): bool $binding): boolRetain a parameter binding and apply it to the current native statement.
Parameters
$parameter | int|string | |
$binding | Closure(PDOStatement): bool |
Returns
boolCalled from 1
Calls 1
- method-call Bindings::parameter() line 47
public function execute(?array $params = null): bool{@inheritDoc}
Parameters
$params | ?array |
Returns
boolThrows
ZtdPdoException When shadow post-processing fails.Test cases 9
StatementExecutionTest::testBindingsRemainAvailableAcrossExecutionscallsStatementExecutionTest::testBindParameterRetainsReferencesAcrossRepreparationcallsStatementExecutionTest::testExecutePreparedRefreshesShadowReadsAndReplaysBindingscallsStatementExecutionTest::testExecuteSilentFailureDoesNotProduceAShadowResultcallsStatementExecutionTest::testFetchAllReturnsAssociativeRowscallsStatementExecutionTest::testNativeUnrewrittenExecutionDelegatesToTheNativeStatementcallsStatementExecutionTest::testResultColumnsRemainAvailableAfterRowsAreConsumedcallsStatementExecutionTest::testResultUpdatesShadowAndReturnsItsResultcallsStatementExecutionTest::testRowCountTracksNativeMutationscalls
Called from 1
Calls 8
- method-call Session::parameterBindingCompiler() line 61
- method-call Bindings::apply() line 65
- method-call Session::shouldExecute() line 67
- method-call
PDOStatement::execute()line 71 - method-call ParameterBinder::execute() line 72
- new ParameterBinder line 72
- method-call Session::needsPostProcessing() line 76
- method-call StatementExecution::postProcess() line 77
public function postProcess(RewritePlan $plan): boolApply a result-select query's rows to the session's shadow state.
Parameters
$plan | RewritePlan |
Returns
boolThrows
ZtdPdoException When the core rejects the simulated mutation.Called from 1
Calls 2
- method-call Session::processExecutedStatement() line 91
- new ZtdPdoException line 93
public function native(): PdoStatementReturn the driver statement currently serving this execution.
Returns
Test cases 4
StatementExecutionTest::testBindingsRemainAvailableAcrossExecutionscallsStatementExecutionTest::testBindParameterRetainsReferencesAcrossRepreparationcallsStatementExecutionTest::testExecutePreparedRefreshesShadowReadsAndReplaysBindingscallsStatementExecutionTest::testNativeUnrewrittenExecutionDelegatesToTheNativeStatementcalls
Called from 18
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::bindValue() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:84
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::bindColumn() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:140
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetch() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:192
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchAll() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:215
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchColumn() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:236
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchObject() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:268
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::rowCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:291
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::closeCursor() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:307
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::setFetchMode() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:333
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::errorCode() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:349
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::errorInfo() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:366
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getAttribute() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:382
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::setAttribute() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:399
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::columnCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:415
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getColumnMeta() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:432
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::nextRowset() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:448
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::debugDumpParams() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:465
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getIterator() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:491
public function result(): ?ExecuteResultReturn the result of shadow post-processing, when the query required it.
Returns
Test cases 5
StatementExecutionTest::testExecutePreparedRefreshesShadowReadsAndReplaysBindingscallsStatementExecutionTest::testExecuteSilentFailureDoesNotProduceAShadowResultcallsStatementExecutionTest::testNativeUnrewrittenExecutionDelegatesToTheNativeStatementcallsStatementExecutionTest::testPostProcessAppliesResultSelectRowsToTheShadowcallsStatementExecutionTest::testResultUpdatesShadowAndReturnsItsResultcalls
Called from 7
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetch() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:187
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchAll() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:210
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchColumn() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:232
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchObject() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:264
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::rowCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:287
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::rowCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:288
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getIterator() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:487
public function bindings(): BindingsReturn the bindings retained across native statement replacements.
Returns
Test cases 2
public function fetchAll(): array{@inheritDoc}
Returns
arrayTest cases 4
StatementExecutionTest::testExecutePreparedRefreshesShadowReadsAndReplaysBindingscallsStatementExecutionTest::testFetchAllReturnsAssociativeRowscallsStatementExecutionTest::testNativeUnrewrittenExecutionDelegatesToTheNativeStatementcallsStatementExecutionTest::testResultColumnsRemainAvailableAfterRowsAreConsumedcalls
Calls 2
- method-call PdoStatement::fetchAll() line 127
- new PdoStatement line 127
public function resultColumns(ResultColumnTypeResolver $typeResolver): array{@inheritDoc}
Parameters
$typeResolver | ResultColumnTypeResolver |
Returns
arrayTest cases 2
Calls 2
- method-call PdoStatement::resultColumns() line 135
- new PdoStatement line 135
public function rowCount(): intPrivate surface 6§
Implementation details, listed for orientation only.
private ?ExecuteResult $result = nullprivate PdoStatement $statementprivate Session $sessionprivate ?RewritePlan $planprivate ?PreparedQuery $prepared = nullprivate Bindings $bindings = new \ZtdQuery\Adapter\Pdo\Session\Bindings()Test cases 18§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 10
StatementExecutionTest::testBindingsRemainAvailableAcrossExecutionscallsStatementExecutionTest::testBindParameterRetainsReferencesAcrossRepreparationcallsStatementExecutionTest::testExecutePreparedRefreshesShadowReadsAndReplaysBindingscallsStatementExecutionTest::testExecuteSilentFailureDoesNotProduceAShadowResultcallsStatementExecutionTest::testFetchAllReturnsAssociativeRowscallsStatementExecutionTest::testNativeUnrewrittenExecutionDelegatesToTheNativeStatementcallsStatementExecutionTest::testPostProcessAppliesResultSelectRowsToTheShadowcallsStatementExecutionTest::testResultColumnsRemainAvailableAfterRowsAreConsumedcallsStatementExecutionTest::testResultUpdatesShadowAndReturnsItsResultcallsStatementExecutionTest::testRowCountTracksNativeMutationscalls
Other tests reaching this symbol 8
PdoConnectionTestcallsPdoStatementTestcallsDriverSessionFactoryTestcallsParameterBinderTestcallsPreparedQueryTestcallsZtdPdoExceptionTestcallsZtdPdoStatementTestcallsZtdPdoTestcalls
Relations§
Instantiated in 1
Method calls 29
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::bindValue() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:83
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::bindValue() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:84
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::bindParam() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:111
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::bindColumn() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:140
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::execute() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:161
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetch() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:187
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetch() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:192
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchAll() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:210
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchAll() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:215
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchColumn() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:232
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchColumn() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:236
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchObject() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:264
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::fetchObject() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:268
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::rowCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:287
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::rowCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:288
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::rowCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:291
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::closeCursor() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:307
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::setFetchMode() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:332
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::setFetchMode() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:333
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::errorCode() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:349
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::errorInfo() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:366
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getAttribute() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:382
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::setAttribute() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:399
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::columnCount() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:415
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getColumnMeta() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:432
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::nextRowset() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:448
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::debugDumpParams() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:465
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getIterator() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:487
- method-call ZtdQuery\Adapter\Pdo\ZtdPdoStatement::getIterator() packages/ztd-query-pdo-adapter/src/ZtdPdoStatement.php:491