diff options
Diffstat (limited to 'src/backend/utils/adt/date.c')
-rw-r--r-- | src/backend/utils/adt/date.c | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index abc6155594f..4f8f96075d9 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.110 2005/06/15 00:34:08 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.111 2005/07/10 21:13:59 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -982,12 +982,21 @@ Datum time_recv(PG_FUNCTION_ARGS) { StringInfo buf = (StringInfo) PG_GETARG_POINTER(0); +#ifdef NOT_USED + Oid typelem = PG_GETARG_OID(1); +#endif + int32 typmod = PG_GETARG_INT32(2); + TimeADT result; #ifdef HAVE_INT64_TIMESTAMP - PG_RETURN_TIMEADT((TimeADT) pq_getmsgint64(buf)); + result = pq_getmsgint64(buf); #else - PG_RETURN_TIMEADT((TimeADT) pq_getmsgfloat8(buf)); + result = pq_getmsgfloat8(buf); #endif + + AdjustTimeForTypmod(&result, typmod); + + PG_RETURN_TIMEADT(result); } /* @@ -1774,18 +1783,24 @@ Datum timetz_recv(PG_FUNCTION_ARGS) { StringInfo buf = (StringInfo) PG_GETARG_POINTER(0); - TimeTzADT *time; +#ifdef NOT_USED + Oid typelem = PG_GETARG_OID(1); +#endif + int32 typmod = PG_GETARG_INT32(2); + TimeTzADT *result; - time = (TimeTzADT *) palloc(sizeof(TimeTzADT)); + result = (TimeTzADT *) palloc(sizeof(TimeTzADT)); #ifdef HAVE_INT64_TIMESTAMP - time->time = pq_getmsgint64(buf); + result->time = pq_getmsgint64(buf); #else - time->time = pq_getmsgfloat8(buf); + result->time = pq_getmsgfloat8(buf); #endif - time->zone = pq_getmsgint(buf, sizeof(time->zone)); + result->zone = pq_getmsgint(buf, sizeof(result->zone)); + + AdjustTimeForTypmod(&(result->time), typmod); - PG_RETURN_TIMETZADT_P(time); + PG_RETURN_TIMETZADT_P(result); } /* |