| From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
|---|---|
| To: | pgsql-bugs(at)postgresql(dot)org |
| Cc: | "Jeff Dwyer" <jdwyer(at)patientslikeme(dot)com> |
| Subject: | Re: BUG #4085: No implicit cast after coalesce |
| Date: | 2008-04-02 22:24:17 |
| Message-ID: | 200804030024.18263.peter_e@gmx.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Jeff Dwyer wrote:
> This works fine:
> select 1 where current_date between '1900-3-3' and '1900-2-2';
> This doesn't:
> select 1 where current_date between coalesce(null,current_date) and
> coalesce(null, '1900-1-2');
>
> This fix works:
> select 1 where current_date between coalesce(null,current_date) and
> coalesce(null, date('1900-1-2'));
>
>
> This seems like a bug to me. Why should an explicit cast be necessary after
> a coalesce?
Because coalesce(null, '1900-1-2') has no other type information attached, so
it would have picked text by default as result type, and that then clashes
with the result type of coalesce(null,current_date), which can be derived to
be date. This is a robustness improvement: 8.2 and earlier would silently
accept coalesce(null, 'abc') and apply text-semantics comparison.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2008-04-02 23:15:56 | Re: BUG #4085: No implicit cast after coalesce |
| Previous Message | Jeff Dwyer | 2008-04-02 21:04:22 | BUG #4085: No implicit cast after coalesce |