Alterações na distribuição 4.0.14 (18 Jul 2003)
Funcionalidades adicionadas ou alteradas:
InnoDBagora suporta indexação pelo prefixo de um campo. Isto significa, em particularm que as colunasBLOBeTEXTpode ser indexadas em tabelasInnoDB, o que não era possível antes.- Uma alteração de documentação: Função
INTERVAL(NULL, ...)retorna-1. - Habilitado o
INSERTdoSELECTquando a tabela na qual os registros são inseridos também é uma tabela listada noSELECT. - Permite
CREATE TABLEeINSERTde qualquerUNION. - A opção
SQL_CALC_FOUND_ROWSagora sempre retorna o número total de rgistro de qulquerUNION. - Removida a opção
--tabledemysqlbinlogpara evitar repetir a funcionalidademysqldump. - Alterado levemente o otimizador para preferir busca de índice sobre busca em toda a tabela em alguns casos limites.
- Adicionado uma variável especifica da thread,
max_seeks_for_key, que pode ser usada para forçar a otimização para usar chaves em vez de varrer a tabela, mesmo se a cardinalidade do índice for baixa. - Adicionada a otimização que converte
LEFT JOINpara joins normais em alguns casos. - Uma alteração da documentação: adicionado um parágrafo sobre falhas em replicação (como usar um slave sobrevivente como um novo master, como resumir a configuração original). Leia "FAQ da Replicação".
- Uma alteração de documentação: adicionado avisos sobre uso seguro do comando
CHANGE MASTER. Leia "CHANGE MASTER TO". - O MariaDB agora envia um aviso (e não um erro, como na versão 4.0.13) quando ele abre uma tabela que foi criada com o MariaDB 4.1.
- Adicionada a opção
--niceparamysqld_safepara permitir configurar a exatidão do processomysqld. (Obrigado a Christian Hammers por fornecer o patch inicial.) (Bug#627) - Adicionada a opção
--read-onlypara que omysqldnão permita atualizações, exceto da thread escrava ou de usuários com o privilégioSUPER. (Pacth original de Markus Benning). SHOW BINLOG EVENTS FROM xondexé menor que 4, agora converte silenciosamentexpara 4 em vez de exibir um erro. A mesma alteração foi feita paraCHANGE MASTER TO MASTER_LOG_POS=xeCHANGE MASTER TO RELAY_LOG_POS=x.mysqldagora só adiciona um tratamento de interrupção para o sinalSIGINTse você começá-lo com a nova opção--gdb. Isto é porque alguns usuários MariaDB encontraram alguns problemas estranhos quando acidentalmente enviavamSIGINTpara a threadsmysqld.RESET SLAVEagora limpa os camposLast_ErrnoeLast_Errorna saída deSHOW SLAVE STATUS.- Adicionada a variável
max_relay_log_size; o relay log será rotacionado automaticamente quando seu tamanho excedermax_relay_log_size. Mas semax_relay_log_sizefor 0 (o padrão),max_binlog_sizeserá usado (como em versões mais antigas).max_binlog_sizeainda se aplica a logs binários em qualquer caso de uso. FLUSH LOGSagora rotaciona os relay logs em adição aos outros tipos de logs que ele já rotacionava.
Bugs corrigidos:
- Comparação/ordenação para o conjunto de caracteres
latin1_defoi reescrita. O algoritmo antigo não podia tratar casos como'sä' > 'ßa'. Leia "German character set". Em casos raros ela resultava em tabela corrompida. - Corrigido um problema com a prompt de senha no Windows. (Bug#683)
ALTER TABLE ... UNION=(...)para uma tabelaMERGEagora é permitida mesmo que alguma tabelaMyISAMseja somente leitura. (Bug#702)- Corrigido um problema com
CREATE TABLE t1 SELECT x'41'. (Bug#801) - Removido alguns avisos de lock incorretos do log de erro.
- Corrigida um estouro de memória ao se fazer
REPAIRem uma tabela com uma chave auto incremento multi-partes onde uma parte era um pacoteCHAR. - Corrigida uma provável condição de corrida no código da replicação que podia levar potencialmente a instruções
INSERTnão sendo replicadas no evento de um comandoFLUSH LOGSou quando o log binário excedemax_binlog_size. (Bug#791) - Corrigido um bug que pode levar a falha em
INTERVALeGROUP BYouDISTINCT. (Bug#807) - Corrigido um bug no
mysqlhotcopy, assim ele agora aborta em operações de cópia de tabelas sem sucesso. Corrigido outro bug, assim ele obtem sucesso quando houver milhares de tabelas para copiar. (Bug#812) - Corrigido o problema com
mysqlhotcopyque falhava ao ler opções do arquivo de opção. (Bug#808) - Corrigido um bug no otimizador que algumas vezes prevenia o MariaDB de usar índices
FULLTEXTmesmo se fosse possível (por exemplo, emSELECT * FROM t1 WHERE MATCH a,b AGAINST('index') > 0). - Corrigido um bug com
table is full
em operaçõesUNION. - Corrigido um problema de segurança no qual usuários habilitados sem privilégios obtinham informações na lista de banco de dados existentes usando
SHOW TABLESe comandos parecidos. - Corrigido um problema de pilha no UnixWare/OpenUnix.
- Corrigido um problema de configuração UnixWare/OpenUNIX e OpenServer.
- Corrigido um problema de pilha cheia na verificação da senha.
- Corrigido um problema com
max_user_connections. HANDLERsem um índice agora funciona apropriadamente quando uma tabela tem registros deletados. (Bug#787)- Corrigido um erro com
LOAD DATAemmysqlbinlog. (Bug#670) - Correção:
SET CHARACTER SET DEFAULTfucniona. (Bug#462) - Corrigido o comportamento de tabelas
MERGEem consultasORDER BY ... DESC. (Bug#515) - Corrigida a falha do servidor em
PURGE MASTER LOGSouSHOW MASTER LOGSquando o log binário estava desligado. (Bug#733) - Corrigido o problema de verificação de senha no Windows. (Bug#464)
- Corrigido um erro na comparação de uma coluna
DATETIMEe uma constante inteira. (Bug#504) - Corrigido o modo remoto de
mysqlbinlog. (Bug#672) - Corrigido
ERROR 1105: Unknown errorque ocorria para algumas consultasSELECT, onde uma coluna declarada comoNOT NULLera comparada com uma expressão que podia tomar o valorNULL. - Alterado o timeout em
mysql_real_connect()para usarpoll()em vez deselect()para contornar problemas cmo muitos outros arquivos abertos no cliente. - Corrigido resultados incorretos de
MATCH ... AGAINSTusado com uma consultaLEFT JOIN. - Corrigido um bug que limitava o valor máximo para variáveis
mysqldem 4294967295 quando eles eram especificados na linha de comando. - Corrigido um bug que algumas vezes causavam falsos erros de
Access denied
nas instruçõesHANDLER ... READ, quando uma tabela é referenciada via um alias. - Corrigido um problema de portabilidade com
safe_malloc, o qual fazia com que o MariaDB para enviar erros de 'Freeing wrong aligned pointer' no SCO 3.2. ALTER TABLE ... ENABLE/DISABLE KEYSpodia causar um core dump quando feito depois de uma instruçãoINSERT DELAYEDna mesma tabela.- Corrigido um problema com conversão da hora local para GMT onde algumas vezes resultava em diferentes (mas corretos) timestamps. Agora o MariaDB deve usar o menor valor de possível neste caso. (Bug#316)
- Uma cache de consultas muito pequena podia fazer o
mysqldfalhar. (Bug#549) - Corrigido um bug (acidentalemnte introduzida por nós mas presente apenas na versão 4.0.13) que faz
INSERT ... SELECTem uma colunaAUTO_INCREMENTque não replica bem. Este bug está no master, não no slave. (Bug#490) - Corrigido um bug: Quando uma instrução
INSERT ... SELECTinseria linhas em uma tabela não transacional, mas falhava no mesmo ponto (por exemplo, devido a erros deDuplicate key
), a consulta não era escrita no log binário. Agora ela é escrita no log binário, com seus códigos de erros, como todas as outras cosultas são. Sobre a opçãoslave-skip-errorspara como tratar consultas completadas parcialmente no slave, veja "Opções de Inicialização da Replicação". (Bug#491) SET FOREIGN_KEY_CHECKS=0não era replicado apropriadamente. A correção provavelmente não será feita para 3.23.- Em um slave,
LOAD DATA INFILEsem cláusulasIGNOREouREPLACEno master, era replicada comIGNORE. Enquanto isto não for um problemase os dados do master e slave são identicos (emLOADque não produz conflitos de duplicação no master não produzirá nada no slave de qualquer forma), o que é verdade em operações normais, para depuração é melhor não adicionar silenciosamente oIGNORE. Deste modo, você pode obter uma mensagem de erro no slave e descobrir que por alguma razão, os dados no master e slave são diferentes e investigar o porque. (Bug#571) - Em um slave,
LOAD DATA INFILEexibia uma mensagem incomplete ``Duplicate entry '%-.64s' for key %d''' (o nome e valor da chave não eram mencionados) no caso de conflito de duplicação (o que não acontece em operações normais). (Bug#573) - Quando usado um slave compilado com
--debug,CHANGE MASTER TO RELAY_LOG_POSpodia causar um falha de declaração da depuração. (Bug#576) - Ao fazer um
LOCK TABLES WRITEem uma tabelaInnoDB, o commit podia não acontecer, se a consulta não era escrita no log binário (por exemplo, se--log-binnão era usado, oubinlog-ignore-dbera usado). (Bug#578) - Se um master na versão 3.23 tivesse aberto tabelas temporárias que tinham sido replicadas para um slave na versão 4.0, e o log binário rotacionado, estas tabelas temporárias eram automaticamente removidas pelo slave (o que causa problemas se o master os utiliza subsequecialmente). Este erro foi corrigido na versão 4.0.13, mas de um modo que cria um incoveniência indesejada: se o master na versão 3.23 morrer brutalmente. (queda de força), sem tempo suficiente para escrever automaticamente instruções
DROP TABLEem seu log binário. então o slave na versão 4.0.13 não notificaria que as tabelas temporárias tinham sido removidas, até o servidormysqldslave ter sido reiniciado. Este pequeno incoveniente está corrigido na versão 3.23.57 e 4.0.14 (significando que o master deve ser atualizado para a versão 3.23.57 e o slave para a 4.0.14 para remover o incoveniente). (Bug#254) - Se
MASTER_POS_WAIT()estava espereando e o slave estava inativo, e thread slave de SQL terminada,MASTER_POS_WAIT()esperaria para sempre. Agora quando a thread slave de SQL termina,MASTER_POS_WAIT()retornaNULLimediatamente (slave stopped
). (Bug#651) - Depois de
RESET SLAVE; START SLAVE;, o valor deRelay_Log_Spaceexibido porSHOW SLAVE STATUSera muito grande para 4 bytes. (Bug#763) - Se uma consulta era ignorada no slave (devido a
replicate-ignore-tablee outras regras similares), o escravo ainda verifica se a consulta consegue o mesmo código de erro (0, sem erro) como no master. Assim se o master tiver um erro na consulta (por exemplo,Duplicate entry
em uma inserção de múltiplas linhas), então o slave parava e avisava que código de erro não coincidia. (Bug#797)