Alterações na distribuição 4.0.15 (03 Sep 2003)
IMPORTANT:
If you are using this release on Windows, you should upgrade at least your clients (any program that uses libmysql.lib
) to 4.0.16 or above. This is because the 4.0.15 release had a bug in the Windows client library that causes Windows clients using the library to die with a Lost connection to MariaDB server during query
error for queries that take more than 30 seconds. This problem is specific to Windows; clients on other platforms are unaffected.
Funcionalidades adicionadas ou alteradas:
- O
mysqldump
agora coloca todos os identificadores corretamente entre aspas ao conectar com o servidor. Isto assegura que durante o processo de dump, Omysqldump
nunca enviará consultas ao servidor que resultam em um erro de sintaxe. Este problema não está relacionado a saída do programamysqldump
, que não foi alterado. (Bug#1148) - Altera a informação de metadados do resultado e assim
MIN()
eMAX()
informamm que eles podem retornarNULL
(isto é verdade porque um conjunto vazio retornaráNULL
). (Bug#324) - Produz uma mensagem de erro no Windows se um segundo servidor
mysqld
é iniciado na mesma porta TCP/IP que um servidormysqld
já em execução. - As variveis do servidor
mysqld
wait_timeout
,net_read_timeout
enet_write_timeout
agora funcionam no Windows. Agora pode-se também definir o tempo limite de leitura e escrita em clientes Windows com a opçãomysql_options()
- Adicionada a opção
--sql-mode=NO_DIR_IN_CREATE
para tornar possível para os slaves ignorarem as opçõesINDEX DIRECTORY
eDATA DIRECTORY
dadas paraCREATE TABLE
. Quando ele está ligado,SHOW CREATE TABLE
não exibirá os diretórios dados. SHOW CREATE TABLE
agora exibe as opçõesINDEX DIRECTORY
eDATA DIRECTORY
, se eles fossem especificados quando a tabela era criada.- A variável do servidor
open_files_limit
agora exibe o limite de arquivos abertos real. MATCH ... AGAINST()
em modo de linguagem natural agora tratam de palavra presentes em mais de 2,000,000 linhas como stopwords.- As imagens do disco de instalação do Mac OS X agora incluem um pacote
MySQLStartupItem.pkg
adicional que habilita a inicialização automática do MariaDB no boot do sistema. Leia "Instalando o MariaDB no Mac OS X". - A maioria da documentação incluída na distribuição tar do binário (
.tar.gz
) foi movida para o subdiretóriodocs
. Leia "Layouts de Instalação". - O manual agora está incluído com um arquivo
info
tradicional na distribuição binária. (Bug#1019) - A distribuição binária agora incluem a biblioteca do servidor embutido (
libmysqld
) por padrão. Devido a problemas de ligação com compiladores diferentes do gcc, ele não estava incluído em todos os pacotes da distribuição inicial da versão 4.0.15. Os pacotes afetados forma reconstruidos e distribuidos como 4.0.15a. Leia "Servidor Embutido MySQL". - O MariaDB agora pode usar o otimizador de faixa para
BETWEEN
com limites não constantes. (Bug#991) - Mensagens de erro de replicação agora incluem o banco de dados padrão, assim os usuários podem verificar em qual banco de dados a consulta com erro está rodando.
- Uma alteração da documentação: Adicionado um parágrafo sobre como as opções
binlog-do-db
ebinlog-ignore-db
são testadas em um banco de dados no master (see "O Log Binário"), e um parágrafo sobre comoreplicate-do-db
,replicate-do-table
e opções análogas são testadas em bancos de dados e tabelas no slave (see "Opções de Inicialização da Replicação"). - Agora o slave não replica
SET PASSWORD
se estiver configurado para excluir o banco de dadosMariaDB
da replicação (usando, por exemplo,replicate-wild-ignore-table=mysql.%
). Este já era o caso paraGRANT
eREVOKE
desde a versão 4.0.13 (embora houvesse o Bug#980 nas versões 4.0.13 & 4.0.14, que foi corrigido na versão 4.0.15). - Rewrote the information shown in the
State
column ofSHOW PROCESSLIST
for replication threads and forMASTER_POS_WAIT()
and added the most common states for these threads to the documentation, see "Detalhes de Implementação da Replicação". - Adiciona um teste na replicação para detectar o caso no qual o master morre no meio da gravação de uma transação no log binário; tal transação inacabada agora dispara uma mensagem de erro no slave.
- Um comando
GRANT
que cria um usuário anônimo (isto é, uma conta com nome de usuário vazio) não exige maisFLUSH PRIVILEGES
para a conta ser conhecida no servidor. (Bug#473) CHANGE MASTER
agora descarrega orelay-log.info
. Anteriormente isto era feito na próxima execução deSTART SLAVE
, assim se omysqld
fosse desligado no slave depois deCHANGE MASTER
sem executarSTART SLAVE
, o nome e posição do relay log eram perdidos. Na reinicialização eles eram carregados a partir dorelay-log.info
, revertendo-os para seus valores antigos (incorretos) de antes doCHANGE MASTER
, exibindo mensagens de erro (já que o relay log antigo não existia mais) e as threads slaves se recusavam a iniciar. (Bug#858)
Bugs corrigidos:
- Corrigido o overflow do buffer no tratamewnto de senhas, que podia potencialmente ser explorardo pelo usuário MariaDB com privilégios na tabela
mysql.user
para executar código aleatórios para obter acessi com o UID do processo mysqld (obrgado a Jedi/Sector One por detectar e reportar este erro.) - Corrigido um falha do servidor com
FORCE INDEX
em uma consulta contendo 'Range checked for each record' na saída doEXPLAIN
. (Bug#1172) - Corrigido o tratamento de permissão de tabelas/colunas - a ordenação apropriada (do mais específico para o menos específico, see "Controle de Acesso, Estágio 2: Verificação da Requisição") não era respeitada (Bug#928)
- Corrigido um bug raro no MYISAM introduzido na versão 4.0.3 onde o handler do arquivo de índice não era diretamente atualizado depois de um
UPDATE
de registros dinamicos separados. - Corrigido o erro
Can't unlock file
ao executarmyisamchk --sort-index
no Windows. (Bug#1119) - Corrigido um possível deadlock ao alterar
key_buffer_size
enquanto a cache de chaves era ativamente usada. (Bug#1088) - Corrigido um bug de overflow em
MyISAM
eISAM
quando um registro era atualiado na tabela com um grande número de colunas e pelo meno uma colunaBLOB/TEXT
. - Corrigido um resultado incorreto ao fazer
UNION
eLIMIT #,#
quando não era usado parenteses na parteSELECT
. - Corrigido um resultado incorreto ao fazer
UNION
eORDER BY .. LIMIT #
quando não usado parenteses na parteSELECT
. - Corrigido um problema com
SELECT SQL_CALC_FOUND_ROWS ... UNION ALL ... LIMIT #
ondeFOUND_ROWS()
retornava o número incorreto de linhas. - Corrigidos um erro de pilha indesejado quando tinhamos uma grande expressão do tipo
1+1-1+1-1...
de uma ceta combinação. (Bug#871) - Corrigido o erro que algumas vezes fazia uma tabela com um índice
FULLTEXT
estar marcada como 'analyzed'. - Corrigido o MariaDB para que o tamanho do campo (na API C) para a segunda coluna em
SHOW CREATE TABLE
seja sempre maior que o tamanho do dado. A única aplicação conhecida que era afetada pelo comportamento anterior era o Borland dbExpress, que truncava a saída do comando. (Bug#1064) - Corrigida a falha na comparação de strings usando o conjunto de caracteres
tis620
. (Bug#1116) - Corrigido um bug do
ISAM
na otimização deMAX()
. myisamchk --sort-records=N
não marca mais a tabela como danificada se a ordenação falhar devido a uma chave inapropriada. (Bug#892)- Corrigido um erro no tratamento de tabelas
MyISAM
compactadas que algumas vezes torna impossível se reparar tabelas compactadas no modo 'Repair by sort'. 'Repair with keycache' (myisamchk --safe-recover
) funcionad. (Bug#1015) - Correção de um erro na propagação do número da versão do manual incluído no arquivo de distribuição. (Bug#1020)
- Corrigida um problema de ordenacao da chave (uma chave primária -
PRIMARY
- declarada em uma coluna que não é explicitamente marcada comoNOT NULL
era ordenada depois de uma chaveUNIQUE
para uma colunaNOT NULL
). - Corrigido o resultado de
INTERVAL
qaundo aplicado a um valorDATE
. (Bug#792) - Corrida a compilação da biblioteca do servidor embutido da arquivo de especificação do RPM. (Bug#959)
- Adicionado alguns arquivos que faltavam na arquivo de especificação do RPM e corrigido alguns erros de criação do RPM que ocorriam no Red Hat Linux 9. (Bug#998)
- Corrigida a avaliação incorreta de
XOR
na cláusulaWHERE
. (Bug#992) - Corrigido um erro com processamento na cache de consultas com tabelas unidas a partir de mais de 255 tabelas. (Bug#930)
- Correção dos resultados incorretos da consulta outer join (ex.
LEFT JOIN
) quando a condiçãoON
é sempre falsa, e a faixa de busca é usada. (Bug#926) - Corrigido um erro causando resultados incorretos de
MATCH ... AGAINST()
em algumas joins. (Bug#942) - Tabelas
MERGE
não ignoram mais 'Using index' (da saída deEXPLAIN
). - Corrigido um erro que fazia uma tabela vazia ser marcada como 'analyzed'. (Bug#937)
- Corrigida a falha em
myisamchk --sort-records
quando usada em tabelas compactadas. - Corrigido o
ALTER TABLE
lento (quando comparado a versão 3.23) e comandos relacionados tais comoCREATE INDEX
. (Bug#712) - Correção de segmentation fault resultante de
LOAD DATA FROM MASTER
quando o mestre estava executando sem a opção--log-bin
. (Bug#934) - Corrigido um erro de segurança: Um servidor compilado com suporte a SSL ainda permitia conexões por usuários que tinham a opção
REQUIRE SSL
especificadas por suas contas. - Corrigido um erro aleatório: Algumas vezes o slave replicava consultas
GRANT
ouREVOKE
mesmo se estivesse configurado para excluir o banco de dadosMariaDB
da replicação (por exemplo, usandoreplicate-wild-ignore-table=mysql.%
). (Bug#980) - Os campos
Last_Errno
eLast_Error
na saída deSHOW SLAVE STATUS
agora são limpadas porCHANGE MASTER
e quando a thread slave de SQL inicia. (Bug#986) - Um erro de documentação: ela dizia que
RESET SLAVE
não altera a informação de conexão (master host, port, user e password), embora ela o fizesse. A instrução retorna estes valores para a opção de inicialização (master-host
etc) se houvesse alguma. (Bug#985) SHOW SLAVE STATUS
agora exibe a informação correta (master host, port, user e password) depois deRESET SLAVE
(isto é, ela mostra os novos valores, que são copiados das opções de inicialização se houver alguma). (Bug#985)- Disabilitada a propagação da posição original do log do master para eventos porque isto gerava valores inesperados para
Exec_Master_Log_Pos
e problemas comMASTER_POS_WAIT()
em configurações de replicação A->B->C. (Bug#1086) - Corrigido uma segmentation fault no
mysqlbinlog
quando--position=x
era usado comx
estando entre um eventoCreate_file
e o eventoAppend_block
,Exec_load
ouDelete_file
. (Bug#1091) mysqlbinlog
exibia avisos superfluos quando se usava--database
, o que causava erro de sintaxe quando enviado paraMariaDB
. (Bug#1092)- O
mysqlbinlog --database
também filtraLOAD DATA INFILE
(anteriormente, ele filtrava todas as consultas excetoLOAD DATA INFILE
). (Bug#1093) - O
mysqlbinlog
em alguns casos esquece de colocar um'#'
em frente doLOAD DATA INFILE
original (este comando é exibido apenas para informação, não para ser executado; mais tarde ele funcionava comoLOAD DATA LOCAL
com um nome de arquivo diferente, para execução peloMariaDB
). (Bug#1096) binlog-do-db
ebinlog-ignore-db
filtravamLOAD DATA INFILE
incorretamente (ele era escrito parcialmente para o log binário). Isto resultava em um corrompimento do log binário, que podia fazer o slave parar com um erro. (Bug#1100)- Quando, em uma transação, um tabela transacional (como uma tabela
InnoDB
) era atualizada, e posteriormente na mesma transação um tabela não transacional (como um tabelaMyISAM
) era atualizada usando o conteúdo atualizado da tabela transacional (comINSERT ... SELECT
por exemplo), as consultas eram escritas no log binário em uma ordem incorreta. (Bug#873) - Quando em uma transação,
INSERT ... SELECT
atualizava uma tabela não transacional, e umROLLBACK
era executado, nenhum erro era atualizado para o cliente. Agora o cliente é avisado que não se pode fazer roll back de algumas alterações, como já era o caso para umINSERT
normal. (Bug#1113) - Corrigido um erro portencial: Quando
STOP SLAVE
era executado enquanto a thread slave de SQL estava no meio de uma transação, e entãoCHANGE MASTER
era usado para direcionar para o slave para alguma instrução não transacional, a thread slave de SQL ficava confusa (porque ela ainda podia achar que estava em uma transação).