Re: Adding OLD/NEW support to RETURNING - Mailing list pgsql-hackers

From jian he
Subject Re: Adding OLD/NEW support to RETURNING
Date
Msg-id CACJufxEAEGAWb09xT4kWtBXx=V-XBf72rJjvnMKL2cE6a-wBxw@mail.gmail.com
Whole thread Raw
In response to Adding OLD/NEW support to RETURNING  (Dean Rasheed <dean.a.rasheed@gmail.com>)
Responses Re: Adding OLD/NEW support to RETURNING
List pgsql-hackers
On Mon, Oct 14, 2024 at 7:03 PM Dean Rasheed <dean.a.rasheed@gmail.com> wrote:
>
> > > typedef struct ReturningOption
> > > {
> > >     NodeTag        type;
> > >     bool        isNew;
> > >     char       *name;
> > >     int            location;
> > > } ReturningOption;
>
> Thinking about that struct some more, I think "isNew" is better done
> as an enum, since this is meant to be a generic option. So even though
> it might never have more than 2 possible values, I think it's neater
> done that way.
>

typedef struct ReturningOption
{
    NodeTag        type;
    ReturningOptionKind option; /* specified option */
    char       *value;            /* option's value */
    ParseLoc    location;        /* token location, or -1 if unknown */
} ReturningOption;



@@ -4304,6 +4332,16 @@ raw_expression_tree_walker_impl(Node *no
  return true;
  }
  break;
+ case T_ReturningClause:
+ {
+ ReturningClause *returning = (ReturningClause *) node;
+
+ if (WALK(returning->options))
+ return true;
+ if (WALK(returning->exprs))
+ return true;
+ }
+ break;


+ if (WALK(returning->options))
+ return true;
T_ReturningOption is primitive, so we only need to
"if (WALK(returning->exprs))"?



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Index AM API cleanup
Next
From: Dean Rasheed
Date:
Subject: Re: Adding OLD/NEW support to RETURNING