Skip to content

Pooled session is rejected if database was changed #515

@bgrainger

Description

@bgrainger

When a session is returned to the pool, it is rejected as invalid if its database has changed:

if (session.DatabaseOverride != null)
return false;

This test is unnecessarily strict. It reduces performance to close the socket and open a new one; it would be better to reuse the open connection. To accomplish this, the session could be flagged as "requires a database change".

If this flag is set, then when resetting the connection, use a COM_CHANGE_USER packet to specify the same DB as in the original connection string. Or, if ConnectionReset=false, do nothing and leave the state of the connection as-is (considering the selected DB to be part of the session state). The database should be set back to the one in the connection string, even if ConnectionReset=false; this is the expected outcome from opening a connection and is the behaviour of Connector/NET.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions