| 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: | Whole Thread | Raw Message | 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 |
| 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 |