| 1 | /*------------------------------------------------------------------------- |
| 2 | * |
| 3 | * analyze.h |
| 4 | * parse analysis for optimizable statements |
| 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/parser/analyze.h |
| 11 | * |
| 12 | *------------------------------------------------------------------------- |
| 13 | */ |
| 14 | #ifndef ANALYZE_H |
| 15 | #define ANALYZE_H |
| 16 | |
| 17 | #include "parser/parse_node.h" |
| 18 | |
| 19 | /* Hook for plugins to get control at end of parse analysis */ |
| 20 | typedef void (*post_parse_analyze_hook_type) (ParseState *pstate, |
| 21 | Query *query); |
| 22 | extern PGDLLIMPORT post_parse_analyze_hook_type post_parse_analyze_hook; |
| 23 | |
| 24 | |
| 25 | extern Query *parse_analyze(RawStmt *parseTree, const char *sourceText, |
| 26 | Oid *paramTypes, int numParams, QueryEnvironment *queryEnv); |
| 27 | extern Query *parse_analyze_varparams(RawStmt *parseTree, const char *sourceText, |
| 28 | Oid **paramTypes, int *numParams); |
| 29 | |
| 30 | extern Query *parse_sub_analyze(Node *parseTree, ParseState *parentParseState, |
| 31 | CommonTableExpr *parentCTE, |
| 32 | bool locked_from_parent, |
| 33 | bool resolve_unknowns); |
| 34 | |
| 35 | extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree); |
| 36 | extern Query *transformStmt(ParseState *pstate, Node *parseTree); |
| 37 | |
| 38 | extern bool analyze_requires_snapshot(RawStmt *parseTree); |
| 39 | |
| 40 | extern const char *LCS_asString(LockClauseStrength strength); |
| 41 | extern void CheckSelectLocking(Query *qry, LockClauseStrength strength); |
| 42 | extern void applyLockingClause(Query *qry, Index rtindex, |
| 43 | LockClauseStrength strength, |
| 44 | LockWaitPolicy waitPolicy, bool pushedDown); |
| 45 | |
| 46 | extern List *BuildOnConflictExcludedTargetlist(Relation targetrel, |
| 47 | Index exclRelIndex); |
| 48 | |
| 49 | #endif /* ANALYZE_H */ |
| 50 | |