Hello,
I would like to allow the execution of a function (my_function) only if its
argument (my_table.x) belongs to a predefined interval (e.g. [100,1000]).
Let's take the following query example :
(q) SELECT * FROM my_table WHERE my_function(mytable.x);
I would like this query automatically rewrites itself to check whether
"mytable.x" belong to the interval [100,1000] :
(q') SELECT * FROM my_table WHERE (my_table.x BETWEEN 100 AND 1000) AND
my_function(my_table.x);
The command EXPLAIN ANALYSE shows that the second query is really faster
than the first one.
How can I change the query execution plan in order to automate the process
of query rewriting (q into q') ?
Where can I store suitably the metadata about the interval [100,1000]
associated to my_function ?
Thanks by advance,
Thomas Girault
Responses
pgsql-hackers by date
| Next: | From: Tom Lane | Date: 2012-05-16 12:35:51 |
| Subject: Re: Avoiding execution of some functions by query rewriting |
| Previous: | From: Heikki Linnakangas | Date: 2012-05-16 11:46:17 |
| Subject: Re: Interrupting long external library calls |