3
Категории изменчивости
Volatile
возвращаемое значение может произвольно меняться
при одинаковых значениях входных параметров
используется по умолчанию
Stable
значение не меняется в пределах одного оператора SQL
функция не может менять состояние базы данных
Immutable
значение не меняется, функция детерминирована
функция не может менять состояние базы данных
Каждой функции сопоставлена категория изменчивости, которая
определяет свойства возвращаемого значения при одинаковых
значениях входных параметров.
Категория Volatile говорит о том, что возвращаемое значение может
произвольно меняться. Такие функции будут выполняться каждый раз
при каждом вызове. Если при создании функции категория не указана,
назначается именно эта категория.
Категория Stable используется для функций, возвращаемое значение
которых не меняется в пределах одного SQL-оператора. В частности,
такие функции не могут менять состояние БД. Такая функция может
быть выполнена один раз во время выполнения запроса, а затем будет
использоваться вычисленное значение.
Категория Immutable еще более строгая: возвращаемое значение
не меняется никогда. Такую функцию можно выполнить на этапе
планирования запроса, а не во время выполнения.
Можно — не означает, что всегда происходит именно так,
но планировщик вправе выполнить такие оптимизации.