Estou em uma situação peculiar:
Eu tenho vários índices com expressões que usam uma função. Quero trocá-los para uma função diferente, onde posso garantir que a função se comporte da mesma forma (para que os valores indexados não sejam inválidos). Idealmente, não quero descartar o índice existente e reindexá-lo, porque isso requer mais sobrecarga de desenvolvimento.
Eu posso ver na pg_index
tabela, há uma indexprs
coluna, que contém a definição "interna" de um índice (a pg_indexes
tabela é uma versão muito impressa disso). Especificamente, acho que identifiquei os índices relevantes para ter um formato nos moldes de ({FUNCEXPR :funcid 870 :funcresulttype 25 :funcretset false
...
Voltando funcid 870
para o information_schema.routines
, consegui correlacioná-lo no specific_name
(que contém esse funcid) e pude determinar que é de fato a função específica que quero alterar.
Seria - teoricamente - possível substituir esse funcid pelo novo funcid e os índices então se refeririam à nova função? Como eu faria isso, já que esta coluna é do tipo pg_node_tree? Se não, existe uma maneira de atingir meu objetivo de uma maneira não hackeada?
Adendo: Provavelmente ainda farei isso da maneira "limpa", a menos que haja uma maneira segura e comprovada de fazer isso, mas isso despertou meu interesse o suficiente para fazer uma pergunta sobre isso.