2014-07-04 8:52 GMT-03:00 Thiago <[email protected]>:

> Matheus, muito obrigado, deu certo.
>

Tranquilo. :)


> Vou estudar um pouco sobre isso. Interessante que agente aprende a criar
> as funções, pl_pg mas nunca levei muito em consideração estas opções.
>
>
É, muita gente não usa. Eu particularmente acho que seria interessante o PG
tentar identificar essa características para algumas funções, mas como não
dá (até porque no PG pode-se criar funções em várias linguagens, o que
dificulta essa verificação) ele acaba assumindo o mais seguro, que é
VOLATILE, como padrão.


> Se souber de algum artigo para me indicar.
>

Sei não. Mas é um bom tópico para escrever num blog. Vou ver se escrevo
sobre isso essa semana e volto aqui pra passar pra vocês. Mas um resumo bem
prático seria:

- IMMUTABLE: tudo que é uma computação direta dos parâmetros (como no seu
caso). E só deve fazer chamadas à outras funções IMMUTABLE.
- STABLE: basicamente tudo que faça consultas somente leitura no banco. E
só deve fazer chamada à outras funções que sejam IMMUTABLE ou STABLE.
- VOLTILE: tudo que faça escrita ou seja baseado em parâmetros de
configuração. Pode chamar qualquer outra função (basicamente este tipo de
função é **sempre** chamada, não há otimização).

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a