Thread: Question about IMMUTABLE function

Question about IMMUTABLE function

From
"petrov.boris.v@mail.ru"
Date:
Hi
Documentation states, that IMMUTABLE "... guaranteed to return the same
results given the same arguments forever." My doubts are regarding
'forever' word.
Q1: Can I safely mark as IMMUTABLE
     FUNCTION calc_col_gen_full_weburl(content_pages_table)
Which is used in following context:
     SELECT p.id, p.calc_col_gen_full_weburl FROM content_pages_table;
Given that:
     1. It internally does SELECT. It looks at other rows in the same
table (parent rows, to generate full url). And these rows may be updated
some day. So it should return new value for row#5 if row#3 will be changed.
     2. It in turn calls other function that is really IMMUTABLE (say
my_char_replace()) and does not selects from anywhere. But, the
implementation of that (my_char_replace()) function may be changed
someday (it will be recreated).




Re: Question about IMMUTABLE function

From
"petrov.boris.v@mail.ru"
Date:
I am sorry for posting that question. Documentation covers that:
"the immutability will be broken if the table contents ever change". I
should read more carefully.

On 11/17/2015 08:54 PM, petrov.boris.v@mail.ru wrote:
> Hi
> Documentation states, that IMMUTABLE "... guaranteed to return the same
> results given the same arguments forever." My doubts are regarding
> 'forever' word.
> Q1: Can I safely mark as IMMUTABLE
>       FUNCTION calc_col_gen_full_weburl(content_pages_table)
> Which is used in following context:
>       SELECT p.id, p.calc_col_gen_full_weburl FROM content_pages_table;
> Given that:
>       1. It internally does SELECT. It looks at other rows in the same
> table (parent rows, to generate full url). And these rows may be updated
> some day. So it should return new value for row#5 if row#3 will be changed.
>       2. It in turn calls other function that is really IMMUTABLE (say
> my_char_replace()) and does not selects from anywhere. But, the
> implementation of that (my_char_replace()) function may be changed
> someday (it will be recreated).
>