]> granicus.if.org Git - postgresql/blob - src/include/tcop/utility.h
90f1215aec80baeadb2fe1eefc97c453b71fcb71
[postgresql] / src / include / tcop / utility.h
1 /*-------------------------------------------------------------------------
2  *
3  * utility.h
4  *        prototypes for utility.c.
5  *
6  *
7  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/tcop/utility.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef UTILITY_H
15 #define UTILITY_H
16
17 #include "tcop/tcopprot.h"
18
19 typedef enum
20 {
21         PROCESS_UTILITY_TOPLEVEL,       /* toplevel interactive command */
22         PROCESS_UTILITY_QUERY,          /* a complete query, but not toplevel */
23         PROCESS_UTILITY_SUBCOMMAND      /* a portion of a query */
24 } ProcessUtilityContext;
25
26 /* Hook for plugins to get control in ProcessUtility() */
27 typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt,
28                                           const char *queryString, ProcessUtilityContext context,
29                                                                         ParamListInfo params,
30                                                                         QueryEnvironment *queryEnv,
31                                                                         DestReceiver *dest, char *completionTag);
32 extern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;
33
34 extern void ProcessUtility(PlannedStmt *pstmt, const char *queryString,
35                            ProcessUtilityContext context, ParamListInfo params,
36                            QueryEnvironment *queryEnv,
37                            DestReceiver *dest, char *completionTag);
38 extern void standard_ProcessUtility(PlannedStmt *pstmt, const char *queryString,
39                                                 ProcessUtilityContext context, ParamListInfo params,
40                                                 QueryEnvironment *queryEnv,
41                                                 DestReceiver *dest, char *completionTag);
42
43 extern bool UtilityReturnsTuples(Node *parsetree);
44
45 extern TupleDesc UtilityTupleDescriptor(Node *parsetree);
46
47 extern Query *UtilityContainsQuery(Node *parsetree);
48
49 extern const char *CreateCommandTag(Node *parsetree);
50
51 extern LogStmtLevel GetCommandLogLevel(Node *parsetree);
52
53 extern bool CommandIsReadOnly(PlannedStmt *pstmt);
54
55 #endif   /* UTILITY_H */