select 'NOW?'::TIMESTAMP; timestamp ---------------------------- 2010-06-09 14:08:21.020259
postgres=# select ';;;infinity?...@$%$'::TIMESTAMP; timestamp ----------- infinity (1 row) It appears that the ts parser will ignore any punctuation surrounding the special value calls. In general, this isn't a potential problem. However, it could cause some confusion with careless value replacement by users. Imagine a case like this: create or replace function epoch(integer) returns timestamp language sql as 'SELECT ''epoch''::timestamp + $1 * interval ''1 second'';'; Then later you fail on your client quoting rules and do the following in your app code: UPDATE some_table SET timestamp_field = 'epoch(150000)' WHERE id = 501; The above will result in 1970-01-01 00:00:00 UTC getting into the field, not 1970-01-02 17:40:00 as the user intended, since the '(150000)' will be ignored. And given the lack of an error message, a lot of debugging time. On the other hand, it appears that our timestamps have had this bug since at least 8.0, so it clearly isn't a widespread problem for most users. And likely some users have been "taking advantage" of letting garbage into their timestamp casts, so there would be some application breakage. Thoughts? -- -- Josh Berkus PostgreSQL Experts Inc. http://www.pgexperts.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers