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);
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