Atualizando da versão 3.22 para 3.23
A Versão 3.23 do MariaDB suporta tabelas do novo tipo MyISAM
e do antigo tipo ISAM
. Você não necessita converter suas antigas tabelas para usá-las com a versão 3.23. Por padrão, todas novas tabelas serão criadas usando o tipo MyISAM
(a menos que você inicie o mysqld
com a opção --default-table-type=isam
). Você pode converterr uma tabela ISAM
para uma formato MyISAM
com ALTER TABLE nome_tabela TYPE=MyISAM
ou com o script Perl mysql_convert_table_format
.
Os clientes versões 3.22 e 3.21 irão trabalhar sem quaisquer problemas com um servidor versão 3.23.
As seguintes listas dizem o que você deve conferir quando atualizar para a versão 3.23:
- Todas tabelas que usam o conjunto de caracteres
tis620
devem ser corrigidos commyisamchk -r
ouREPAIR TABLE
. - Se você fizer um
DROP DATABASE
em um banco de dados ligado simbolicamente, a ligação e o banco de dados original serão apagados. (Isto não acontece na 3.22 porque oconfigure
não detecta a disponibilidade da chamada de sistemareadlink
). OPTIMIZE TABLE
agora funciona somente para tabelas MyISAM. Para outros tipos de tabelas, você pode usarALTER TABLE
para otimizar a tabela. Durante oOPTIMIZE TABLE
a tabela é, agora, bloqueada para prevenir que seja usada por outras threads.- O cliente MariaDB
MariaDB
é, agora, inicializado por padrão com a opção--no-named-commands (-g)
. Esta opção pode ser desabilitada com--enable-named-commands (-G)
. Isto pode causar problemas de imcompatibilidade em alguns casos, por exemplo, em scripts SQL que usam comandos sem ponto e vírgula! Comandos longos continuam funcionando. - Funções de data que funcionam em partes de datas (como
MONTH()
) não retornará 0 para datas0000-00-00
. (No MariaDB 3.22 estas funções retornamNULL
.) - Se você estiver usando a ordem de classificação de caracteres
alemã
para tabelasISAM
, você deve reparar todas suas tabelas comisamchk -r
, porque foram feitas alterações na sua ordem de classificação! - O tipo padrão de retorno de
IF()
irá agora depender de ambos argumentos e não apenas do primeiro argumento. - Colunas
AUTO_INCREMENT
não devem ser usadas para armazenar números negativos. A razão para isto é que números negativos causam problemas quando o -1 passa para 0. Você não deve armazenar 0 em uma colunaAUTO_INCREMENT
também;CHECK TABLE
irá reclamar sobre valores 0 porque eles podem alterar se você fizer um dump e restaurar a tabela.AUTO_INCREMENT
é, agora, tratado em um nível mais baixo para tabelasMyISAM
e é muito mais rápido que antes. Para tabelasMyISAM
números antigos também não são mais reusados, mesmo se você apagar algumas linhas da tabela. CASE
,DELAYED
,ELSE
,END
,FULLTEXT
,INNER
,RIGHT
,THEN
eWHEN
agora são palavras reservadas.FLOAT(X)
agora é um tipo de ponto flutuante verdadeiro e não um valor com um número fixo de decimais.- Quando estiver declarando colunas usando o tipo
DECIMAL(tamanho,dec
, o argumento tamanho não inclui mais um lugar para o símbolo do ponto decimal. - Uma string
TIME
agora deve estar em um dos seguintes formatos:[[[DAYS] [H]H:]MM:]SS[.fraction]
ou[[[[[H]H]H]H]MM]SS[.fraction]
LIKE
agora compara strings usando as mesmas regras de comparação de caracteres que o operador'='
. Se você precisa do antigo compartamento, você pdoe compilar o MariaDB com a opçãoCXXFLGAS=-DLIKE_CMP_TOUPPER
.REGEXP
agora é caso insensitivo se nenhuma das strings forem binárias.- Quando for necessário dar manutenção ou reparar tabelas
MyISAM
.MYI
deve ser usado a instruçãoCHECK TABLE
ou o comandomyisamchk
. Para tabelas ISAM (.ISM
), use o comandoisamchk
- Se desejar que os arquivos
mysqldump
sejam compatíveis entre as versões 3.22 e 3.23 do MariaDB, não deve ser usados as opções--opt
ou--full
com omysqldump
. - Confira todas suas chamadas à
DATE_FORMAT()
para ter certeza que exista um '%
' antes de cada caractere formatador. (Versões mais antigas que o MariaDB 3.22 aceitaivam esta sintaxe.) mysql_fetch_fields_direct()
agora é uma função (era uma macro) e ela retorna um ponteiro para umMYSQL_FIELD
no lugar de umMYSQL_FIELD
.mysql_num_fields()
não pode mais ser usada em um objetoMYSQL*
(agora é uma função que obtem valoresMYSQL_RES*
como um argumento). Com um objetoMYSQL*
agora voce deve usarmysql_field_count()
.- No MariaDB Versão 3.22, a saída de
SELECT DISTINCT ...
era na maioria das vezes ordenada. Na Versão 3.23, você deve usarGROUP BY
ouORDER BY
para obter a saída ordenada. SUM()
agora retornaNULL
, em vez de 0 se não existir registros coincidentes. Isto é de acordo com o ANSI SQL.- Um
AND
ouOR
com valoresNULL
agora retornamNULL
no lugar de 0. Isto afetará, em grande parte, pesquisas que usamNOT
em uma expressãoAND/OR
comoNOT NULL
=NULL
. LPAD()
eRPAD()
reduzirão a string resultante se ela for maior que o tamanho do argumento.