View Single Post

   
  #1 (permalink)  
Old 04-18-2008, 11:30 AM
Andrew Chernow
 
Posts: n/a
Default Patch to correct 64-bit money type in 8.3devel

Attached is a patch for the 8.3devel 64-bit money type. Bug reported
here: http://archives.postgresql.org/pgsql...8/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

Reply With Quote