classStatementExecution
final class StatementExecution
Coordinates native execution and shadow post-processing for a prepared statement.
Methods§
public function __construct(
private mysqli_stmt $delegate,
private Session $session,
private ?RewritePlan $plan,
)Retain the native statement and its shadow execution plan.
Parameters
$delegate | mysqli_stmt | |
$session | Session | |
$plan | ?RewritePlan |
public function native(): mysqli_stmtReturn the native statement.
Returns
mysqli_stmtTest cases 1
Called from 14
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::__get() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:70
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::close() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:144
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::free_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:154
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::store_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:172
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::data_seek() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:181
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::result_metadata() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:190
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::attr_get() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:200
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::attr_set() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:214
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::get_warnings() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:223
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::more_results() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:232
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::next_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:241
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::num_rows() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:255
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::prepare() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:264
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::send_long_data() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:273
public function result(): ?ExecuteResultReturn the result of shadow post-processing.
Returns
Test cases 2
public function affectedRows(): intGet affected rows for ZTD results.
This method exists because mysqli_stmt's C extension property handler takes precedence over __get, making $stmt->affected_rows inaccessible when the parent constructor was not called. This provides a safe alternative for ZtdMysqli to query affected rows after execution.
Returns
int The number of affected rows from ZTD processing, or from the delegate.Test cases 1
public function execute<TParameter>(array<TParameter>|null $params = null): boolExecute the statement, applying ZTD simulation as needed.
Parameters
$params | array<TParameter>|null | Optional parameters to bind (PHP 8.1+). |
Returns
boolThrows
ZtdMysqliException When the session cannot process the native result.Test cases 6
StatementExecutionTest::testAffectedRowsReturnsTheSimulatedCountcallsStatementExecutionTest::testExecuteDoesNotWriteThePhysicalTablecallsStatementExecutionTest::testFetchReturnsNullForAWritingStatementcallsStatementExecutionTest::testGetResultReturnsTheBufferedSelectcallsStatementExecutionTest::testResetDiscardsTheSimulatedResultcallsStatementExecutionTest::testResultTracksSimulatedWritescalls
Called from 1
Calls 6
- method-call Session::shouldExecute() line 77
- method-call Session::needsPostProcessing() line 80
- method-call
mysqli_stmt::execute()line 81 - method-call
mysqli_stmt::get_result()line 86 - method-call MysqliResultProcessor::process() line 87
- new MysqliResultProcessor line 87
public function getResult(): mysqli_result|falseCoordinate the native statement with its simulated result.
Returns
mysqli_result|falseTest cases 1
Called from 1
Calls 1
- method-call
mysqli_stmt::get_result()line 109
public function fetch(): ?boolCoordinate the native statement with its simulated result.
Returns
?boolTest cases 1
Called from 1
Calls 1
- method-call
mysqli_stmt::fetch()line 123
public function reset(): boolCoordinate the native statement with its simulated result.
Returns
boolTest cases 1
Called from 1
Calls 1
- method-call
mysqli_stmt::reset()line 133
Private surface 5§
Implementation details, listed for orientation only.
private ?ExecuteResult $result = nullprivate mysqli_result|false|null $cachedMysqliResult = nullprivate mysqli_stmt $delegateprivate Session $sessionprivate ?RewritePlan $planTest cases 14§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 7
StatementExecutionTest::testAffectedRowsReturnsTheSimulatedCountcallsStatementExecutionTest::testExecuteDoesNotWriteThePhysicalTablecallsStatementExecutionTest::testFetchReturnsNullForAWritingStatementcallsStatementExecutionTest::testGetResultReturnsTheBufferedSelectcallsStatementExecutionTest::testNativeReturnsThePreparedStatementcallsStatementExecutionTest::testResetDiscardsTheSimulatedResultcallsStatementExecutionTest::testResultTracksSimulatedWritescalls
Other tests reaching this symbol 7
MysqliCteShadowingTestcallsMysqliForeignKeyCascadeTestcallsMysqliFullTextSearchTestcallsMysqliLoadDataTestcallsMysqliSessionFactoryInjectionTestcallsZtdMysqliStatementTestcallsZtdMysqliTestcalls
Relations§
Instantiated in 1
Method calls 21
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::__get() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:66
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::__get() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:70
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::ztdAffectedRows() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:104
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::execute() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:116
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::get_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:125
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::fetch() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:134
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::close() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:144
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::free_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:154
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::reset() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:163
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::store_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:172
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::data_seek() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:181
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::result_metadata() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:190
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::attr_get() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:200
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::attr_set() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:214
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::get_warnings() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:223
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::more_results() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:232
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::next_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:241
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::num_rows() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:250
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::num_rows() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:255
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::prepare() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:264
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqliStatement::send_long_data() packages/ztd-query-mysqli-adapter/src/ZtdMysqliStatement.php:273