Re: BUG #14446: make_date with negative year

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: abelisto(at)gmail(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #14446: make_date with negative year
Date: 2016-12-04 13:40:50
Message-ID: 20161204134050.vsfjbwub6u6jljax@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

abelisto(at)gmail(dot)com wrote:

> Bug reference: 14446
> Logged by: Andy Abelisto
> Email address: abelisto(at)gmail(dot)com
> PostgreSQL version: 9.5.5
> Operating system: Linux Mint
> Description:
>
> with t(x) as (values('1111-11-11 BC'::date)) select make_date(extract(year
> from x)::int, extract(month from x)::int, extract(day from x)::int) from
> t;
> ERROR: date field value out of range: -1111-11-11

make_date() has:

/*
* Note: we'll reject zero or negative year values. Perhaps negatives
* should be allowed to represent BC years?
*/
dterr = ValidateDate(DTK_DATE_M, false, false, false, &tm);

With the attached patch it becomes (needs docs, tests):

with t(x) as (values('1111-11-11 BC'::date),
('00001-11-11 bc'),
('00001-11-11'),
('1111-11-11')
)
select make_date(extract(year
from x)::int, extract(month from x)::int, extract(day from x)::int) from
t;
make_date
───────────────
1111-11-11 BC
0001-11-11 BC
0001-11-11
1111-11-11
(4 filas)

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachment Content-Type Size
make_date_bc.patch text/plain 802 bytes

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2016-12-04 18:19:39 Re: BUG #14446: make_date with negative year
Previous Message abelisto 2016-12-04 05:59:39 BUG #14446: make_date with negative year