On 1/24/19 7:21 AM, Geoff Winkless wrote:
On Thu, 24 Jan 2019 at 15:11, Tom Lane <tgl@xxxxxxxxxxxxx> wrote:
People don't generally post to the lists after a type-mismatch error
catches a typo for them. So it's pretty hard to tell about "how
many" developers would find one behavior more useful than the other.
It is safe to say, though, that the same developer complaining today
might have their bacon saved tomorrow.
I've missed off WHERE clauses on a live database (oops) in my time,
and I'm happy to see work being done to safeguard against that
(although I tend to be of the opinion that it's not something you ever
do twice!) but I can confidently state that I've never once been
caught out by being surprised that a number was treated as a boolean.
How could you even write a query like the one Thomas posted? It
doesn't even look remotely sensible.
create table delete_test(id integer);
insert into delete_test values (2), (3), (4);
delete from delete_test where 1::boolean;
DELETE 3
select * from delete_test ;
id
----
(0 rows)
But I have been caught out by boolean vs int, enough that I bothered
to search out that ALTER statement. And I'm a lazy person at heart, so
if something irritated me enough to bother doing that, you can be sure
it was _really_ irritating me.
Geoff
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx