With today's CVS code (originally noticed with 8.2beta3), on a PC where
INT_MAX=0x7FFFFFFF=2147483647
postgres=# select version(); version
---------------------------------------------------------------------------------------------------------------------------------PostgreSQL
8.3develon i386-unknown-netbsdelf4.99.20, compiled by GCC gcc (GCC) 4.1.2 20070110 prerelease (NetBSD nb1 20070603)
(1 row)
postgres=# select to_char(2147483647,'999,999,999'); to_char
-------------- ###,###,###
(1 row)
postgres=# select to_char(2147483648,'999,999,999');
WARNING: detected write past chunk end in ExprContext 0x845509c
WARNING: detected write past chunk end in ExprContext 0x845509c to_char
-------------- ###,###,###
(1 row)
postgres=# select to_char(2147483648,'99,999,999'); to_char
------------- ##,###,###
(1 row)
postgres=# select to_char(2147483648,'9,999,999,999'); to_char
---------------- 2,147,483,648
(1 row)
postgres=# select to_char(1234567890123,'999,999,999,999');
WARNING: detected write past chunk end in ExprContext 0x845509c
WARNING: detected write past chunk end in ExprContext 0x845509c to_char
------------------ ###,###,###,###
(1 row)
postgres=# select to_char(1234567890123,'99,999,999,999'); to_char
----------------- ##,###,###,###
(1 row)
So strangely, to get the worrying WARNING, I seem to need >INT_MAX with
a format string with 1 less positions than necessary - no wonder I
seemed to only see it randomly...
Thoughts?
Cheers,
Patrick