[PDO] Reset stale attributes when reusing a persistent connection - #276
Open
iliaal wants to merge 1 commit into
Open
[PDO] Reset stale attributes when reusing a persistent connection#276iliaal wants to merge 1 commit into
iliaal wants to merge 1 commit into
Conversation
Reusing a cached persistent handle only re-applied auto_commit and error_mode from the new $options, so desired_case, oracle_nulls, stringify and default_fetch_type leaked from whatever the previous request had set on that connection. Reset them to their defaults on reuse before applying the new options. Sibling audit found no other persistent reuse path; drivers do not cache these PDO-level flags in their own state except pdo_mysql's stringify, which mirrors the same dbh field and is reset along with it.
iliaal
force-pushed
the
fix/pdo-persistent-attr-reset-84
branch
2 times, most recently
from
August 26, 2026 12:44
846773a to
0de2804
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reusing a cached persistent PDO handle re-applied only auto_commit and error_mode from the new constructor options, while desired_case, oracle_nulls, stringify and default_fetch_type kept the values the previous request had set on that connection, so a fresh PDO object could silently inherit stale fetch behavior. The reuse path in pdo_dbh.c now resets those four attributes to their defaults before applying the new options; newly created handles were already zero-initialized and are unaffected.