MySQL/InnoDB-4.0.13, 20 de Maio de 2003
O InnoDB agora suporta ALTER TABLE DROP FOREIGN KEY. Você deve usar SHOW CREATE TABLE para ver a ID de chaves estrangeiras geradas internamente quando quiser apagar uma chave estrangeira.
SHOW INNODB STATUSagora esxibe informações detalhadas do último erro deFOREIGN KEYeUNIQUE KEYdetectados. Se você não entender porque oInnoDBretorna o erro 150 de umCREATE TABLE, você pode utilizar isto para estudar a razão.ANALYZE TABLEagora também funciona para tabelas do tipoInnoDB. Ela faz 10 inserções aleatórias para cada das árvores de índices e atualiza a estimativa da cardinalidade do índice adequadamente. Note que como isto é apenas uma estimativa, repetidas execuções deANALYZE TABLEpodem produzir diferentes números. O MariaDB usa a estimativa de cardinalidade do índice apenas an otimização de joins. Se alguma join não é otimizada de modo apropriado, você pode tentar usarANALYZE TABLE.- A capacidade de commit de grupo do
InnoDBagora também funciona quando o log binário do MariaDB está habilitado. Deve haver mais de 2 threads cliente para commit de grupo estar ativo. - Alterado o valor padrão de
innodb_flush_log_at_trx_commitde 0 para 1. Se você não tiver especificado-o explicitamente em seumy.cnf, e sua aplicação executar muito mais lentamente nesta nova distribuição é porque o valor 1 faz com que seja descarregado um log para disco a cada commit de transações. - Adicionado uma nova variável global configurável de sistema do MariaDB (
innodb_max_dirty_pages_pct). Ela é um interio na faixa de 0 - 100. O padrão é 90. A thread principal noInnoDBtenta descarregar as páginas da área de buffer já que grande parte deste percetual ainda não foi descarregado em nenhum momento. - Se
innodb_force_recovery=6, não deixar oInnoDBfazer reparação de páginas corrompidas baseadas no buffer de dupla escrita. - O
InnoDBagora inica mais rápido porque ele não define a memória na área de buffer para zero. - Corrigido um erro: a definição
FOREIGN KEYdoInnoDBera confudida com as palavras chaves 'foreign key' dentro dos comentários do MariaDB. - Corrigido um ero: se você apagasse um tablea para qual havia uma referência de chave estrangeira, e posteriormente criasse a mesma tabela com tipo de colunas não correspondentes, o
InnoDBpodia entrar em dict0load.c, na funçãodict_load_table. - Corrigido um erro:
GROUP BYeDISTINCTpodia tratar valoresNULLcomo diferentes. O MariaDB também falahva ao fazer o lock da próxima chave no caso de uma faixa de índice vazia. - Corrigido um erro: não faz COMMIT da transação atual quando uma tabela MyISAM é atualizada; isto também faz com que
CREATE TABLEnão faça commit de uma transaçãoInnoDB, mesmo quando o log binário estiver habilitado. - Corrigido um erro: não permite que
ON DELETE SET NULLmodifique a mesma tabela onde o delete foi feito; podemos permití-lo porqeu into não pode produzir loops infinitos em operações em cascata. - Corrigido um erro: permitir
HANDLER PREVeNEXTtambém depois de posicionar o cursor com uma busca única na chave primária - Corrigido um erro: se
MIN()ouMAX()resultasse em um deadlock ou em esgotamento do tempo de espera do lock, o MariaDB não retornava um erro, masNULLcomo o valor da função. - Corrigido um erro: o
InnoDBesquecia de chamarpthread_mutex_destroy()quando uma tabela era apagada. Isto podia causar perda de memória no FreeBSD e outros Unix, exceto o Linux.