mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +03:00
Modified files for MERGE
This commit is contained in:
@@ -32,6 +32,11 @@ extern Query *parse_sub_analyze(Node *parseTree, ParseState *parentParseState,
|
||||
bool locked_from_parent,
|
||||
bool resolve_unknowns);
|
||||
|
||||
extern List *transformInsertRow(ParseState *pstate, List *exprlist,
|
||||
List *stmtcols, List *icolumns, List *attrnos,
|
||||
bool strip_indirection);
|
||||
extern List *transformUpdateTargetList(ParseState *pstate,
|
||||
List *targetList);
|
||||
extern Query *transformTopLevelStmt(ParseState *pstate, RawStmt *parseTree);
|
||||
extern Query *transformStmt(ParseState *pstate, Node *parseTree);
|
||||
|
||||
|
@@ -244,8 +244,10 @@ PG_KEYWORD("locked", LOCKED, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("logged", LOGGED, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("mapping", MAPPING, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("match", MATCH, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("matched", MATCHED, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("materialized", MATERIALIZED, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("merge", MERGE, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("method", METHOD, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("minute", MINUTE_P, UNRESERVED_KEYWORD)
|
||||
PG_KEYWORD("minvalue", MINVALUE, UNRESERVED_KEYWORD)
|
||||
|
@@ -20,7 +20,10 @@ extern void transformFromClause(ParseState *pstate, List *frmList);
|
||||
extern int setTargetTable(ParseState *pstate, RangeVar *relation,
|
||||
bool inh, bool alsoSource, AclMode requiredPerms);
|
||||
extern bool interpretOidsOption(List *defList, bool allowOids);
|
||||
|
||||
extern Node *transformFromClauseItem(ParseState *pstate, Node *n,
|
||||
RangeTblEntry **top_rte, int *top_rti,
|
||||
RangeTblEntry **right_rte, int *right_rti,
|
||||
List **namespace);
|
||||
extern Node *transformWhereClause(ParseState *pstate, Node *clause,
|
||||
ParseExprKind exprKind, const char *constructName);
|
||||
extern Node *transformLimitClause(ParseState *pstate, Node *clause,
|
||||
|
@@ -50,6 +50,7 @@ typedef enum ParseExprKind
|
||||
EXPR_KIND_INSERT_TARGET, /* INSERT target list item */
|
||||
EXPR_KIND_UPDATE_SOURCE, /* UPDATE assignment source item */
|
||||
EXPR_KIND_UPDATE_TARGET, /* UPDATE assignment target item */
|
||||
EXPR_KIND_MERGE_WHEN_AND, /* MERGE WHEN ... AND condition */
|
||||
EXPR_KIND_GROUP_BY, /* GROUP BY */
|
||||
EXPR_KIND_ORDER_BY, /* ORDER BY */
|
||||
EXPR_KIND_DISTINCT_ON, /* DISTINCT ON */
|
||||
@@ -127,7 +128,7 @@ typedef Node *(*CoerceParamHook) (ParseState *pstate, Param *param,
|
||||
* p_parent_cte: CommonTableExpr that immediately contains the current query,
|
||||
* if any.
|
||||
*
|
||||
* p_target_relation: target relation, if query is INSERT, UPDATE, or DELETE.
|
||||
* p_target_relation: target relation, if query is INSERT/UPDATE/DELETE/MERGE
|
||||
*
|
||||
* p_target_rangetblentry: target relation's entry in the rtable list.
|
||||
*
|
||||
@@ -181,7 +182,7 @@ struct ParseState
|
||||
List *p_ctenamespace; /* current namespace for common table exprs */
|
||||
List *p_future_ctes; /* common table exprs not yet in namespace */
|
||||
CommonTableExpr *p_parent_cte; /* this query's containing CTE */
|
||||
Relation p_target_relation; /* INSERT/UPDATE/DELETE target rel */
|
||||
Relation p_target_relation; /* INSERT/UPDATE/DELETE/MERGE target rel */
|
||||
RangeTblEntry *p_target_rangetblentry; /* target rel's RTE */
|
||||
bool p_is_insert; /* process assignment like INSERT not UPDATE */
|
||||
List *p_windowdefs; /* raw representations of window clauses */
|
||||
|
Reference in New Issue
Block a user