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)
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
