Re: BUG #16247: Cast error on integer
От | Andres Freund |
---|---|
Тема | Re: BUG #16247: Cast error on integer |
Дата | |
Msg-id | 20200206221248.stef4pssng3h466z@alap3.anarazel.de обсуждение исходный текст |
Ответ на | BUG #16247: Cast error on integer (PG Bug reporting form <noreply@postgresql.org>) |
Список | pgsql-bugs |
Hi, On 2020-02-06 21:43:41 +0000, PG Bug reporting form wrote: > The only difference between the two calls is how I'm casting the integer. > The second call is choking on "_devctrluid => -2147483648::int". But, if I > change that value to "-2147483647" the second call succeeds. I don't think that's a bug. -2147483648::int is parsed as -((2147483648)::int). 2147483648 gets parsed as an int8 (due to its width), but then you're casting the result to an int4. And 2147483648 is not representable as a signed 32bit integer. It fails before getting to negating the result of the cast. For precedence see: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-PRECEDENCE-TABLE Whereas '-2147483648'::int4 gets read directly as int4, including the sign. And wheras 2147483648 is not representable as an int4, -2147483648 is. Greetings, Andres Freund
В списке pgsql-bugs по дате отправления: