1/*-------------------------------------------------------------------------
2 *
3 * parse_target.h
4 * handle target lists
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/parse_target.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef PARSE_TARGET_H
15#define PARSE_TARGET_H
16
17#include "parser/parse_node.h"
18
19
20extern List *transformTargetList(ParseState *pstate, List *targetlist,
21 ParseExprKind exprKind);
22extern List *transformExpressionList(ParseState *pstate, List *exprlist,
23 ParseExprKind exprKind, bool allowDefault);
24extern void resolveTargetListUnknowns(ParseState *pstate, List *targetlist);
25extern void markTargetListOrigins(ParseState *pstate, List *targetlist);
26extern TargetEntry *transformTargetEntry(ParseState *pstate,
27 Node *node, Node *expr, ParseExprKind exprKind,
28 char *colname, bool resjunk);
29extern Expr *transformAssignedExpr(ParseState *pstate, Expr *expr,
30 ParseExprKind exprKind,
31 const char *colname,
32 int attrno,
33 List *indirection,
34 int location);
35extern void updateTargetListEntry(ParseState *pstate, TargetEntry *tle,
36 char *colname, int attrno,
37 List *indirection,
38 int location);
39extern List *checkInsertTargets(ParseState *pstate, List *cols,
40 List **attrnos);
41extern TupleDesc expandRecordVariable(ParseState *pstate, Var *var,
42 int levelsup);
43extern char *FigureColname(Node *node);
44extern char *FigureIndexColname(Node *node);
45
46#endif /* PARSE_TARGET_H */
47