Re: Range Types: << >> -|- ops vs empty range

From: Josh Berkus <josh(at)agliodbs(dot)com>
To: Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Jeff Davis <pgsql(at)j-davis(dot)com>, pgsql-hackers(at)postgresql(dot)org, Erik Rijkers <er(at)xs4all(dot)nl>
Subject: Re: Range Types: << >> -|- ops vs empty range
Date: 2011-02-11 18:02:20
Message-ID: 4D5579AC.4050707@agliodbs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


> "empty range"
> =============
> Zero length?
> If so, is it fixed at some point, but empty?
> '(x,x)'?
> '[x,x)'?

Neither of the above should be possible, I think. The expression "(x"
logically excludes the expression "x)".

However, "[x,x]" would be valid, and would be a zero-length interval at
the point "x".

> Is it everything?
> '[-inf,+inf]'?

No, that's "everything" which is a different concept. The above also
ought to be possible, and overlap everything.

> Is it really meaningfully distinct from NULL?

Yes. NULL means "I don't know". If a range type IS NULL, then any
operation performed with it ought to be NULL. Hence:

IF y > x, THEN:

[x,x] << [y,z) == TRUE
[x,x] -|- (x,y] == TRUE
NULL << [y,z} IS NULL
[-inf,+inf] << [y,z) == FALSE

I can imagine using all of these constructs in actual applications. In
fact, I have *already* used [-inf,+inf]

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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message David E. Wheeler 2011-02-11 18:04:57 Re: Careful PL/Perl Release Not Required
Previous Message Alex Hunsaker 2011-02-11 18:01:37 Re: Careful PL/Perl Release Not Required