Re: Adding OLD/NEW support to RETURNING
jian he <jian.universality@gmail.com>
From: jian he <jian.universality@gmail.com>
To: Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: Jeff Davis <pgsql@j-davis.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Tomas Vondra <tomas@vondra.me>
Date: 2024-10-14T15:34:21Z
Lists: 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))"?
Commits
-
doc: Updates for RETURNING OLD/NEW.
- 3ba9639e39ed 18.0 landed
-
Fix parsing of qualified relation names in RETURNING.
- 43830ecb8a9b 18.0 landed
-
Add OLD/NEW support to RETURNING in DML queries.
- 80feb727c869 18.0 landed
-
Remove useless casts to (void *)
- 7f798aca1d5d 18.0 cited
-
Refactor/reword some error messages to avoid duplicates
- 2bb969f39984 18.0 cited