Search Postgresql Archives

Re: Range type bounds

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/26/2014 11:07 AM, David G Johnston wrote:
Adrian Klaver-4 wrote
I will leave it to philosophers to decide whether NULL is empty, but it
seems the documentation could be more explicit on what constitutes empty
in the text versus constructor method of creating a range.

Would it be sufficient to simply add another paragraph:

"The lower-bound may be either a string that is valid input for the subtype,
or NULL to indicate no lower bound. Likewise, upper-bound may be either a
string that is valid input for the subtype, or NULL to indicate no upper
bound."

Except that does not work in the text mode:( :

test=> select '[2014-11-01, NULL)'::daterange;
ERROR:  invalid input syntax for type date: " NULL"
LINE 1: select '[2014-11-01, NULL)'::daterange;


test=> select '[2014-11-01, "NULL")'::daterange;
ERROR:  invalid input syntax for type date: " NULL"
LINE 1: select '[2014-11-01, "NULL")'::daterange;

While testing the above I also got this:

test=> select '[2014-11-01, )'::daterange;
ERROR:  invalid input syntax for type date: " "
LINE 1: select '[2014-11-01, )'::daterange;

while:

test=> select '[2014-11-01,)'::daterange;
   daterange
---------------
 [2014-11-01,)
(1 row)

worked. Seems there is a specific meaning to empty.



?

@ 8.17.6. Constructing Ranges

I'm not particularly enamored with the title since "Range Input" is a means
of "Constructing [a] Range"...incorporating the word function into that
would seem warranted.

How about: 8.17.6 Functional Range Construction ?

For 8.17.5 The concept of "Input/Output" implies that we are dealing with
string-like literals and while not something an absolute beginner might pick
up on is likely sufficient and thus omitting the word "Literal" is OK by me.

I guess what is confusing to me is the transition between the text mode and the constructor mode is not clear. In particular the page starts with examples using the constructor mode but then goes to explanations that actually apply to the text mode before getting back to explaining the constructor mode. I eventually figured it out. I just thought it might make it easier for others to make the distinction clearer.


All that said it is taken for granted that you cannot have an empty function
argument so ('val',) is invalid on its face.  The question becomes whether
you should use ('val','') or ('val',NULL).  The only place that is answered
is a single example.  It should be in the body of the text too.

Well I spend my time in Python for the most part so:

def test_fnc(a, b=None):
    print a, b

In [12]: test_fnc('a',)
a None

I will have to plead ignorance on C.


David J.



--
View this message in context: http://postgresql.nabble.com/Range-type-bounds-tp5828396p5828402.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.




--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx


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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux