- These attributes inform the system whether it is safe to
- replace multiple evaluations of the function with a single
- evaluation, for run-time optimization. At most one choice
+ These attributes inform the query optimizer about the behavior
+ of the function. At most one choice
may be specified. If none of these appear,
VOLATILE is the default assumption.
- IMMUTABLE indicates that the function always
+ IMMUTABLE indicates that the function
+ cannot modify the database and 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 argument list. If this option is given,
- STABLE indicates that within a single table scan
- the function will consistently
+ STABLE indicates that the function
+ cannot modify the database,
+ and that within a single table scan it will consistently
return the same result for the same argument values, but that its
result could change across SQL statements. This is the appropriate
selection for functions whose results depend on database lookups,