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 
20 extern List *transformTargetList(ParseState *pstate, List *targetlist,
21 								 ParseExprKind exprKind);
22 extern List *transformExpressionList(ParseState *pstate, List *exprlist,
23 									 ParseExprKind exprKind, bool allowDefault);
24 extern void resolveTargetListUnknowns(ParseState *pstate, List *targetlist);
25 extern void markTargetListOrigins(ParseState *pstate, List *targetlist);
26 extern TargetEntry *transformTargetEntry(ParseState *pstate,
27 										 Node *node, Node *expr, ParseExprKind exprKind,
28 										 char *colname, bool resjunk);
29 extern Expr *transformAssignedExpr(ParseState *pstate, Expr *expr,
30 								   ParseExprKind exprKind,
31 								   const char *colname,
32 								   int attrno,
33 								   List *indirection,
34 								   int location);
35 extern void updateTargetListEntry(ParseState *pstate, TargetEntry *tle,
36 								  char *colname, int attrno,
37 								  List *indirection,
38 								  int location);
39 extern List *checkInsertTargets(ParseState *pstate, List *cols,
40 								List **attrnos);
41 extern TupleDesc expandRecordVariable(ParseState *pstate, Var *var,
42 									  int levelsup);
43 extern char *FigureColname(Node *node);
44 extern char *FigureIndexColname(Node *node);
45 
46 #endif							/* PARSE_TARGET_H */
47