classConnectionExecution
final class ConnectionExecution
Coordinates native connection execution with its shadow session.
Methods§
public function __construct(
private mysqli $mysqli,
?ZtdConfig $config = null,
?Platform $platform = null,
)Create a shadow session for the supplied native connection.
Calls 4
- new MySqlPlatform line 37
- new QueryExecutor line 38
- new MysqliConnection line 38
- static-call ZtdConfig::default() line 38
public function native(): mysqliReturn the wrapped native connection.
Returns
mysqliTest cases 1
Called from 34
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::__get() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:149
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::__isset() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:157
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::multi_query() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:202
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::close() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:248
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::select_db() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:258
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::set_charset() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:267
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::real_escape_string() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:276
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::escape_string() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:285
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::ping() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:294
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::character_set_name() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:303
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::change_user() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:312
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::connect() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:330
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::debug() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:340
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::dump_debug_info() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:350
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_charset() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:359
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_client_info() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:370
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_connection_stats() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:382
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_server_info() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:391
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_warnings() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:400
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::init() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:411
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::kill() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:422
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::more_results() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:431
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::next_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:440
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::options() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:449
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::real_connect() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:465
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::reap_async_query() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:474
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::refresh() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:483
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::ssl_set() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:516
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::stat() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:526
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::stmt_init() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:535
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::store_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:545
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::thread_safe() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:554
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::use_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:563
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::set_opt() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:572
public function executor(): QueryExecutorReturn the core executor shared by statements on this connection.
Returns
Test cases 14
ConnectionExecutionTest::testAutocommitCommitsShadowRowscallsConnectionExecutionTest::testBeginTransactionCreatesAShadowRollbackScopecallsConnectionExecutionTest::testCommitRetainsShadowRowsAcrossRollbackcallsConnectionExecutionTest::testExecutorKeepsSimulatedWritesOffTheNativeConnectioncallsConnectionExecutionTest::testRealQuerySynchronizesTransactionStatementscallsConnectionExecutionTest::testRollBackRestoresTheShadowSnapshotcallsConnectionExecutionTest::testSavepointRestoresShadowRowsOnRollbackToSavepointcallsStatementExecutionTest::testAffectedRowsReturnsTheSimulatedCountcallsStatementExecutionTest::testExecuteDoesNotWriteThePhysicalTablecallsStatementExecutionTest::testFetchReturnsNullForAWritingStatementcallsStatementExecutionTest::testGetResultReturnsTheBufferedSelectcallsStatementExecutionTest::testNativeReturnsThePreparedStatementcallsStatementExecutionTest::testResetDiscardsTheSimulatedResultcallsStatementExecutionTest::testResultTracksSimulatedWritescalls
Called from 3
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::enableZtd() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:104
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::disableZtd() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:112
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::isZtdEnabled() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:120
public function simulatedAffectedRows(): ?intReturn the simulated count when native affected_rows must be overridden.
Returns
?intTest cases 2
Called from 1
public function prepare(
string $query,
Closure(mysqli_stmt, QueryExecutor, RewritePlan): mysqli_stmt $wrap,
): mysqli_stmt|falsePrepare rewritten SQL and let the facade wrap the native statement.
Parameters
$query | string | |
$wrap | Closure(mysqli_stmt, QueryExecutor, RewritePlan): mysqli_stmt |
Returns
mysqli_stmt|falseThrows
ZtdMysqliException When ZTD-specific exception occurs (wraps DatabaseException).Test cases 1
Called from 1
Calls 4
- method-call QueryExecutor::session() line 74
- method-call
mysqli::prepare()line 75 - method-call QueryExecutor::rewrite() line 79
- new ZtdMysqliException line 81
public function query(
string $query,
int $resultMode,
Closure(string): mysqli_result|bool $execute,
): mysqli_result|boolSynchronize transaction queries before dispatching statement execution.
Parameters
$query | string | |
$resultMode | int | |
$execute | Closure(string): mysqli_result|bool |
Returns
mysqli_result|boolTest cases 1
Called from 1
Calls 3
- method-call QueryExecutor::session() line 100
- method-call
mysqli::query()line 102 - method-call QueryExecutor::transactionStatement() line 105
public function realQuery(string $query, Closure(string): mysqli_stmt|false $prepare): boolApply transaction state after successful native execution.
Parameters
$query | string | |
$prepare | Closure(string): mysqli_stmt|false |
Returns
boolTest cases 2
Called from 1
Calls 3
- method-call QueryExecutor::session() line 126
- method-call
mysqli::real_query()line 127 - method-call QueryExecutor::transactionStatement() line 130
public function beginTransaction(int $flags = 0, ?string $name = null): boolSynchronize native execution with shadow transaction state.
Parameters
$flags | int | |
$name | ?string |
Returns
boolTest cases 9
ConnectionExecutionTest::testAutocommitCommitsShadowRowscallsConnectionExecutionTest::testBeginTransactionCreatesAShadowRollbackScopecallsConnectionExecutionTest::testBeginTransactionDefersTheDefaultSnapshotUntilTheFirstReadcallsConnectionExecutionTest::testCommitEndsTheNativeTransactionWithoutStartingAnothercallsConnectionExecutionTest::testCommitRetainsShadowRowsAcrossRollbackcallsConnectionExecutionTest::testReleaseSavepointRemovesTheNativeSavepointcallsConnectionExecutionTest::testRollBackEndsTheNativeTransactionWithoutStartingAnothercallsConnectionExecutionTest::testRollBackRestoresTheShadowSnapshotcallsConnectionExecutionTest::testSavepointRestoresShadowRowsOnRollbackToSavepointcalls
Called from 1
Calls 2
- method-call
mysqli::begin_transaction()line 149 - method-call QueryExecutor::session() line 151
public function commit(int $flags = 0, ?string $name = null): boolSynchronize native execution with shadow transaction state.
Parameters
$flags | int | |
$name | ?string |
Returns
boolTest cases 2
Called from 1
Calls 2
- method-call
mysqli::commit()line 162 - method-call QueryExecutor::session() line 164
public function rollBack(int $flags = 0, ?string $name = null): boolSynchronize native execution with shadow transaction state.
Parameters
$flags | int | |
$name | ?string |
Returns
boolTest cases 7
ConnectionExecutionTest::testAutocommitCommitsShadowRowscallsConnectionExecutionTest::testBeginTransactionCreatesAShadowRollbackScopecallsConnectionExecutionTest::testCommitRetainsShadowRowsAcrossRollbackcallsConnectionExecutionTest::testReleaseSavepointRemovesTheNativeSavepointcallsConnectionExecutionTest::testRollBackEndsTheNativeTransactionWithoutStartingAnothercallsConnectionExecutionTest::testRollBackRestoresTheShadowSnapshotcallsConnectionExecutionTest::testSavepointRestoresShadowRowsOnRollbackToSavepointcalls
Called from 1
Calls 2
- method-call
mysqli::rollback()line 175 - method-call QueryExecutor::session() line 177
public function autocommit(bool $enable): boolSynchronize native execution with shadow transaction state.
Parameters
$enable | bool |
Returns
boolTest cases 1
Called from 1
Calls 2
- method-call
mysqli::autocommit()line 188 - method-call QueryExecutor::session() line 191
public function releaseSavepoint(string $name): boolSynchronize native execution with shadow transaction state.
Parameters
$name | string |
Returns
boolTest cases 1
Called from 1
Calls 3
- method-call
mysqli::release_savepoint()line 205 - method-call QueryExecutor::session() line 207
- static-call TransactionStatement::release() line 207
public function savepoint(string $name): boolSynchronize native execution with shadow transaction state.
Parameters
$name | string |
Returns
boolTest cases 2
Called from 1
Calls 3
- method-call
mysqli::savepoint()line 218 - method-call QueryExecutor::session() line 220
- static-call TransactionStatement::savepoint() line 220
public function executeQuery<TParameter>(
string $query,
array<TParameter>|null $params,
Closure(string): mysqli_stmt|false $prepare,
Closure(mysqli_stmt): ?int $affectedRows,
): mysqli_result|boolExecute through the facade while retaining the simulated affected-row count.
Parameters
$query | string | |
$params | array<TParameter>|null | |
$prepare | Closure(string): mysqli_stmt|false | |
$affectedRows | Closure(mysqli_stmt): ?int |
Returns
mysqli_result|boolpublic function affectedRows(): intGet the affected row count from the last ZTD or regular operation.
Note: Direct property access ($this->affected_rows) is not supported because PHP's C extension property handler for mysqli takes precedence over __get when the parent constructor was not called. Use this method instead.
Returns
intPrivate surface 3§
Implementation details, listed for orientation only.
private QueryExecutor $executorprivate ?int $ztdAffectedRowCount = nullprivate mysqli $mysqliTest cases 30§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 17
ConnectionExecutionTest::testAffectedRowsUsesTheNativeCountBeforeSimulationcallsConnectionExecutionTest::testAutocommitCommitsShadowRowscallsConnectionExecutionTest::testBeginTransactionCreatesAShadowRollbackScopecallsConnectionExecutionTest::testBeginTransactionDefersTheDefaultSnapshotUntilTheFirstReadcallsConnectionExecutionTest::testCommitEndsTheNativeTransactionWithoutStartingAnothercallsConnectionExecutionTest::testCommitRetainsShadowRowsAcrossRollbackcallsConnectionExecutionTest::testExecuteQueryRetainsTheDispatchedAffectedRowCountcallsConnectionExecutionTest::testExecutorKeepsSimulatedWritesOffTheNativeConnectioncallsConnectionExecutionTest::testNativeReturnsTheProvidedConnectioncallsConnectionExecutionTest::testPreparePreservesTheWrappingCallbackcallsConnectionExecutionTest::testQueryPreservesFacadeDispatchcallsConnectionExecutionTest::testRealQuerySynchronizesTransactionStatementscallsConnectionExecutionTest::testReleaseSavepointRemovesTheNativeSavepointcallsConnectionExecutionTest::testRollBackEndsTheNativeTransactionWithoutStartingAnothercallsConnectionExecutionTest::testRollBackRestoresTheShadowSnapshotcallsConnectionExecutionTest::testSavepointRestoresShadowRowsOnRollbackToSavepointcallsConnectionExecutionTest::testSimulatedAffectedRowsStartsWithoutAnOverridecalls
Other tests reaching this symbol 13
MysqliCteShadowingTestcallsMysqliForeignKeyCascadeTestcallsMysqliFullTextSearchTestcallsMysqliLoadDataTestcallsMysqliPlatformInjectionTestcallsStatementExecutionTest::testAffectedRowsReturnsTheSimulatedCountcallsStatementExecutionTest::testExecuteDoesNotWriteThePhysicalTablecallsStatementExecutionTest::testFetchReturnsNullForAWritingStatementcallsStatementExecutionTest::testGetResultReturnsTheBufferedSelectcallsStatementExecutionTest::testNativeReturnsThePreparedStatementcallsStatementExecutionTest::testResetDiscardsTheSimulatedResultcallsStatementExecutionTest::testResultTracksSimulatedWritescallsZtdMysqliTestcalls
Relations§
Instantiated in 2
Method calls 49
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::enableZtd() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:104
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::disableZtd() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:112
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::isZtdEnabled() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:120
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::lastAffectedRows() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:132
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::__get() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:144
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::__get() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:149
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::__isset() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:157
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::prepare() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:169
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::query() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:181
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::real_query() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:193
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::multi_query() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:202
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::begin_transaction() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:211
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::commit() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:220
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::rollback() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:229
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::autocommit() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:238
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::close() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:248
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::select_db() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:258
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::set_charset() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:267
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::real_escape_string() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:276
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::escape_string() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:285
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::ping() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:294
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::character_set_name() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:303
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::change_user() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:312
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::connect() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:330
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::debug() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:340
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::dump_debug_info() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:350
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_charset() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:359
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_client_info() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:370
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_connection_stats() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:382
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_server_info() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:391
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::get_warnings() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:400
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::init() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:411
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::kill() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:422
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::more_results() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:431
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::next_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:440
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::options() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:449
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::real_connect() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:465
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::reap_async_query() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:474
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::refresh() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:483
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::release_savepoint() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:492
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::savepoint() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:501
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::ssl_set() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:516
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::stat() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:526
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::stmt_init() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:535
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::store_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:545
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::thread_safe() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:554
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::use_result() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:563
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::set_opt() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:572
- method-call ZtdQuery\Adapter\Mysqli\ZtdMysqli::execute_query() packages/ztd-query-mysqli-adapter/src/ZtdMysqli.php:603