Arbitrary whitespace restrictions on range types

Started by Josh Berkusover 13 years ago3 messagesbugs
Jump to latest
#1Josh Berkus
josh@agliodbs.com

Jeff, Hackers:

Is there a strong reason why this has to error?

postgres=# select '[,]'::TSTZRANGE
postgres-# ;
tstzrange
-----------
(,)
(1 row)

postgres=# select '[, ]'::TSTZRANGE;
ERROR: invalid input syntax for type timestamp with time zone: " "
LINE 1: select '[, ]'::TSTZRANGE

--Josh

--
Josh Berkus
PostgreSQL Experts Inc.
http://pgexperts.com

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

In reply to: Josh Berkus (#1)
Re: Arbitrary whitespace restrictions on range types

On 18 December 2012 23:31, Josh Berkus <josh@agliodbs.com> wrote:

Jeff, Hackers:

Is there a strong reason why this has to error?

Having taken a look at the range I/O routines, I surmise that it was
just easier to write range_parse() such that whitespace is included
within <string> tokens:

* Whitespace before or after <range> is ignored. Whitespace within a <string>
* is taken literally and becomes part of the input string for that bound.

I think that escaping the underlying literal values for parsing is a
surprisingly difficult task, so I can see why the implementation would
shrug in this case. This behaviour may be astonishing, but that
doesn't make it a POLA violation. I don't have time to check now, but
I'm pretty sure that doing something else would break a whole bunch of
other common cases.

--
Peter Geoghegan http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Jeff Davis
pgsql@j-davis.com
In reply to: Peter Geoghegan (#2)
Re: Arbitrary whitespace restrictions on range types

On Wed, 2012-12-19 at 00:06 +0000, Peter Geoghegan wrote:

On 18 December 2012 23:31, Josh Berkus <josh@agliodbs.com> wrote:

Jeff, Hackers:

Is there a strong reason why this has to error?

Having taken a look at the range I/O routines, I surmise that it was
just easier to write range_parse() such that whitespace is included
within <string> tokens:

There was some discussion about it, and the decision was made to match
record literal parsing for the sake of consistency. In a record literal,
spaces are considered to be a part of the value, so they are for range
types, as well.

Regards,
Jeff Davis

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs