mirror of
https://github.com/postgres/postgres.git
synced 2025-06-27 23:21:58 +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:
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.154 2008/03/10 12:39:22 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.155 2008/04/21 00:26:45 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1780,7 +1780,7 @@ float8_accum(PG_FUNCTION_ARGS)
|
||||
|
||||
result = construct_array(transdatums, 3,
|
||||
FLOAT8OID,
|
||||
sizeof(float8), false /* float8 byval */ , 'd');
|
||||
sizeof(float8), FLOAT8PASSBYVAL, 'd');
|
||||
|
||||
PG_RETURN_ARRAYTYPE_P(result);
|
||||
}
|
||||
@ -1833,7 +1833,7 @@ float4_accum(PG_FUNCTION_ARGS)
|
||||
|
||||
result = construct_array(transdatums, 3,
|
||||
FLOAT8OID,
|
||||
sizeof(float8), false /* float8 byval */ , 'd');
|
||||
sizeof(float8), FLOAT8PASSBYVAL, 'd');
|
||||
|
||||
PG_RETURN_ARRAYTYPE_P(result);
|
||||
}
|
||||
@ -2056,8 +2056,7 @@ float8_regr_accum(PG_FUNCTION_ARGS)
|
||||
|
||||
result = construct_array(transdatums, 6,
|
||||
FLOAT8OID,
|
||||
sizeof(float8),
|
||||
false /* float8 byval */ , 'd');
|
||||
sizeof(float8), FLOAT8PASSBYVAL, 'd');
|
||||
|
||||
PG_RETURN_ARRAYTYPE_P(result);
|
||||
}
|
||||
|
Reference in New Issue
Block a user