Re: Range types

Поиск
Список
Период
Сортировка
От Scott Bailey
Тема Re: Range types
Дата
Msg-id 4B2689CE.1070304@comcast.net
обсуждение исходный текст
Ответ на Re: Range types  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Tom Lane wrote:
> Scott Bailey <artacus@comcast.net> writes:
>> Because intervals (mathematical not SQL) can be open or closed at each 
>> end point we need to know what the next an previous value would be at 
>> the specified granularity. And while you can do some operations without 
>> knowing this, there are many you can't. For instance you could not tell 
>> whether two [] or () ranges were adjacent, or be able to coalesce an 
>> array of ranges.
> 
> This statement seems to me to demonstrate that you don't actually
> understand the concept of open and closed ranges.  It has nothing
> whatsoever to do with assuming that the data type is discrete;
> these concepts are perfectly well defined for the reals, for example.
> What it is about is whether the inclusion conditions are "< bound"
> or "<= bound".

I won't address how you draw your conclusions here. But I find it 
'interesting' that you assume that I don't know what I'm talking about 
rather than assume you don't fully understand what I'm talking about.

Anyhow. For any given range you may be 4 combinations of values. Either 
the first value included in the range '[' or the last value preceding 
the start of the range '('; and the last value included in the range ']' 
or the first value following the end of the range ')'. We aren't going 
to store all four data points so we need to normalize into the most 
common form, a half-open interval [) and store just those two values. 
The first value included in the range and the first value after the end 
of our range.

So lets say you are using a  numeric range to model the high and low 
values of stocks trading on a given day. Now imagine doing this with no 
concept of granularity. You will most likely be given a range [low, 
high] with inclusive end points. So how do you convert that to a 
closed-open interval so you can store it? Is 20.42000000000000000001 the 
next value after 20.42? Probably not. You are going to want to define 
0.01 as the granularity for this (either type or column) so that 20.43 is.

Or again are the ranges [14.0, 22.0] and [22.1, 29.0] adjacent? Maybe, 
maybe not. There is no way to tell w/o knowing the granularity. Perhaps 
the granularity is 0.000000001 and there are a billion values that are 
not included. Or perhaps the granularity is 0.1 and the are adjacent.

Scott


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Python 3.1 support
Следующее
От: Simon Riggs
Дата:
Сообщение: Re: Hot Standby, release candidate?