Alterações na distribuição 4.0.14 (18 Jul 2003)
Funcionalidades adicionadas ou alteradas:
InnoDB
agora suporta indexação pelo prefixo de um campo. Isto significa, em particularm que as colunasBLOB
eTEXT
pode 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
INSERT
doSELECT
quando a tabela na qual os registros são inseridos também é uma tabela listada noSELECT
. - Permite
CREATE TABLE
eINSERT
de qualquerUNION
. - A opção
SQL_CALC_FOUND_ROWS
agora sempre retorna o número total de rgistro de qulquerUNION
. - Removida a opção
--table
demysqlbinlog
para 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 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). 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
--nice
paramysqld_safe
para permitir configurar a exatidão do processomysqld
. (Obrigado a Christian Hammers por fornecer o patch inicial.) (Bug#627) - Adicionada a opção
--read-only
para que omysqld
nã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 x
ondex
é menor que 4, agora converte silenciosamentex
para 4 em vez de exibir um erro. A mesma alteração foi feita paraCHANGE MASTER TO MASTER_LOG_POS=x
eCHANGE MASTER TO RELAY_LOG_POS=x
.mysqld
agora só adiciona um tratamento de interrupção para o sinalSIGINT
se você começá-lo com a nova opção--gdb
. Isto é porque alguns usuários MariaDB encontraram alguns problemas estranhos quando acidentalmente enviavamSIGINT
para a threadsmysqld
.RESET SLAVE
agora limpa os camposLast_Errno
eLast_Error
na 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_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'
. 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 tabelaMERGE
agora é permitida mesmo que alguma tabelaMyISAM
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 pacoteCHAR
. - 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 comandoFLUSH LOGS
ou quando o log binário excedemax_binlog_size
. (Bug#791) - Corrigido um bug que pode levar a falha em
INTERVAL
eGROUP BY
ouDISTINCT
. (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 MariaDB de usar índices
FULLTEXT
mesmo 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 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
emmysqlbinlog
. (Bug#670) - Correção:
SET CHARACTER SET DEFAULT
fucniona. (Bug#462) - Corrigido o comportamento de tabelas
MERGE
em consultasORDER BY ... DESC
. (Bug#515) - Corrigida a falha do servidor em
PURGE MASTER LOGS
ouSHOW 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 consultasSELECT
, onde uma coluna declarada comoNOT NULL
era 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 ... AGAINST
usado com uma consultaLEFT 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çõ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 KEYS
podia causar um core dump quando feito depois de uma instruçãoINSERT 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 MariaDB 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 colunaAUTO_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 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-errors
para como tratar consultas completadas parcialmente no slave, veja "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áusulasIGNORE
ouREPLACE
no master, era replicada comIGNORE
. Enquanto isto não for um problemase os dados do master e slave são identicos (emLOAD
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 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 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 tabelaInnoDB
, 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, oubinlog-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 servidormysqld
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()
retornaNULL
imediatamente (slave stopped
). (Bug#651) - Depois de
RESET SLAVE; START SLAVE;
, o valor deRelay_Log_Space
exibido porSHOW 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)