Fix recently added code for SQL years-months interval syntax so that

it behaves correctly for a leading minus sign, zero year value, and
nonzero month value.  Per discussion with Ron Mayer.
This commit is contained in:
Tom Lane 2008-11-08 20:51:49 +00:00
parent 13fdd0e4d1
commit eec501c4f7

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.195 2008/10/02 13:47:38 tgl Exp $ * $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.196 2008/11/08 20:51:49 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -2863,7 +2863,7 @@ DecodeInterval(char **field, int *ftype, int nf, int range,
if (*cp != '\0') if (*cp != '\0')
return DTERR_BAD_FORMAT; return DTERR_BAD_FORMAT;
type = DTK_MONTH; type = DTK_MONTH;
if (val < 0) if (*field[i] == '-')
val2 = -val2; val2 = -val2;
val = val * MONTHS_PER_YEAR + val2; val = val * MONTHS_PER_YEAR + val2;
fval = 0; fval = 0;