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.
Showing
- src/backend/commands/portalcmds.c 1 addition, 1 deletionsrc/backend/commands/portalcmds.c
- src/backend/commands/prepare.c 1 addition, 1 deletionsrc/backend/commands/prepare.c
- src/backend/executor/spi.c 7 additions, 11 deletionssrc/backend/executor/spi.c
- src/backend/tcop/postgres.c 21 additions, 11 deletionssrc/backend/tcop/postgres.c
- src/backend/tcop/pquery.c 8 additions, 7 deletionssrc/backend/tcop/pquery.c
- src/include/tcop/pquery.h 1 addition, 1 deletionsrc/include/tcop/pquery.h
Loading
Please register or sign in to comment