Обсуждение: [Beginner Question]What's the use of ResTarget?
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
On 2023-Jul-02, Wen Yi wrote: > Hi community > When I read the Internals document (41.1. The Query Tree), > the introduction of the 'the result relation' confuse me. There are "result relations" in commands that modify a relation, such as insert or update. The result relation is where the new tuples are inserted, or where the modified tuples are. > 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; Yeah. Those aren't necessarily in the result relation, because (as the doc says) a SELECT does not even *have* a result relation. -- Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/ "Once again, thank you and all of the developers for your hard work on PostgreSQL. This is by far the most pleasant management experience of any database I've worked on." (Dan Harris) http://archives.postgresql.org/pgsql-performance/2006-04/msg00247.php