Re: INSERT ... ON CONFLICT {UPDATE | IGNORE}
От | Peter Geoghegan |
---|---|
Тема | Re: INSERT ... ON CONFLICT {UPDATE | IGNORE} |
Дата | |
Msg-id | CAM3SWZRGdj_6VmdhiJU8nzCfC8VAHqMhN8hhBnNqSVKCF3gfbA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: INSERT ... ON CONFLICT {UPDATE | IGNORE} (Peter Geoghegan <pg@heroku.com>) |
Ответы |
Re: INSERT ... ON CONFLICT {UPDATE | IGNORE}
|
Список | pgsql-hackers |
On Mon, Oct 27, 2014 at 5:15 PM, Peter Geoghegan <pg@heroku.com> wrote: >> Let's see if we can link these two thoughts. >> >> 1. You think the biggest problem is the lack of attention to the design. >> >> 2. I keep asking you to put the docs in a readable form. >> >> If you can't understand the link between those two things, I am at a loss. > > You've read the docs. Please be clearer. In what sense are they not > readable? The main description of the feature appears on the INSERT > reference page: > > http://postgres-benchmarks.s3-website-us-east-1.amazonaws.com/on-conflict-docs/sql-insert.html I've updated that reference page. I did a fair amount of copy-editing, but also updated the docs to describe the latest (unpublished) refinements to the syntax. Which is, as you and Robert requested, that the target and rejected-for-insertion tuples may be referenced with magical aliases in the style of OLD.* and NEW.*. I've spelt these aliases as TARGET.* and EXCLUDED.*, since OLD.* and NEW.* didn't seem to make much sense here. This requires some special processing during rewriting (which, as you probably know, is true of DML statements in general), and is certainly more invasive than what I had before, but all told isn't too bad. Basically, there is still an ExcludedExpr, but it only appears in the post-rewrite query tree, and is never created by the raw grammar or processed during parse analysis. I attach the doc patch with the relevant changes, in case you'd like a quick reference to where things are changed. I have already implemented the two things that you and Robert asked for most recently: A costing model for unique index inference, and the above syntax. I've also added IGNORE support to postgres_fdw (so you can IGNORE if and only if a unique index inference specification is omitted, just as with updatable views since V1.3). Currently, I'm working on fixing an issue with RLS that I describe in detail here: https://wiki.postgresql.org/wiki/UPSERT#RLS Once I fix that (provided it doesn't take too long), I'll publish a V1.4. AFAICT, that'll close out all of the current open issues. I hope this goes some way towards addressing your concerns. -- Peter Geoghegan
Вложения
В списке pgsql-hackers по дате отправления: