On 12/21/2012 02:22 PM, Chris Angelico wrote:
> On Sat, Dec 22, 2012 at 3:53 AM, David Johnston <polobo@yahoo.com> wrote:
>> Chris Angelico wrote, and David dropped the citation (oops!):
>>> By the way, why do you declare your functions as "STRICT IMMUTABLE"
>>> and "STRICT VOLATILE"?
>>
>> Is this a question about the layout of the commands spatially?
>
> As I understand it, there are three keywords: VOLATILE, STRICT, and
> IMMUTABLE. Putting one of those keywords into the declaration flags
> the function accordingly; if none is given, VOLATILE is assumed.
>
> Declaring the function as "STRICT IMMUTABLE" or "STRICT VOLATILE"
> seems at best redundant (the word "STRICT" is mere noise), and at
> worst confusing (the parser might be interpreting it as "STRICT", not
> as the other keyword). Or is there something I'm missing here?
Not sure I am following.
IMMUTABLE/VOLATILE/STABLE deal with the query optimizer.
CALLED ON NULL INPUT/STRICT deal with NULL input behavior.
http://www.postgresql.org/docs/9.2/interactive/sql-createfunction.html
>
> ChrisA
>
>
--
Adrian Klaver
adrian.klaver@gmail.com