Hi community When I read the Internals document (41.1. The Query Tree), the introduction of the 'the result relation' confuse me.
In the document, it says > This is an index into the range table that identifies the relation where the results of the query go. And I cheak the corresponding code: In parsenodes.h (A part) typedef struct ResTarget { NodeTag type; char *name; /* column name or NULL */ List *indirection; /* subscripts, field names, and '*', or NIL */ Node *val; /* the value expression to compute or assign */ int location; /* token location, or -1 if unknown */ } ResTarget; In gram.y (A part) insert_column_item: ColId opt_indirection { $$ = makeNode(ResTarget); My question is: I really don't the the use of ResTarget, in my original understand, I guess the use of ResTarget is to store the columns of the result, like: SELECT row_1, row_2 FROM table; After the parse, the ResTarget will store the row_1, row_2 in the ResTarget. But the turth is, it also be used in the another clause, like INSERT, far from what I imagined. So what's the use of ResTarget? Can someone give me some advice? Thanks in advance! Yours, Wen Yi