Skip to content

[PDO] Reset stale attributes when reusing a persistent connection - #276

Open
iliaal wants to merge 1 commit into
PHP-8.4from
fix/pdo-persistent-attr-reset-84
Open

[PDO] Reset stale attributes when reusing a persistent connection#276
iliaal wants to merge 1 commit into
PHP-8.4from
fix/pdo-persistent-attr-reset-84

Conversation

@iliaal

@iliaal iliaal commented Aug 24, 2026

Copy link
Copy Markdown
Owner

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.

@iliaal iliaal closed this Aug 24, 2026
@iliaal iliaal reopened this Aug 24, 2026
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
iliaal force-pushed the fix/pdo-persistent-attr-reset-84 branch 2 times, most recently from 846773a to 0de2804 Compare August 26, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant