mirror of
https://github.com/postgres/postgres.git
synced 2026-04-09 11:06:21 -04:00
This reverts commit d573e239f0, "Take fewer
snapshots". While that seemed like a good idea at the time, it caused
execution to use a snapshot that had been acquired before locking any of
the tables mentioned in the query. This created user-visible anomalies
that were not present in any prior release of Postgres, as reported by
Tomas Vondra. While this whole area could do with a redesign (since there
are related cases that have anomalies anyway), it doesn't seem likely that
any future patch would be reasonably back-patchable; and we don't want 9.2
to exhibit a behavior that's subtly unlike either past or future releases.
Hence, revert to prior code while we rethink the problem.
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* pquery.h
|
|
* prototypes for pquery.c.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/tcop/pquery.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PQUERY_H
|
|
#define PQUERY_H
|
|
|
|
#include "nodes/parsenodes.h"
|
|
#include "utils/portal.h"
|
|
|
|
|
|
extern PGDLLIMPORT Portal ActivePortal;
|
|
|
|
|
|
extern PortalStrategy ChoosePortalStrategy(List *stmts);
|
|
|
|
extern List *FetchPortalTargetList(Portal portal);
|
|
|
|
extern List *FetchStatementTargetList(Node *stmt);
|
|
|
|
extern void PortalStart(Portal portal, ParamListInfo params,
|
|
int eflags, Snapshot snapshot);
|
|
|
|
extern void PortalSetResultFormat(Portal portal, int nFormats,
|
|
int16 *formats);
|
|
|
|
extern bool PortalRun(Portal portal, long count, bool isTopLevel,
|
|
DestReceiver *dest, DestReceiver *altdest,
|
|
char *completionTag);
|
|
|
|
extern long PortalRunFetch(Portal portal,
|
|
FetchDirection fdirection,
|
|
long count,
|
|
DestReceiver *dest);
|
|
|
|
#endif /* PQUERY_H */
|