42.8. pg_cast

O catálogo pg_cast armazena caminhos de conversão de tipo de dados, tanto os caminhos nativos quanto os definidos através de CREATE CAST.

Tabela 42-8. Colunas de pg_cast

Nome Tipo Referencia Descrição
castsource oid pg_type.oid OID do tipo de dado de origem
casttarget oid pg_type.oid OID do tipo de dado de destino
castfunc oid pg_proc.oid OID da função a ser utilizada para realizar esta conversão. Zero se os tipos de dado forem binariamente compatíveis (ou seja, não é necessária nenhuma operação em tempo de execução para realizar a conversão).
castcontext char   Indica em que contextos a conversão pode ser chamada. O valor e significa somente como uma conversão explícita (utilizando a sintaxe CAST ou ::). O valor a significa implicitamente na atribuição à coluna de destino, bem como explicitamente. O valor i significa implicitamente em expressões, bem como nos demais casos.

As funções de conversão listadas em pg_cast devem sempre receber o tipo de dado de origem como seu primeiro argumento, e retornar o tipo de destino da conversão como o tipo de seu resultado. Uma função de conversão pode ter até três argumentos. O segundo argumento, se estiver presente, deve ser do tipo integer; recebe o modificador de tipo associado ao tipo de destino, ou -1 caso este não exista. O terceiro argumento, se estiver presente, deve ser do tipo boolean; recebe true se a conversão for uma conversão explícita, false caso contrário.

É legítimo criar entradas em pg_cast onde os tipos de origem e de destino sejam o mesmo, se estiver associada a uma função que recebe mais de um argumento. Estas entradas representam as "funções de imposição de comprimento", que fazem os valores do tipo respeitar um determinado valor modificador de tipo. Entretanto, deve ser observado que no momento não há suporte para associar modificadores de tipo não-padrão a tipos de dado criados pelo usuário e, portanto, esta funcionalidade é para uso de apenas um pequeno número de tipos nativos que possuem uma sintaxe de modificador de tipo construída na gramática.

Quando a entrada em pg_cast possui tipos de dado de entrada e destino diferentes, e uma função que recebe mais de um argumento, esta entrada representa a conversão de um tipo para o outro e a aplicação da imposição do comprimento em um único passo. Quando não existe uma entrada deste tipo, a imposição para um tipo que utiliza um modificador de tipo envolve dois passos, um para converter entre os tipos de dados, e um segundo passo para aplicar o modificador.

SourceForge.net Logo CSS válido!