Function Volatility

Поиск
Список
Период
Сортировка
От Fernando Hevia
Тема Function Volatility
Дата
Msg-id 017901c7f340$f497e400$8f01010a@iptel.com.ar
обсуждение исходный текст
Ответы Re: Function Volatility  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
<p dir="LTR"><span lang="es-ar"></span><span lang="es-ar"><font face="Arial" size="2">Hi guys,</font></span><p
dir="LTR"><spanlang="es-ar"></span><span lang="es-ar"></span><p dir="LTR"><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"><font face="Arial" size="2">I am not sure if I am understanding
volatility.</font></span><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"></span><p
dir="LTR"><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font face="Arial"
size="2">My</font></span><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"> <font face="Arial"
size="2">issue</font></span><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font face="Arial"
size="2">is better explained with a quick example.</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"> <font face="Arial" size="2">The function</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><span lang="en-us"> <font face="Arial" size="2">below expresses call
durationsin minutes and it</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"> <font
face="Arial"size="2">is immutable.</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"></span><pdir="LTR"><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"></span><p
dir="LTR"><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font face="Arial" size="2">CREATE OR
REPLACEFUNCTION dur2min(</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font
face="Arial"size="2">secs</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font
face="Arial"size="2"> INTEGER) RETURNS INTEGER</font></span><p dir="LTR"><span lang="en-us"><font face="Arial"
size="2">AS$$</font></span><p dir="LTR"><span lang="en-us"><font face="Arial" size="2">BEGIN</font></span><p
dir="LTR"><spanlang="en-us">        <font face="Arial" size="2">RAISE NOTICE 'BEEN HERE!';</font></span><p
dir="LTR"><spanlang="en-us">        <font face="Arial" size="2">RETURN CEIL(</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><span lang="en-us"><font face="Arial" size="2">secs</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><span lang="en-us"><font face="Arial" size="2">/60.0);</font></span><p
dir="LTR"><spanlang="en-us"><font face="Arial" size="2">END;</font></span><p dir="LTR"><span lang="en-us"><font
face="Arial"size="2">$$ LANGUAGE 'plpgsql' IMMUTABLE;</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"></span><p dir="LTR"><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"></span><pdir="LTR"><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"></span><p
dir="LTR"><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font face="Arial" size="2"># SELECT
dur2min(30)as c1, dur2min(30) as c2, dur2min(30) as c3;</font></span><p dir="LTR"><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"></span><p dir="LTR"><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2">NOTICE:  BEEN HERE!</font></span><p dir="LTR"><span lang="en-us"><font
face="Arial"size="2">NOTICE:  BEEN HERE!</font></span><p dir="LTR"><span lang="en-us"><font face="Arial"
size="2">NOTICE: BEEN HERE!</font></span><p dir="LTR"><span lang="en-us"><font face="Arial" size="2"> c1 | c2 |
c3</font></span><pdir="LTR"><span lang="es-ar"></span><span lang="es-ar"><font face="Arial"
size="2">----+----+----</font></span><pdir="LTR"><span lang="es-ar"><font face="Arial" size="2">  1 |  1 | 
1</font></span><pdir="LTR"><span lang="es-ar"><font face="Arial" size="2">(1 row)</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><p dir="LTR"><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2">Wh</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2">at</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><font face="Arial" size="2">bother</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2"> me</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><font face="Arial" size="2">are</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2"> the 3</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><font face="Arial" size="2">“</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2">been here</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"><font face="Arial" size="2">”</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"><font face="Arial" size="2"> messages. As the function is immutable and the
parameterremains unchanged</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"> <font
face="Arial"size="2">needs</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font
face="Arial"size="2"> the planner</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2"> actually execute the function 3 times?</font></span><p dir="LTR"><span
lang="en-us"><fontface="Arial" size="2">I was under the impression that</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"><font face="Arial" size="2"> under these conditions</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><span lang="en-us"><font face="Arial" size="2"> it could
*</font></span><spanlang="es-ar"><b></b></span><span lang="es-ar"><b></b></span><b><span lang="en-us"><font
face="Arial"size="2">reuse</font></span></b><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2">* the result of the</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"><font face="Arial" size="2"> first call</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><span lang="en-us"><font face="Arial" size="2">. The
manual</font></span><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"> <font face="Arial"
size="2">states</font></span><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"> <font face="Arial"
size="2">theplanner</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"> <font
face="Arial"size="2">should</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font
face="Arial"size="2"> avoid</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font
face="Arial"size="2"> reevaluate the function but I</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"><font face="Arial" size="2">’</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"><font face="Arial" size="2">m not sure what that means as it *</font></span><span
lang="es-ar"><b></b></span><spanlang="es-ar"><b></b></span><b><span lang="en-us"><font face="Arial"
size="2">is</font></span></b><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"><font face="Arial"
size="2">*executing it every time.</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"></span><pdir="LTR"><span lang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"></span><p
dir="LTR"><spanlang="en-us"><font face="Arial" size="2">My goal of course is that the function get</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><span lang="en-us"><font face="Arial" size="2">s</font></span><span
lang="es-ar"></span><spanlang="es-ar"></span><span lang="en-us"><font face="Arial" size="2"> executed only once per
row.</font></span><spanlang="es-ar"></span><span lang="es-ar"></span><span lang="en-us"></span><p dir="LTR"><span
lang="en-us"><fontface="Arial" size="2">I</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2">’</font></span><span lang="es-ar"></span><span lang="es-ar"></span><span
lang="en-us"><fontface="Arial" size="2">m using 8.2.4</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"></span><p dir="LTR"><span lang="en-us"><font face="Arial" size="2">Thanks for
yourhindsight.</font></span><p dir="LTR"><span lang="en-us"><font face="Arial" size="2">Regards,</font></span><p
dir="LTR"><spanlang="en-us"><font face="Arial" size="2">Fernando.</font></span><span lang="es-ar"></span><span
lang="es-ar"></span><spanlang="en-us"></span> 

В списке pgsql-sql по дате отправления:

Предыдущее
От: novice
Дата:
Сообщение: Re: [GENERAL] work hour calculations
Следующее
От: John Summerfield
Дата:
Сообщение: postgresql HEAD build failure