:: DEVELOPER ZONE
Funcionalidades adicionadas ou alteradas:
InnoDB agora suporta indexação pelo prefixo de um campo. Isto significa,
em particularm que as colunas BLOB e TEXT pode ser indexadas em
tabelas InnoDB, o que não era possível antes.
Uma alteração de documentação: Função INTERVAL(NULL, ...) retorna -1.
Habilitado o INSERT do SELECT quando a tabela na qual os registros
são inseridos também é uma tabela listada no SELECT.
Permite CREATE TABLE e INSERT de qualquer UNION.
A opção SQL_CALC_FOUND_ROWS agora sempre retorna o número total de
rgistro de qulquer UNION.
Removida a opção --table de mysqlbinlog para evitar repetir a
funcionalidade mysqldump.
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 JOIN para 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). See Secção 4.11.9, “FAQ da Replicação”.
Uma alteração de documentação: adicionado avisos sobre uso seguro do
comando CHANGE MASTER. See Secção 4.11.8.1, “CHANGE MASTER TO”.
O MySQL 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 MySQL 4.1.
Adicionada a opção --nice para mysqld_safe para permitir
configurar a exatidão do processo mysqld. (Obrigado a Christian
Hammers por fornecer o patch inicial.) (Bug #627)
Adicionada a opção --read-only para que o mysqld não permita
atualizações, exceto da thread escrava ou de usuários com o privilégio
SUPER. (Pacth original de Markus Benning).
SHOW BINLOG EVENTS FROM x onde x é menor que 4, agora
converte silenciosamente x para 4 em vez de exibir um erro. A mesma
alteração foi feita para CHANGE MASTER TO MASTER_LOG_POS=x e
CHANGE MASTER TO RELAY_LOG_POS=x.
mysqld agora só adiciona um tratamento de interrupção para o sinal
SIGINT se você começá-lo com a nova opção --gdb. Isto é porque
alguns usuários MySQL encontraram alguns problemas estranhos quando acidentalmente
enviavam SIGINT para a threads mysqld.
RESET SLAVE agora limpa os campos Last_Errno e Last_Error
na saída de SHOW SLAVE STATUS.
Adicionada a variável max_relay_log_size; o relay log será rotacionado
automaticamente quando seu tamanho exceder max_relay_log_size. Mas se
max_relay_log_size for 0 (o padrão), max_binlog_size será usado
(como em versões mais antigas). max_binlog_size ainda se aplica a logs
binários em qualquer caso de uso.
FLUSH LOGS agora 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_de foi
reescrita. O algoritmo antigo não podia tratar casos como "sä" > "ßa".
See Secção 4.7.1.1, “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 tabela MERGE agora é permitida
mesmo que alguma tabela MyISAM seja 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 REPAIR em uma tabela com uma
chave auto incremento multi-partes onde uma parte era um pacote CHAR.
Corrigida uma provável condição de corrida no código da replicação que
podia levar potencialmente a instruções INSERT não sendo replicadas
no evento de um comando FLUSH LOGS ou quando o log binário excede
max_binlog_size. (Bug #791)
Corrigido um bug que pode levar a falha em INTERVAL e GROUP BY ou
DISTINCT. (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 mysqlhotcopy que falhava ao ler opções do arquivo
de opção. (Bug #808)
Corrigido um bug no otimizador que algumas vezes prevenia o MySQL de usar
índices FULLTEXT mesmo se fosse possível (por exemplo, em SELECT * FROM t1 WHERE MATCH a,b AGAINST("index") > 0).
Corrigido um bug com ``table is full'' em operações UNION.
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 TABLES e 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.
HANDLER sem um índice agora funciona apropriadamente quando uma
tabela tem registros deletados. (Bug #787)
Corrigido um erro com LOAD DATA em mysqlbinlog. (Bug #670)
Correção: SET CHARACTER SET DEFAULT fucniona. (Bug #462)
Corrigido o comportamento de tabelas MERGE em consultas
ORDER BY ... DESC. (Bug #515)
Corrigida a falha do servidor em PURGE MASTER LOGS ou SHOW MASTER LOGS quando 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 DATETIME e uma constante
inteira. (Bug #504)
Corrigido o modo remoto de mysqlbinlog. (Bug #672)
Corrigido ERROR 1105: Unknown error que ocorria para algumas consultas
SELECT, onde uma coluna declarada como NOT NULL era comparada
com uma expressão que podia tomar o valor NULL.
Alterado o timeout em mysql_real_connect() para usar poll() em
vez de select() para contornar problemas cmo muitos outros arquivos
abertos no cliente.
Corrigido resultados incorretos de MATCH ... AGAINST usado com uma
consulta LEFT JOIN.
Corrigido um bug que limitava o valor máximo para variáveis mysqld
em 4294967295 quando eles eram especificados na linha de comando.
Corrigido um bug que algumas vezes causavam falsos erros de ``Access
denied'' nas instruções HANDLER ... READ, quando uma tabela é
referenciada via um alias.
Corrigido um problema de portabilidade com safe_malloc, o qual
fazia com que o MySQL para enviar erros de "Freeing wrong aligned pointer"
no SCO 3.2.
ALTER TABLE ... ENABLE/DISABLE KEYS podia causar um core dump quando
feito depois de uma instrução INSERT DELAYED na mesma tabela.
Corrigido um problema com conversão da hora local para GMT onde algumas vezes resultava em diferentes (mas corretos) timestamps. Agora o MySQL deve usar o menor valor de possível neste caso. (Bug #316)
Uma cache de consultas muito pequena podia fazer o mysqld falhar. (Bug #549)
Corrigido um bug (acidentalemnte introduzida por nós mas presente apenas
na versão 4.0.13) que faz INSERT ... SELECT em uma coluna
AUTO_INCREMENT que não replica bem. Este bug está no master, não no
slave. (Bug #490)
Corrigido um bug: Quando uma instrução INSERT ... SELECT inseria linhas
em uma tabela não transacional, mas falhava no mesmo ponto (por exemplo, devido
a erros de ``Duplicate 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ção slave-skip-errors para como tratar
consultas completadas parcialmente no slave, veja Secção 4.11.6, “Opções de Inicialização da Replicação”.
(Bug #491)
SET FOREIGN_KEY_CHECKS=0 não era replicado apropriadamente.
A correção provavelmente não será feita para 3.23.
Em um slave, LOAD DATA INFILE sem cláusulas IGNORE ou
REPLACE no master, era replicada com IGNORE. Enquanto isto
não for um problemase os dados do master e slave são identicos (em
LOAD que 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 o IGNORE. 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 INFILE exibia 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_POS podia causar um falha de declaração da depuração. (Bug #576)
Ao fazer um LOCK TABLES WRITE em uma tabela InnoDB, o commit podia
não acontecer, se a consulta não era escrita no log binário (por exemplo, se
--log-bin não era usado, ou binlog-ignore-db era 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 TABLE em 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 servidor mysqld slave 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() retorna NULL imediatamente (``slave
stopped''). (Bug #651)
Depois de RESET SLAVE; START SLAVE;, o valor de Relay_Log_Space
exibido por SHOW SLAVE STATUS era muito grande para 4 bytes. (Bug #763)
Se uma consulta era ignorada no slave (devido a replicate-ignore-table
e 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)
© 1995-2005 MySQL AB. All rights reserved.
