Обсуждение: functions/operators with 2 sets as arguments
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
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
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