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
tis620devem ser corrigidos commyisamchk -rouREPAIR TABLE. - Se você fizer um
DROP DATABASEem 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 oconfigurenão detecta a disponibilidade da chamada de sistemareadlink). OPTIMIZE TABLEagora funciona somente para tabelas MyISAM. Para outros tipos de tabelas, você pode usarALTER TABLEpara otimizar a tabela. Durante oOPTIMIZE TABLEa 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_INCREMENTnã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_INCREMENTtambém;CHECK TABLEirá 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 tabelasMyISAMe é muito mais rápido que antes. Para tabelasMyISAMnú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,THENeWHENagora 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
TIMEagora deve estar em um dos seguintes formatos:[[[DAYS] [H]H:]MM:]SS[.fraction]ou[[[[[H]H]H]H]MM]SS[.fraction] LIKEagora 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.REGEXPagora é caso insensitivo se nenhuma das strings forem binárias.- Quando for necessário dar manutenção ou reparar tabelas
MyISAM.MYIdeve ser usado a instruçãoCHECK TABLEou o comandomyisamchk. Para tabelas ISAM (.ISM), use o comandoisamchk - Se desejar que os arquivos
mysqldumpsejam compatíveis entre as versões 3.22 e 3.23 do MariaDB, não deve ser usados as opções--optou--fullcom 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_FIELDno 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 BYouORDER BYpara 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
ANDouORcom valoresNULLagora retornamNULLno lugar de 0. Isto afetará, em grande parte, pesquisas que usamNOTem uma expressãoAND/ORcomoNOT NULL=NULL. LPAD()eRPAD()reduzirão a string resultante se ela for maior que o tamanho do argumento.