2014-07-04 9:44 GMT-03:00 Flavio Henrique Araque Gurgel <[email protected]>:
> - IMMUTABLE: tudo que é uma computação direta dos parâmetros (como no >> seu caso). E só deve fazer chamadas à outras funções IMMUTABLE. >> > > Gostaria de adicionar aqui, IMMUTABLE significa principalmente que o > resultado da função é sempre o mesmo dado um conjunto de parâmetros de > entrada, o que permite por exemplo fazer um índice sobre uma expressão que > usa a dita função. > > Ok, está correto. Só tome cuidado com essa frase pois pode causar confusão, devemos também adicionar a restrição de que não se deve basear-se em nenhum parâmetro de configuração (muito comum por exemplo para timestamptz e a GUC TimeZone). > > - STABLE: basicamente tudo que faça consultas somente leitura no banco. >> E só deve fazer chamada à outras funções que sejam IMMUTABLE ou STABLE. >> > > E que seu resultado só varia a partir dos resultados da(s) leitura(s) > feitas, e não dos parâmetros de entrada. > > Não sei se ficou claro. Acho que você quis dizer: " E que seu resultado só varia a partir dos resultados da(s) leitura(s) feitas **e** dos parâmetros de entrada.". Ou ainda, "Que seu resultado, dados os mesmos parâmetros de entrada, só variam caso o conjunto de dados das leituras mudem". > > - 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). >> > > E cujo resultado pode ser diferente a cada vez que é executada Daí a restrição de que qualquer função que, internamente, chame outra função VOLATILE também é VOLATILE. Mas está correto sim, claro. 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
