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.