From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | Peter Geoghegan <pg(at)heroku(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | hlinnaka <hlinnaka(at)iki(dot)fi>, Jeff Janes <jeff(dot)janes(at)gmail(dot)com>, Stephen Frost <sfrost(at)snowman(dot)net>, Dean Rasheed <dean(dot)a(dot)rasheed(at)gmail(dot)com>, Bruce Momjian <bruce(at)momjian(dot)us>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff |
Date: | 2015-04-28 10:38:45 |
Message-ID: | 20150428103845.GC19123@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin pgsql-hackers |
On 2015-04-27 23:52:58 +0200, Andres Freund wrote:
> On 2015-04-27 16:28:49 +0200, Andres Freund wrote:
> > On 2015-04-26 18:02:06 -0700, Peter Geoghegan wrote:
> > > * So far, there has been a lack of scrutiny about what the patch does
> > > in the rewriter (in particular, to support the EXCLUDED.* pseudo-alias
> > > expression) and optimizer (the whole concept of an "auxiliary"
> > > query/plan that share a target RTE, and later target ResultRelation).
> > > If someone took a close look at that, it would be most helpful.
> > > ruleutils.c is also modified for the benefit of EXPLAIN output. This
> > > all applies only to the ON CONFLICT UPDATE patch. A committer could
> > > push out the IGNORE patch before this was 100% firm.
> >
> > I'm far from an expert on the relevant regions; but I'm starting to look
> > nonetheless. I have to say that on a preliminary look it looks more
> > complicated than it has to.
>
> So, I'm looking. And I've a few questions:
> * Why do we need to spread knowledge about speculative inserts that wide?
> It's now in 1) Query, 2) ParseState 3) ModifyTable 4) InsertStmt. That
> seems a bit wide - and as far as I see not really necessary. That e.g.
> transformUpdateStmt() has if (!pstate->p_is_speculative) blocks seems
> wrong.
>
> * afaics 'auxiliary query' isn't something we have under that
> name. This isn't really different to what wCTEs do, so I don't think
> we need this term here.
>
> * You refer to 'join like syntax' in a couple places. I don't really see
> the current syntax being that join like? Is that just a different
> perception of terminology or is that just remnants of earlier
> approaches?
>
> * I am rather unconvinced we need the whole 'ExcludedVar' mechanism. I
> don't really see why we need it at all? Can't we 'just' make those
> plain vars referring to the normal targetlist "entry"? I feel like I'm
> missing something here.
>
> * The whole dealing with the update clause doesn't seem super
> clean. I'm not sure yet how to do it nicer though :(
The more I look at approach taken in the executor, the less I like it.
I think the fundamental structural problem is that you've chosen to
represent the ON CONFLICT UPDATE part as fully separate plan tree node;
planned nearly like a normal UPDATE. But it really isn't. That's what
then requires you to coordinate knowedge around with p_is_speculative,
have these auxiliary trees, have update nodes without a relation, and
other similar things.
My feeling is that this will look much less ugly if there's simply no
UpdateStmt built. I mean, all we need is the target list and the where
clause. As far as I can see so far that'll get rid of a lot of
structural uglyness. There'll still be some more localized stuff, but I
don't think it'll be that bad.
I'm actually even wondering if it'd not better off *not* to reuse
ExecUpdate(), but that's essentially a separate concern.
I'll try to rejigger things roughly in that directions. If you haven't
heard of me in three days, call the police.
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Aissa BAMMOUNE IT | 2015-04-28 11:00:30 | TR: Re: Postgres and multiprocessor? |
Previous Message | Albe Laurenz | 2015-04-28 08:28:58 | Re: How do I install/run PostgreSQL 9.4 64 bit on Windows 7 Professional? |
From | Date | Subject | |
---|---|---|---|
Next Message | José Luis Tallón | 2015-04-28 10:41:26 | Re: Fwd: [GENERAL] 4B row limit for CLOB tables |
Previous Message | Dean Rasheed | 2015-04-28 06:57:01 | Re: Improving RLS qual pushdown |