No Postgres bytea
, os valores são convertidos automaticamente text
quando inseridos em text
/ varchar
colunas, com base na bytea_output
configuração.
Estou trabalhando com algum código de programa que converte automaticamente certos valores (strings binárias) no programa para um formato bytea. O problema é que os usuários podem acidentalmente tentar inserir esses valores em uma text
coluna. Por padrão, o Postgres permitirá isso, mas nem sempre isso funcionará sem problemas - por exemplo, se houver bytes não ASCII. Acho que os usuários podem não perceber que o estranho comportamento de inserção é devido ao uso de uma string binária no programa de chamada. Portanto, se ocorrer uma conversão bytea
para text
, quero que o Posgres gere uma exceção.
Estou ciente de CREATE CAST
, mas pelo que entendi, esta é uma ação de todo o sistema. Não quero alterar o comportamento do sistema para outras conexões. Eu poderia fazer CREATE CAST
seguido, DROP CAST
mas isso parece sujo para mim, pois ainda não está contido na conexão.
Como faço conversões (implícitas) de bytea
lançar text
uma exceção apenas dentro da conexão atual?
O sql é emitido automaticamente, então eu posso adicionar uma instrução SQL anterior antes de cada instrução, isso não é problema.
Fiquei um pouco surpreso com esse comportamento porque o Postgres geralmente erra no lado da rigidez, o que eu gosto.
Esta pergunta segue a minha pergunta anterior: