Re: Does IMMUTABLE property propagate?
От | Pavel Stehule |
---|---|
Тема | Re: Does IMMUTABLE property propagate? |
Дата | |
Msg-id | 162867791003250926v4230f599u13f82d3a56ffd877@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Does IMMUTABLE property propagate? (Louis-David Mitterrand <vindex+lists-pgsql-sql@apartia.org>) |
Список | pgsql-sql |
2010/3/25 Louis-David Mitterrand <vindex+lists-pgsql-sql@apartia.org>: > On Thu, Mar 25, 2010 at 08:27:27AM +0100, Pavel Stehule wrote: >> 2010/3/25 Louis-David Mitterrand <vindex+lists-pgsql-sql@apartia.org>: >> > On Sat, Mar 06, 2010 at 04:31:55PM -0500, Tom Lane wrote: >> >> Petru Ghita <petrutz@venaver.info> writes: >> >> > "..immediately replaced with the function value" doesn't mean that the >> >> > results of a previously evaluated function for the same parameters are >> >> > stored and reused? >> >> >> >> No, it means what it says: the function is executed once and replaced >> >> with a constant representing the result value. >> > >> > So for example a function like: >> > >> > >> > CREATE OR REPLACE FUNCTION shorten_cruise_type(intext text) RETURNS text >> > AS $$ >> > declare >> > outtext text; >> > begin >> > outtext = trim(regexp_replace(intext, E'\\s*Short( Break)?', '', 'i')); >> > return outtext; >> > end; >> > $$ >> > LANGUAGE plpgsql; >> > >> >> yes it should be declared as immutable. plpgsql function is black box >> for executor, so you have to use some flag. language sql is different, >> executor see inside, so there you can not do it. > > Hmm, that's interesting. So for simple functions (like my example) it is > better to write them in plain sql? And in that case no 'immutable' flag > is necessary? > sure Pavel > -- > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-sql >
В списке pgsql-sql по дате отправления: