CREATE CONVERSION

CREATE CONVERSION — define uma nova conversão de codificação

Sinopse

CREATE [ DEFAULT ] CONVERSION nome
    FOR codificação_da_origem TO codificação_do_destino FROM nome_da_função

Descrição

O comando CREATE CONVERSION define uma nova conversão entre as codificações de dois conjuntos de caracteres.

As conversões marcadas como DEFAULT podem ser usadas para conversão automática de codificação entre cliente e servidor. Para fornecer suporte a este uso, devem ser definidas duas conversões, da codificação A para B, e da codificação B para A.

Para poder criar uma conversão, é necessário ter o privilégio EXECUTE na função de conversão, e o privilégio CREATE no esquema de destino.

Parâmetros

DEFAULT

A cláusula DEFAULT indica que esta é a conversão padrão entre estas codificações de origem e de destino. Deve haver apenas uma conversão padrão no esquema para um par de codificações.

nome

O nome da conversão. O nome da conversão pode ser qualificado pelo esquema. Se não for, a conversão será definida no esquema corrente. O nome da conversão deve ser único no esquema.

codificação_da_origem

O nome da codificação de origem.

codificação_do_destino

O nome da codificação de destino.

nome_da_função

A função usada para realizar a conversão. O nome da função pode ser qualificado pelo esquema. Caso contrário, a função será procurada no caminho.

A função deve ter a seguinte assinatura:

conv_proc(
    integer,  -- ID da codificação de origem
    integer,  -- ID da codificação de destino
    cstring,  -- cadeia de caracteres de origem (string C terminada em nulo)
    internal, -- destino (preenchida com uma string C terminada em nulo)
    integer,  -- comprimento da cadeia de caracteres de origem
    boolean   -- se verdade, não relata erro se a conversão falhar
) RETURNS integer;

O valor retornado é o número de bytes da origem que foram convertidos com sucesso. Se o último argumento for falso, a função deverá lançar um erro de entrada inválida, e o valor retornado será sempre igual ao comprimento da cadeia de caracteres de origem.

Notas

Nem a codificação de origem, nem a de destino, podem ser SQL_ASCII, porque o comportamento do servidor para casos envolvendo a codificação SQL_ASCII é nativo.

Deve ser usado o comando DROP CONVERSION para remover conversões definidas pelo usuário.

Os privilégios necessários para criar uma conversão podem ser alterados em uma versão futura.

Exemplos

Para criar uma conversão da codificação de UTF8 para LATIN1 usando minha_função:

CREATE CONVERSION minha_conversão FOR 'UTF8' TO 'LATIN1' FROM minha_função;

Conformidade

O comando CREATE CONVERSION é uma extensão do PostgreSQL. Não existe o comando CREATE CONVERSION no padrão SQL, mas há o comando CREATE TRANSLATION que é muito semelhante em propósito e sintaxe.

Veja também

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION