PostgreSQL Source Code  git master
analyze.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * analyze.h
4  * parse analysis for optimizable statements
5  *
6  *
7  * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/parser/analyze.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef ANALYZE_H
15 #define ANALYZE_H
16 
17 #include "nodes/params.h"
18 #include "parser/parse_node.h"
19 #include "utils/queryjumble.h"
20 
21 /* Hook for plugins to get control at end of parse analysis */
22 typedef void (*post_parse_analyze_hook_type) (ParseState *pstate,
23  Query *query,
24  JumbleState *jstate);
26 
27 
28 extern Query *parse_analyze_fixedparams(RawStmt *parseTree, const char *sourceText,
29  const Oid *paramTypes, int numParams, QueryEnvironment *queryEnv);
30 extern Query *parse_analyze_varparams(RawStmt *parseTree, const char *sourceText,
31  Oid **paramTypes, int *numParams, QueryEnvironment *queryEnv);
32 extern Query *parse_analyze_withcb(RawStmt *parseTree, const char *sourceText,
33  ParserSetupHook parserSetup,
34  void *parserSetupArg,
35  QueryEnvironment *queryEnv);
36 
37 extern Query *parse_sub_analyze(Node *parseTree, ParseState *parentParseState,
38  CommonTableExpr *parentCTE,
39  bool locked_from_parent,
40  bool resolve_unknowns);
41 
42 extern List *transformInsertRow(ParseState *pstate, List *exprlist,
43  List *stmtcols, List *icolumns, List *attrnos,
44  bool strip_indirection);
46  List *targetList);
47 extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree);
48 extern Query *transformStmt(ParseState *pstate, Node *parseTree);
49 
50 extern bool analyze_requires_snapshot(RawStmt *parseTree);
51 
52 extern const char *LCS_asString(LockClauseStrength strength);
53 extern void CheckSelectLocking(Query *qry, LockClauseStrength strength);
54 extern void applyLockingClause(Query *qry, Index rtindex,
55  LockClauseStrength strength,
56  LockWaitPolicy waitPolicy, bool pushedDown);
57 
59  Index exclRelIndex);
60 
61 extern SortGroupClause *makeSortGroupClauseForSetOp(Oid rescoltype, bool require_hash);
62 
63 #endif /* ANALYZE_H */
Query * parse_analyze_withcb(RawStmt *parseTree, const char *sourceText, ParserSetupHook parserSetup, void *parserSetupArg, QueryEnvironment *queryEnv)
Definition: analyze.c:187
Query * parse_sub_analyze(Node *parseTree, ParseState *parentParseState, CommonTableExpr *parentCTE, bool locked_from_parent, bool resolve_unknowns)
Definition: analyze.c:223
List * transformInsertRow(ParseState *pstate, List *exprlist, List *stmtcols, List *icolumns, List *attrnos, bool strip_indirection)
Definition: analyze.c:962
void CheckSelectLocking(Query *qry, LockClauseStrength strength)
Definition: analyze.c:3143
Query * transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree)
Definition: analyze.c:250
bool analyze_requires_snapshot(RawStmt *parseTree)
Definition: analyze.c:430
void(* post_parse_analyze_hook_type)(ParseState *pstate, Query *query, JumbleState *jstate)
Definition: analyze.h:22
void applyLockingClause(Query *qry, Index rtindex, LockClauseStrength strength, LockWaitPolicy waitPolicy, bool pushedDown)
Definition: analyze.c:3396
List * BuildOnConflictExcludedTargetlist(Relation targetrel, Index exclRelIndex)
Definition: analyze.c:1170
SortGroupClause * makeSortGroupClauseForSetOp(Oid rescoltype, bool require_hash)
Definition: analyze.c:1897
const char * LCS_asString(LockClauseStrength strength)
Definition: analyze.c:3118
List * transformUpdateTargetList(ParseState *pstate, List *targetList)
Definition: analyze.c:2423
Query * transformStmt(ParseState *pstate, Node *parseTree)
Definition: analyze.c:313
Query * parse_analyze_varparams(RawStmt *parseTree, const char *sourceText, Oid **paramTypes, int *numParams, QueryEnvironment *queryEnv)
Definition: analyze.c:146
Query * parse_analyze_fixedparams(RawStmt *parseTree, const char *sourceText, const Oid *paramTypes, int numParams, QueryEnvironment *queryEnv)
Definition: analyze.c:106
PGDLLIMPORT post_parse_analyze_hook_type post_parse_analyze_hook
Definition: analyze.c:59
#define PGDLLIMPORT
Definition: c.h:1342
unsigned int Index
Definition: c.h:560
LockWaitPolicy
Definition: lockoptions.h:37
LockClauseStrength
Definition: lockoptions.h:22
void(* ParserSetupHook)(struct ParseState *pstate, void *arg)
Definition: params.h:108
unsigned int Oid
Definition: postgres_ext.h:31
Definition: pg_list.h:52
Definition: nodes.h:575