Oh, Gaetano, didn't you see in my first letter of this topic
that args are the same in session (they are constant)?
The first paragraf of my first letter of this topic was:
< Hi folks. I notice that immutable flag does nothing when i invoke
< my plpgsql function within one session with same args.
^^^^^^^^^^^^^^
... ok, mabe i should say "constant args" as in doc.
Anyway, thank you for attention and willing to help.
regards, andriy tkachuk (http://imt.com.ua)
On Sun, 12 Oct 2003, Gaetano Mendola wrote:
> Andriy Tkachuk wrote:
>
> > On Thu, 9 Oct 2003, Gaetano Mendola wrote:
> >>Andriy Tkachuk wrote:
> >>>On Wed, 8 Oct 2003, Tom Lane wrote:
> >>>>Andriy Tkachuk <ant@imt.com.ua> writes:
> >>>>>At second. calc_total() is immutable function:
> >>>>>but it seems that it's not cached in one session:
> >>>>
> >>>>It's not supposed to be.
> >>>
> >>>
> >>>but it's written id doc:
> >>>
> >>> IMMUTABLE indicates that the function always returns the same
> >>> result when given the same argument values; that is, it does not
> >>> do database lookups or otherwise use information not directly
> >>> present in its parameter list. If this option is given, any call
> >>> of the function with all-constant arguments can be immediately
> >>> replaced with the function value.
> >>
> >>The doc say "can be" not must and will be.
> >
> >
> > ok, but on what it depends on?
>
> For example in:
>
> select * from T where f_immutable ( 4 ) = T.id;
>
>
> in this case f_immutable will be evaluated once.
>
>
>
> select * from T where f_immutable ( T.id ) = X;
>
> here f_immutable will be avaluated for each different T.id.
>
> Regards
> Gaetano Mendola