| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | David Gould <daveg(at)sonic(dot)net> |
| Cc: | amutu(at)amutu(dot)com, pgsql-bugs(at)postgresql(dot)org |
| Subject: | Re: BUG #13805: plpgsql execute using expression evaluate wrong |
| Date: | 2015-12-08 06:36:39 |
| Message-ID: | 14234.1449556599@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
David Gould <daveg(at)sonic(dot)net> writes:
> However, it does seem a little odd that the literal syntax for
> intervals accepts the '$':
> ...
> I would have expected it to raise an error. The documentation does not shed
> any light on this. Anyone?
The datetime input parser tends to consider most non-alphanumeric
characters as being insignificant except as field separators. We could
tighten that up, but I think we should tread pretty carefully for fear of
breaking cases that used to work. A trivial example:
regression=# select '1 mon 1 day'::interval;
interval
-------------
1 mon 1 day
(1 row)
regression=# select '1 mon, 1 day'::interval;
interval
-------------
1 mon 1 day
(1 row)
If we started to reject the second case, we'd likely get complaints.
But the parser doesn't see that as any different from
regression=# select '1 mon$ 1 day'::interval;
interval
-------------
1 mon 1 day
(1 row)
Trying to decide which characters are legitimate noise and which
aren't seems like a tarbaby best not to get stuck to :-(
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David Gould | 2015-12-08 07:24:48 | Re: BUG #13805: plpgsql execute using expression evaluate wrong |
| Previous Message | Jov | 2015-12-08 06:15:56 | Re: BUG #13805: plpgsql execute using expression evaluate wrong |