conditional query in where has name collision. bug?

Поиск
Список
Период
Сортировка
От bill wilson
Тема conditional query in where has name collision. bug?
Дата
Msg-id CA+baN9wZhf890hiKXuWTiZO+Yh5LA5OHORfYifcKC2jDOxN3tg@mail.gmail.com
обсуждение исходный текст
Ответы Re: conditional query in where has name collision. bug?  (Andrew Gierth <andrew@tao11.riddles.org.uk>)
Список pgsql-hackers
<div dir="ltr">This a toy example from a 'upsert' script that appends new data:<br /><br />select a from (select  1 as
a)as t1 where not exists (select true from (select 2 as a) t2 where a=a) ;<br /> a <br />───<br />(0 rows)<br /><br
/>selecta from (select  1 as a) as t1 where not exists (select true from (select 2 as a) t2 where t1.a=t2.a)  ;<br /> a
<br/>───<br /> 1<br />(1 row)<br /><br />Please tell me this a bug. We can see in the first query without naming the
tablesthat 'a=a' uses table t2 for both columns. Luckily,  the incorrect first query fails from primary key conditions
inreal life. This goes against the implied convention that when in doubt raise an error. It is also a very idiomatic
wayto to real life inserts. So, I cannot believe that I am the first to find this.  The behavior reminds me of old
schoolmysql: lets allow an int and a string to add and just cast the string as an int because that must be what the
userwants and will be convenient.<br /></div> 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Christoph Berg
Дата:
Сообщение: Re: Hide 'Execution time' in EXPLAIN (COSTS OFF)
Следующее
От: Andrew Gierth
Дата:
Сообщение: Re: conditional query in where has name collision. bug?