1 /*-------------------------------------------------------------------------
2  *
3  * pquery.h
4  *	  prototypes for pquery.c.
5  *
6  *
7  * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/tcop/pquery.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef PQUERY_H
15 #define PQUERY_H
16 
17 #include "nodes/parsenodes.h"
18 #include "utils/portal.h"
19 
20 struct PlannedStmt;				/* avoid including plannodes.h here */
21 
22 
23 extern PGDLLIMPORT Portal ActivePortal;
24 
25 
26 extern PortalStrategy ChoosePortalStrategy(List *stmts);
27 
28 extern List *FetchPortalTargetList(Portal portal);
29 
30 extern List *FetchStatementTargetList(Node *stmt);
31 
32 extern void PortalStart(Portal portal, ParamListInfo params,
33 						int eflags, Snapshot snapshot);
34 
35 extern void PortalSetResultFormat(Portal portal, int nFormats,
36 								  int16 *formats);
37 
38 extern bool PortalRun(Portal portal, long count, bool isTopLevel,
39 					  bool run_once, DestReceiver *dest, DestReceiver *altdest,
40 					  char *completionTag);
41 
42 extern uint64 PortalRunFetch(Portal portal,
43 							 FetchDirection fdirection,
44 							 long count,
45 							 DestReceiver *dest);
46 
47 extern bool PlannedStmtRequiresSnapshot(struct PlannedStmt *pstmt);
48 
49 extern void EnsurePortalSnapshotExists(void);
50 
51 #endif							/* PQUERY_H */
52