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:
- Adicione MYSET para o final do arquivo
sql/share/charsets/Index
Associe um número único ao mesmo. - Crie o arquivo
sql/share/charsets/MYSET.conf
. (O arquivosql/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 vetoresto_lower
,to_upper
esort_order
obtêm, cada um, as 256 palavras seguintes.
- Adicione o nome do conjunto de caracteres às listas
CHARSETS_AVAILABLE
eCOMPILED_CHARSETS
noconfigure.in
. - Reconfigure, recompile e teste.
Para um conjunto de caracteres complexo faça o seguinte:
- Crie o arquivo
strings/ctype-MYSET.c
na distribuição fonte do MYSQL. - Adicione MYSET ao final do arquivo
sql/share/charsets/Index
. Associe um número único a ele. - Procure por um dos arquivos
ctype-*.c
existentes para ver o que precisa ser definido, por exemplostrings/ctype-big5.c
. Perceba que os vetores no seu arquivo deve ter nomes comoctype_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. - 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.
- Você deve então criar algumas das seguintes funções:
my_strncoll_MYSET()
my_strcoll_MYSET()
my_strxfrm_MYSET()
my_like_range_MYSET()
- Adicione o nome do conjunto de caracteres às listas
CHARSETS_AVAILABLE
eCOMPILED_CHARSETS
noconfigure.in
. - 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".