Adicionando um Novo Conjunto de Caracteres


Para adicionar outro conjunto de caracteres ao MySQL, utilize o seguinte procedimento.

Decida se o conjunto é simples ou complexo. Se o conjunto de caracteres não necessitar do uso de rotinas especiais de classificação de strings para ordenação e também não necessitar de suporte à caracteres multi-byte, será simples. Se ele necessitar de alguns destes recursos, será complexo.

Por exemplo, latin1 e danish são conjuntos simples de caracteres enquanto big5 ou czech são conjuntos de caracteres complexos.

Na seguinte seção, assumimos que você nomeou seu conjunto de caracteres como MYSET.

Para um conjunto de caracteres simples use o seguinte:

  1. Adicione MYSET para o final do arquivo sql/share/charsets/Index Associe um número único ao mesmo.
  2. Crie o arquivo sql/share/charsets/MYSET.conf. (O arquivo sql/share/charsets/latin1.conf pode ser utilizado como base para isto).

    A sintaxe para o arquivo é muito simples:

    • Comentários iniciam com um caractere '#' e continuam até o fim da linha.
    • Palavras são separadas por quantidades arbitrárias de espaços em brancos.
    • Ao definir o conjunto de caracteres, cada palavra deve ser um número no formato hexadecimal
    • O vetor ctype obtêm as primeiras 257 palavras. Os vetores to_lower, to_upper e sort_order obtêm, cada um, as 256 palavras seguintes.

    See "Os Vetores de Definições de Caracteres".

  3. Adicione o nome do conjunto de caracteres às listas CHARSETS_AVAILABLE e COMPILED_CHARSETS no configure.in.
  4. Reconfigure, recompile e teste.

Para um conjunto de caracteres complexo faça o seguinte:

  1. Crie o arquivo strings/ctype-MYSET.c na distribuição fonte do MYSQL.
  2. Adicione MYSET ao final do arquivo sql/share/charsets/Index. Associe um número único a ele.
  3. Procure por um dos arquivos ctype-*.c existentes para ver o que precisa ser definido, por exemplo strings/ctype-big5.c. Perceba que os vetores no seu arquivo deve ter nomes como ctype_MYSET, to_lower_MYSET e etc. Isto corresponde aos arrays no conjunto simples de caracteres - "Os Vetores de Definições de Caracteres" - para um conjunto de caracteres complexo.
  4. Próximo ao topo do arquivo, coloque um comentário especial como este:
    /*
     * This comment is parsed by configure to create ctype.c,
     * so don't change it unless you know what you are doing.
     *
     * .configure. number_MYSET=MYNUMBER
     * .configure. strxfrm_multiply_MYSET=N
     * .configure. mbmaxlen_MYSET=N
     */
    

    O programa configure utiliza este comentário para incluir o conjunto de caracteres na biblioteca MariaDB automaticamente.

    As linhas strxfrm_multiply e mbmaxlen serão explicadas nas próximas seções. Só as inclua se você precisar de funções de ordenação de strings ou das funções de conjuntos de caracteres multi-byte, respectivamente.

  5. Você deve então criar algumas das seguintes funções:
    • my_strncoll_MYSET()
    • my_strcoll_MYSET()
    • my_strxfrm_MYSET()
    • my_like_range_MYSET()

    See "Suporte à Ordenação de Strings".

  6. Adicione o nome do conjunto de caracteres às listas CHARSETS_AVAILABLE e COMPILED_CHARSETS no configure.in.
  7. Reconfigure, recompile e teste.

O arquivo sql/share/charsets/README fornece algumas instruções a mais.

Se você desejar ter o seu conjunto de caracteres incluído na distribuição MySQL, envie um email com um patch para a lista de email internals do MariaDB. Leia "As Listas de Discussão do MariaDB".

Retornar