Pessoal, não estou mais usando isso, mas, quero entender o porque do
comportamento.
Estava criando índices usando uma função que criei para "tirar" acentuação.
algo mais ou menos assim:

FUNÇÃO:
CREATE OR REPLACE FUNCTION public.__sem_acentos(character varying)
  RETURNS character varying AS
$BODY$
SELECT TRANSLATE($1, 'áéíóúàèìòùãõâêîôûäëïöüçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇ&',
                    'aeiouaeiouaoaeiouaeioucAEIOUAEIOUAOAEIOUAEIOUCe')
$BODY$
  LANGUAGE sql VOLATILE
  COST 100;
COMMENT ON FUNCTION public.__sem_acentos(character varying) IS 'elimina
acentuação';

USO NO ÍNDICE:

CREATE INDEX cadastro_nome_idx
  ON public.cadastro
  USING btree
  ( __sem_acentos(nome) COLLATE pg_catalog."default");

Funcionava direito.
Uns tempos atras, me mostraram a função UNACCENT
Gostei dela e, nos casos que eu queria retirar acentos, passei a usar ela.

Por curiosidade (já que não estou usando mais), resolvi substituir o
"__sem_acentos" na criação do índice acima, porém, deu erro:

FUNÇÃO NO ÍNDICE:

CREATE INDEX cadastro_nome_idx
  ON public.cadastro
  USING btree
  ( unaccent(nome) COLLATE pg_catalog."default");

MENSAGEM DE ERRO:
ERROR:  functions in index expression must be marked IMMUTABLE
********** Error **********

ERROR: functions in index expression must be marked IMMUTABLE
SQL state: 42P17

Que erro é esse? E porque?
Simplesmente mudei o nome da função, a sintaxe é a mesma.

Usando PostgreSQL 9.5 32 bits Windows 10 Pro 32 bits

-- 
Eduardo Az
Dep. TI
EMBRASIS
email: [email protected]
cel.:(11)98125-3845 TIM
cel.:(11)94456-5126 VIVO
tel.:(11)2626-5190
skype: [email protected] / (11)3013-2329

Eu adotei o uso de padrões abertos (ODF) para documentos de texto (ODT),
planilhas (ODS) e apresentações (ODP). Se você está com dificuldade para
abrir o(s) arquivo(s) anexo(s), instale o software LibreOffice, disponível
gratuitamente para download em:
http://pt-br.libreoffice.org/baixe-ja/

*"Seja a mudança que você quer ver no mundo" - Mahatma Ghandi*

AVISO LEGAL: Esta mensagem e arquivos podem conter informações
confidenciais e ou legalmente protegidas. Caso tenha recebido por engano,
favor devolve-la ao remetente e elimina-la do seu sistema, não divulgando
ou utilizando a totalidade ou parte desta mensagem ou dos documentos a ela
anexados.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a