2 questions about volatile attribute of pg_proc. - Mailing list pgsql-hackers

From Andy Fan
Subject 2 questions about volatile attribute of pg_proc.
Date
Msg-id CAKU4AWp09TdpQzGo859MxvcYfiMvrMMjP2-R2EM=4JJELSFvgA@mail.gmail.com
Whole thread Raw
Responses Re: 2 questions about volatile attribute of pg_proc.  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: 2 questions about volatile attribute of pg_proc.  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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

pgsql-hackers by date:

Previous
From: Andy Fan
Date:
Subject: Consider parent's stats for set_append_rel_size.
Next
From: Pavel Stehule
Date:
Subject: Re: 2 questions about volatile attribute of pg_proc.