Tweak interval_avg support to avoid coredump with Alpha/Tru64 compiler.
Per report from Bernd Tegge.
This commit is contained in:
parent
52ca149b36
commit
dcdf9119a8
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.59 2001/10/25 05:49:45 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.60 2001/11/21 18:29:48 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1570,9 +1570,12 @@ interval_accum(PG_FUNCTION_ARGS)
|
||||
* buggy array code: it won't ensure proper alignment of Interval
|
||||
* objects on machines where double requires 8-byte alignment. That
|
||||
* should be fixed, but in the meantime...
|
||||
*
|
||||
* Note: must use DatumGetPointer here, not DatumGetIntervalP,
|
||||
* else some compilers optimize into double-aligned load/store anyway.
|
||||
*/
|
||||
memcpy(&sumX, DatumGetIntervalP(transdatums[0]), sizeof(Interval));
|
||||
memcpy(&N, DatumGetIntervalP(transdatums[1]), sizeof(Interval));
|
||||
memcpy((void *) &sumX, DatumGetPointer(transdatums[0]), sizeof(Interval));
|
||||
memcpy((void *) &N, DatumGetPointer(transdatums[1]), sizeof(Interval));
|
||||
|
||||
newsum = DatumGetIntervalP(DirectFunctionCall2(interval_pl,
|
||||
IntervalPGetDatum(&sumX),
|
||||
@ -1609,9 +1612,12 @@ interval_avg(PG_FUNCTION_ARGS)
|
||||
* buggy array code: it won't ensure proper alignment of Interval
|
||||
* objects on machines where double requires 8-byte alignment. That
|
||||
* should be fixed, but in the meantime...
|
||||
*
|
||||
* Note: must use DatumGetPointer here, not DatumGetIntervalP,
|
||||
* else some compilers optimize into double-aligned load/store anyway.
|
||||
*/
|
||||
memcpy(&sumX, DatumGetIntervalP(transdatums[0]), sizeof(Interval));
|
||||
memcpy(&N, DatumGetIntervalP(transdatums[1]), sizeof(Interval));
|
||||
memcpy((void *) &sumX, DatumGetPointer(transdatums[0]), sizeof(Interval));
|
||||
memcpy((void *) &N, DatumGetPointer(transdatums[1]), sizeof(Interval));
|
||||
|
||||
/* SQL92 defines AVG of no values to be NULL */
|
||||
if (N.time == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user