mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
Fix time_larger, time_smaller, timetz_larger, timetz_smaller to meet
nodeAgg.c's expectation that aggregate transition functions never return pointers to their input values. This is fixed in a much better way in current sources, but in 7.0.* it's gotta be done like this.
This commit is contained in:
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.44 2000/04/12 17:15:48 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.44.2.1 2000/10/19 20:52:35 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -495,13 +495,23 @@ time_cmp(TimeADT *time1, TimeADT *time2)
|
|||||||
TimeADT *
|
TimeADT *
|
||||||
time_larger(TimeADT *time1, TimeADT *time2)
|
time_larger(TimeADT *time1, TimeADT *time2)
|
||||||
{
|
{
|
||||||
return time_gt(time1, time2) ? time1 : time2;
|
TimeADT *result;
|
||||||
|
|
||||||
|
/* nodeAgg.c expects me to return a copied datum! */
|
||||||
|
result = palloc(sizeof(*result));
|
||||||
|
*result = time_gt(time1, time2) ? *time1 : *time2;
|
||||||
|
return result;
|
||||||
} /* time_larger() */
|
} /* time_larger() */
|
||||||
|
|
||||||
TimeADT *
|
TimeADT *
|
||||||
time_smaller(TimeADT *time1, TimeADT *time2)
|
time_smaller(TimeADT *time1, TimeADT *time2)
|
||||||
{
|
{
|
||||||
return time_lt(time1, time2) ? time1 : time2;
|
TimeADT *result;
|
||||||
|
|
||||||
|
/* nodeAgg.c expects me to return a copied datum! */
|
||||||
|
result = palloc(sizeof(*result));
|
||||||
|
*result = time_lt(time1, time2) ? *time1 : *time2;
|
||||||
|
return result;
|
||||||
} /* time_smaller() */
|
} /* time_smaller() */
|
||||||
|
|
||||||
/* overlaps_time()
|
/* overlaps_time()
|
||||||
@ -742,13 +752,23 @@ timetz_cmp(TimeTzADT *time1, TimeTzADT *time2)
|
|||||||
TimeTzADT *
|
TimeTzADT *
|
||||||
timetz_larger(TimeTzADT *time1, TimeTzADT *time2)
|
timetz_larger(TimeTzADT *time1, TimeTzADT *time2)
|
||||||
{
|
{
|
||||||
return timetz_gt(time1, time2) ? time1 : time2;
|
TimeTzADT *result;
|
||||||
|
|
||||||
|
/* nodeAgg.c expects me to return a copied datum! */
|
||||||
|
result = palloc(sizeof(*result));
|
||||||
|
*result = timetz_gt(time1, time2) ? *time1 : *time2;
|
||||||
|
return result;
|
||||||
} /* timetz_larger() */
|
} /* timetz_larger() */
|
||||||
|
|
||||||
TimeTzADT *
|
TimeTzADT *
|
||||||
timetz_smaller(TimeTzADT *time1, TimeTzADT *time2)
|
timetz_smaller(TimeTzADT *time1, TimeTzADT *time2)
|
||||||
{
|
{
|
||||||
return timetz_lt(time1, time2) ? time1 : time2;
|
TimeTzADT *result;
|
||||||
|
|
||||||
|
/* nodeAgg.c expects me to return a copied datum! */
|
||||||
|
result = palloc(sizeof(*result));
|
||||||
|
*result = timetz_lt(time1, time2) ? *time1 : *time2;
|
||||||
|
return result;
|
||||||
} /* timetz_smaller() */
|
} /* timetz_smaller() */
|
||||||
|
|
||||||
/* overlaps_timetz()
|
/* overlaps_timetz()
|
||||||
|
Reference in New Issue
Block a user