CREATE CONVERSION — define uma nova conversão de codificação
CREATE [ DEFAULT ] CONVERSIONnomeFORcodificação_da_origemTOcodificação_do_destinoFROMnome_da_funçã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.
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.
nomeO 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_origemO nome da codificação de origem.
codificação_do_destinoO nome da codificação de destino.
nome_da_funçãoA 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.
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.
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;
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.