On 2015-05-06 23:48:18 +0300, Heikki Linnakangas wrote:
> I'll see about fixing that. It's not just a matter of creating another alias
> for the same rel, I'm afraid: "foo.t" is supposed to refer to the tuple that
> we attempted to insert, like it does without the ON CONFLICT.

I'm not sure what you mean here?

> But actually, I don't much like the "target" alias in the first place. We
> never really completed this discussion, everyone just got tired:

Right. But that doesn't affect the "it's not just a matter of ..." bit
above, right?

> Reading through this sub-thread, these spellings have been proposed:
> 
> 1. TARGET and EXCLUDED
> 
> 2. NEW and EXISTING
> 
> 3. NEW and OLD
> 
> 4. PROPOSED and EXISTING
> 
> 5. CONFLICTING and EXISTING
> 
> Did I miss any? Now, let me opine on these.

How about
6. The tablename and EXCLUDED? Possibility with the ability to specify
   an AS for INSERT INTO foo AS whatever?

>From an implementation pov that'd be simple ;)

> NEW and OLD are pretty good. Like in an UPDATE trigger, NEW refers to the
> version after the UPDATE, and OLD to the version before. However, there's
> the serious problem that in a trigger function, OLD/NEW are already in use.
> How bad is that? At least in PL/pgSQL you can work around it by aliasing the
> variables, but it's a bit inconvenient. How often would INSERT .. ON
> CONFLICT DO UPDATE be used in a trigger?

I personally think it's a killer. It'll be very annoying to understand
mistaken usage of NEW/OLD in that case.

Greetings,

Andres Freund


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to