[PDO] Reset stale attributes when reusing a persistent connection - #23655
Open
iliaal wants to merge 1 commit into
Open
[PDO] Reset stale attributes when reusing a persistent connection#23655iliaal 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.
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 persistent PDO handle only restored auto_commit and error_mode from the new constructor options, so case conversion, oracle nulls, stringify, and the default fetch mode leaked from the previous request. Those four attributes are reset to defaults on reuse before the new options apply.