From: | Andy Fan <zhihui(dot)fan1213(at)gmail(dot)com> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | 2 questions about volatile attribute of pg_proc. |
Date: | 2021-04-18 15:06:15 |
Message-ID: | CAKU4AWp09TdpQzGo859MxvcYfiMvrMMjP2-R2EM=4JJELSFvgA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi:
We know volatile is very harmful for optimizers and it is the default
value (and safest value) if the user doesn't provide that. Asking user
to set the value is not a good experience, is it possible to auto-generate
the value for it rather than use the volatile directly for user defined
function. I
think it should be possible, we just need to scan the PlpgSQL_stmt to see
if there
is a volatile function?
The second question "It is v for “volatile” functions, whose results might
change at any time.
(Use v also for functions with side-effects, so that calls to them cannot
get optimized away.)"
I think they are different semantics. One of the results is volatile
functions can't be removed
by remove_unused_subquery_output even if it doesn't have side effects. for
example:
select b from (select an_expensive_random(), b from t); Is it by design
on purpose?
--
Best Regards
Andy Fan (https://www.aliyun.com/)
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2021-04-18 15:13:26 | Re: 2 questions about volatile attribute of pg_proc. |
Previous Message | Valentin Gatien-Baron | 2021-04-18 14:53:36 | websearch_to_tsquery() returns queries that don't match to_tsvector() |