History log of /PHP-8.4/ext/pdo_firebird/tests/autocommit.phpt (Results 1 – 2 of 2)
Revision Date Author Comments
# d6a0b3af 11-Jan-2024 Máté Kocsis

Implement PDO driver-specific subclasses

RFC: https://wiki.php.net/rfc/pdo_driver_specific_subclasses
Closes GH-12804

Co-Authored-By: Danack <Danack@basereality.com>


# dfaf7986 27-Nov-2023 Saki Takamachi <34942839+SakiTakamachi@users.noreply.github.com>

[pdo_firebird] Transaction management optimization (#12741)

take2 of #12657

## About Firebird transaction

Firebird is a full transactional database, so the DB itself does n

[pdo_firebird] Transaction management optimization (#12741)

take2 of #12657

## About Firebird transaction

Firebird is a full transactional database, so the DB itself does not support autocommit mode. (Strictly, there is an autocommit mode, but it is a different concept from the "autocommit" that we are used to with MySQL and others.)

Therefore, a transaction must have started before any operation is performed, and autocommit mode had to be emulated in PHP.

I made sure that a transaction always exists when in autocommit mode. Since the `in_transacntion` function does not work as expected, I have introduced `H->in_manually_txn` to determine whether a transaction is being manually manipulated.

## There are two types of commit/rollback

(I'm not talking about two-phase commit. This change does not take into account two-phase commit.)

There are `isc_commit_retaining` which starts a transaction again in the same context immediately after committing, and `isc_commit_transaction` which closes the transaction as is.

Similarly, there are two types of rollback.

-----------

Due to the default value of the transaction isolation level, autocommit mode may obtain unintended results.
Regarding this, it would be too large to include support for transaction isolation levels in this PR, so I will leave it as is for now.

show more ...