Re: Boolean casting in 7.3 -> changed?
От | Ian Barwick |
---|---|
Тема | Re: Boolean casting in 7.3 -> changed? |
Дата | |
Msg-id | 200211270821.29513.barwick@gmx.net обсуждение исходный текст |
Ответ на | Re: Boolean casting in 7.3 -> changed? (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Boolean casting in 7.3 -> changed?
Re: Boolean casting in 7.3 -> changed? |
Список | pgsql-hackers |
On Wednesday 27 November 2002 06:23, Tom Lane wrote: > Ian Barwick <barwick@gmx.net> writes: > > in 7.3 the following no longer works: > > template1=> select 0::bool; > > ERROR: Cannot cast type integer to boolean > > Note that both old and new versions reject > select 0::int4::bool; > > I believe the behavioral change is a consequence of Rod Taylor's > DOMAIN patch: it essentially eliminated the old parser_typecast_constant() > routine in order to ensure that constraints associated with a domain > would get applied in examples like "select 0::domaintypename". > > I wasn't totally happy with Rod's patch, for reasons that I couldn't put > my finger on at the time, but perhaps my hindbrain understood that there > would be noticeable behavioral changes. But be that as it may, the code > is in there now and is unlikely to get reverted. There isn't any place > in our docs that promises that you can coerce an integer-looking literal > to bool --- and one could argue that allowing such is just opening the > door for typos. Thanks for the explanation. I'm not screaming for a reversion ;-), but changing behaviour which was implicitly valid in previous versions is bound to cause a few people a little head scratching when converting applications to 7.3 (I'm sure I can't be the only one). How about a line in HISTORY under "Migration to version 7.3" along the lines of: "Casting integers to boolean (for example, 0::bool) is no longer allowed, use '0'::bool instead". Ian Barwick barwick@gmx.net
В списке pgsql-hackers по дате отправления: