mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Take fewer snapshots.
When a PORTAL_ONE_SELECT query is executed, we can opportunistically reuse the parse/plan shot for the execution phase. This cuts down the number of snapshots per simple query from 2 to 1 for the simple protocol, and 3 to 2 for the extended protocol. Since we are only reusing a snapshot taken early in the processing of the same protocol message, the change shouldn't be user-visible, except that the remote possibility of the planning and execution snapshots being different is eliminated. Note that this change does not make it safe to assume that the parse/plan snapshot will certainly be reused; that will currently only happen if PortalStart() decides to use the PORTAL_ONE_SELECT strategy. It might be worth trying to provide some stronger guarantees here in the future, but for now we don't. Patch by me; review by Dimitri Fontaine.
This commit is contained in:
@ -278,7 +278,7 @@ ExecuteQuery(ExecuteStmt *stmt, const char *queryString,
|
||||
/*
|
||||
* Run the portal to completion.
|
||||
*/
|
||||
PortalStart(portal, paramLI, GetActiveSnapshot());
|
||||
PortalStart(portal, paramLI, true);
|
||||
|
||||
(void) PortalRun(portal, FETCH_ALL, false, dest, dest, completionTag);
|
||||
|
||||
|
Reference in New Issue
Block a user