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