functions/operators with 2 sets as arguments

Started by Jochem van Dietenover 22 years ago3 messagesgeneral
Jump to latest
#1Jochem van Dieten
jochemd@oli.tudelft.nl

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jochem van Dieten (#1)
Re: functions/operators with 2 sets as arguments

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

#3Jochem van Dieten
jochemd@oli.tudelft.nl
In reply to: Tom Lane (#2)
Re: functions/operators with 2 sets as arguments

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