Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff
От | Andres Freund |
---|---|
Тема | Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff |
Дата | |
Msg-id | 20150427215258.GE7296@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0,
parser/executor stuff
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff |
Список | pgsql-hackers |
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) ModifyTable4) 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'tthink 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 thatjust 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 :( Greetings, Andres Freund --Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
В списке pgsql-hackers по дате отправления: