Attached is a patch for the 8.3devel 64-bit money type. Bug reported
here: http://archives.postgresql.org/pgsql-bugs/2007-08/msg00137.php.
Run the test program included in the bug report to see the issue. Then
apply patch and run the test again.
Andrew Chernow
Index: src/backend/utils/adt/cash.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/cash.c,v
retrieving revision 1.71
diff -c -C6 -r1.71 cash.c
*** src/backend/utils/adt/cash.c 12 Jul 2007 23:51:10 -0000 1.71
--- src/backend/utils/adt/cash.c 20 Aug 2007 14:10:44 -0000
***************
*** 369,394 ****
*/
Datum
cash_recv(PG_FUNCTION_ARGS)
{
StringInfo buf = (StringInfo) PG_GETARG_POINTER(0);
! PG_RETURN_CASH((Cash) pq_getmsgint(buf, sizeof(Cash)));
}
/*
* cash_send - converts cash to
binary format
*/
Datum
cash_send(PG_FUNCTION_ARGS)
{
Cash arg1 = PG_GETARG_CASH(0);
StringInfoData buf;
pq_begintypsend(&buf);
! pq_sendint(&buf, arg1, sizeof(Cash));
PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
}
/*
* Comparison functions
*/
--- 369,394 ----
*/
Datum
cash_recv(PG_FUNCTION_ARGS)
{
StringInfo buf = (StringInfo) PG_GETARG_POINTER(0);
! PG_RETURN_CASH((Cash) pq_getmsgint64(buf));
}
/*
* cash_send - converts cash to
binary format
*/
Datum
cash_send(PG_FUNCTION_ARGS)
{
Cash arg1 = PG_GETARG_CASH(0);
StringInfoData buf;
pq_begintypsend(&buf);
! pq_sendint64(&buf, arg1);
PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
}
/*
* Comparison functions
*/
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings