Re: Reconstructing Insert queries with indirection

From: Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Reconstructing Insert queries with indirection
Date: 2012-03-22 06:22:04
Message-ID: CAFjFpRf3XunM5jBG7PR1WX5v0c9z8tiNSJx-64MyE0it-FJcbQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Mar 21, 2012 at 10:58 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com> writes:
> > Consider following sequence of commands
>
> > create type complex as (r float8, i float8);
> > create type quad as (c1 complex, c2 complex);
> > create temp table quadtable(f1 int, q quad);
>
> > insert into quadtable (f1, q.c1.r, q.c2.i) values(44,55,66);
>
> > While parsing the INSERT query, we parse the query with three columns and
> > three values in the target list, but during rewriting we combine q.c1.r
> and
> > q.c2.i into a single column in the form of FieldStore structure. In
> > Postgres-XC, we deparse these parse trees, to be sent to other PostgreSQL
> > servers.
>
> Well, basically you have a broken design there. We are not going to
> adopt a restriction that post-rewrite trees are necessarily exactly
> representable as SQL, so there are going to be corner cases where this
> approach fails.
>

That's an optimization, and in the cases it fails, we fall back to basics.
If there are known differences, please let us know.

> > The assertion is added by commit 858d1699. The notes for the commit have
> > following paragraph related to FieldStore deparsing.
>
> > I chose to represent an assignment ArrayRef as "array[subscripts] :=
> > source",
> > which is fairly reasonable and doesn't omit any information.
> However,
> > FieldStore is problematic because the planner will fold multiple
> > assignments
> > to fields of the same composite column into one FieldStore, resulting
> > in a
> > structure that is hard to understand at all, let alone display
> > comprehensibly.
> > So in that case I punted and just made it print the source
> > expression(s).
>
> > So, there doesn't seem to be any serious reason behind the restriction.
>
> If you have a proposal for some reasonable way to print the actual
> meaning of the expression (and a patch to do it), we can certainly
> consider changing that code. I don't think it's possible to display it
> as standard SQL, though. The ArrayRef case is already not standard SQL.
>
>
Let me try to come up with a patch.

regards, tom lane
>

--
Best Wishes,
Ashutosh Bapat
EntepriseDB Corporation
The Enterprise Postgres Company

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Etsuro Fujita 2012-03-22 09:41:11 Re: Proposal: Create index on foreign table
Previous Message Tom Lane 2012-03-22 06:09:34 Re: VALID UNTIL