From: | Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com> |
---|---|
To: | jian he <jian(dot)universality(at)gmail(dot)com> |
Cc: | Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Adding OLD/NEW support to RETURNING |
Date: | 2024-03-12 18:21:14 |
Message-ID: | CAEZATCUqbLeEeu_-6_cO18Js22CEBL=LVbU0WWzH8CMR6h+xrg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, 11 Mar 2024 at 14:03, Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com> wrote:
>
> Attached is an updated patch, fixing the seg-fault and now with
> support for foreign tables.
>
Updated version attached tidying up a couple of things and fixing another bug:
1). Tidied up the code in createplan.c that was testing for old/new
Vars in the returning list, by adding a separate function --
contain_vars_returning_old_or_new() -- making it more reusable and
efficient.
2). Updated the deparsing code for EXPLAIN so that old/new Vars are
always prefixed with the alias, so that it's possible to tell them
apart in the EXPLAIN output.
3). Updated rewriteRuleAction() to preserve the old/new alias names in
the rewritten query. I think this was only relevant to the EXPLAIN
output.
4). Fixed a bug in assign_param_for_var() -- this needs to compare the
varreturningtype of the Vars, otherwise 2 different Vars could get
assigned the same Param. As the comment said, this needs to compare
everything that _equalVar() compares, except for the specific fields
listed. Otherwise a subquery like (select old.a = new.a) in the
returning list would only generate one Param for the two up-level
Vars, and produce the wrong result.
5). Removed the ParseState fields p_returning_old and p_returning_new
that weren't being used anymore.
Regards,
Dean
Attachment | Content-Type | Size |
---|---|---|
support-returning-old-new-v4.patch | text/x-patch | 154.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2024-03-12 18:28:40 | Re: [EXTERNAL] Re: Add non-blocking version of PQcancel |
Previous Message | Robert Haas | 2024-03-12 18:01:36 | Re: On disable_cost |