1 /*-------------------------------------------------------------------------
4 * prototypes for utility.c.
7 * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * src/include/tcop/utility.h
12 *-------------------------------------------------------------------------
17 #include "tcop/tcopprot.h"
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;
26 /* Hook for plugins to get control in ProcessUtility() */
27 typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt,
28 const char *queryString, ProcessUtilityContext context,
30 QueryEnvironment *queryEnv,
31 DestReceiver *dest, char *completionTag);
32 extern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;
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);
43 extern bool UtilityReturnsTuples(Node *parsetree);
45 extern TupleDesc UtilityTupleDescriptor(Node *parsetree);
47 extern Query *UtilityContainsQuery(Node *parsetree);
49 extern const char *CreateCommandTag(Node *parsetree);
51 extern LogStmtLevel GetCommandLogLevel(Node *parsetree);
53 extern bool CommandIsReadOnly(PlannedStmt *pstmt);
55 #endif /* UTILITY_H */