With today's CVS code (originally noticed with 8.2beta3), on a PC where
INT_MAX=0x7FFFFFFF=2147483647
postgres=# select version();
version
---------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 8.3devel on 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