mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +03:00
Allow float8, int8, and related datatypes to be passed by value on machines
where Datum is 8 bytes wide. Since this will break old-style C functions (those still using version 0 calling convention) that have arguments or results of these types, provide a configure option to disable it and retain the old pass-by-reference behavior. Likewise, provide a configure option to disable the recently-committed float4 pass-by-value change. Zoltan Boszormenyi, plus configurability stuff by me.
This commit is contained in:
@@ -13,6 +13,12 @@
|
||||
|
||||
typedef int64 Cash;
|
||||
|
||||
/* Cash is pass-by-reference if and only if int64 is */
|
||||
#define DatumGetCash(X) ((Cash) DatumGetInt64(X))
|
||||
#define CashGetDatum(X) Int64GetDatum(X)
|
||||
#define PG_GETARG_CASH(n) DatumGetCash(PG_GETARG_DATUM(n))
|
||||
#define PG_RETURN_CASH(x) return CashGetDatum(x)
|
||||
|
||||
extern Datum cash_in(PG_FUNCTION_ARGS);
|
||||
extern Datum cash_out(PG_FUNCTION_ARGS);
|
||||
extern Datum cash_recv(PG_FUNCTION_ARGS);
|
||||
|
||||
Reference in New Issue
Block a user