Prev: [HACKERS] Hot Standby, max_connections and max_prepared_transactions
Next: corrupted double-linked list
From: =?utf-8?Q?Pierre_Fr=C3=A9d=C3=A9ric_Caillau?==?utf-8?Q?d?= on 8 Sep 2009 07:15 I was looking in the int*in() functions and found some interesting limit behaviours : * Here, the most negative value is sometimes accepted, sometimes not : test=> SELECT -2147483648::INTEGER; ERREUR: entier en dehors des limites test=> SELECT '-2147483648'::INTEGER; int4 ------------- -2147483648 * Same for smallint : test=> SELECT -32768::SMALLINT; ERREUR: smallint en dehors des limites test=> SELECT '-32768'::SMALLINT; int2 -------- -32768 (1 ligne) * For BIGINT : test=> SELECT -9223372036854775808::BIGINT; ERREUR: bigint en dehors des limites test=> SELECT '-9223372036854775808'::BIGINT; int8 ---------------------- -9223372036854775808 (1 ligne) Temps : 0,185 ms test=> SELECT '-000000009223372036854775808'::BIGINT; ERREUR: la valeur « -000000009223372036854775808 » est en dehors des limites du type bigint Interesting, isn't it ? I guess it's good to reject -2147483648::INTEGER because this is ugly : test=> CREATE TABLE foo AS (SELECT '-2147483648'::INTEGER AS x); test=> SELECT -x FROM foo; ERREUR: entier en dehors des limites I can make a fix... -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |