Обсуждение: functions/operators with 2 sets as arguments

Поиск
Список
Период
Сортировка

functions/operators with 2 sets as arguments

От
Jochem van Dieten
Дата:
While trying to create an operator to test if 2 intervals
overlap, I ran into the following limitation:

ERROR:  Functions and operators can take only one set argument
(PostgreSQL 7.3.2 on OpenBSD)

Does anybody know any workarounds (or if this limitation has been
removed from 7.4)?

Jochem

--
When you don't want to be surprised by the revolution
organize one yourself
     - Loesje




Re: functions/operators with 2 sets as arguments

От
Tom Lane
Дата:
Jochem van Dieten <jochemd@oli.tudelft.nl> writes:
> While trying to create an operator to test if 2 intervals
> overlap, I ran into the following limitation:

> ERROR:  Functions and operators can take only one set argument
> (PostgreSQL 7.3.2 on OpenBSD)

> Does anybody know any workarounds (or if this limitation has been
> removed from 7.4)?

It's still there, and is unlikely to go away (I think future development
is more likely to go in the direction of deprecating/removing set-valued
functions in SELECT expressions than extending the facility).

Why would interval overlap testing require such a function?  What are
you trying to do, exactly?

Also, have you looked at the SQL OVERLAPS operator?  Your problem might
be solved already, if what you are after corresponds to what the SQL
authors thought would be useful ...

            regards, tom lane

Re: functions/operators with 2 sets as arguments

От
Jochem van Dieten
Дата:
Tom Lane wrote:
> Jochem van Dieten <jochemd@oli.tudelft.nl> writes:
>>
>> While trying to create an operator to test if 2 intervals
>> overlap, I ran into the following limitation:
>>
>> ERROR:  Functions and operators can take only one set argument
>> (PostgreSQL 7.3.2 on OpenBSD)

> It's still there, and is unlikely to go away (I think future development
> is more likely to go in the direction of deprecating/removing set-valued
> functions in SELECT expressions than extending the facility).
>
> Why would interval overlap testing require such a function?  What are
> you trying to do, exactly?
>
> Also, have you looked at the SQL OVERLAPS operator? Your problem might
> be solved already, if what you are after corresponds to what the SQL
> authors thought would be useful ...

The SQL OVERLAPS predicate is almost what I want, but I would
like to have an operator that returns TRUE if the end of the
first interval is the beginning of the second interval. But since
2 sets can't be used, I will fix it by simply adding an extra
condition to the query.

Jochem

--
When you don't want to be surprised by the revolution
organize one yourself
     - Loesje