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
mysqldumpagora coloca todos os identificadores corretamente entre aspas ao conectar com o servidor. Isto assegura que durante o processo de dump, Omysqldumpnunca 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 servidormysqldjá em execução. - As variveis do servidor
mysqldwait_timeout,net_read_timeoutenet_write_timeoutagora 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_CREATEpara tornar possível para os slaves ignorarem as opçõesINDEX DIRECTORYeDATA DIRECTORYdadas paraCREATE TABLE. Quando ele está ligado,SHOW CREATE TABLEnão exibirá os diretórios dados. SHOW CREATE TABLEagora exibe as opçõesINDEX DIRECTORYeDATA DIRECTORY, se eles fossem especificados quando a tabela era criada.- A variável do servidor
open_files_limitagora 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.pkgadicional 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
infotradicional 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
BETWEENcom 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-dbebinlog-ignore-dbsão testadas em um banco de dados no master (see "O Log Binário"), e um parágrafo sobre comoreplicate-do-db,replicate-do-tablee 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 PASSWORDse estiver configurado para excluir o banco de dadosMariaDBda replicação (usando, por exemplo,replicate-wild-ignore-table=mysql.%). Este já era o caso paraGRANTeREVOKEdesde 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
Statecolumn ofSHOW PROCESSLISTfor 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
GRANTque cria um usuário anônimo (isto é, uma conta com nome de usuário vazio) não exige maisFLUSH PRIVILEGESpara a conta ser conhecida no servidor. (Bug#473) CHANGE MASTERagora descarrega orelay-log.info. Anteriormente isto era feito na próxima execução deSTART SLAVE, assim se omysqldfosse desligado no slave depois deCHANGE MASTERsem 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.userpara 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 INDEXem 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
UPDATEde registros dinamicos separados. - Corrigido o erro
Can't unlock fileao executarmyisamchk --sort-indexno Windows. (Bug#1119) - Corrigido um possível deadlock ao alterar
key_buffer_sizeenquanto a cache de chaves era ativamente usada. (Bug#1088) - Corrigido um bug de overflow em
MyISAMeISAMquando 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
UNIONeLIMIT #,#quando não era usado parenteses na parteSELECT. - Corrigido um resultado incorreto ao fazer
UNIONeORDER 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
FULLTEXTestar marcada como 'analyzed'. - Corrigido o MariaDB para que o tamanho do campo (na API C) para a segunda coluna em
SHOW CREATE TABLEseja 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
ISAMna otimização deMAX(). myisamchk --sort-records=Nnã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
MyISAMcompactadas 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 NULLera ordenada depois de uma chaveUNIQUEpara uma colunaNOT NULL). - Corrigido o resultado de
INTERVALqaundo 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
XORna 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
MERGEnã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-recordsquando usada em tabelas compactadas. - Corrigido o
ALTER TABLElento (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 MASTERquando 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 SSLespecificadas por suas contas. - Corrigido um erro aleatório: Algumas vezes o slave replicava consultas
GRANTouREVOKEmesmo se estivesse configurado para excluir o banco de dadosMariaDBda replicação (por exemplo, usandoreplicate-wild-ignore-table=mysql.%). (Bug#980) - Os campos
Last_ErrnoeLast_Errorna saída deSHOW SLAVE STATUSagora são limpadas porCHANGE MASTERe quando a thread slave de SQL inicia. (Bug#986) - Um erro de documentação: ela dizia que
RESET SLAVEnã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-hostetc) se houvesse alguma. (Bug#985) SHOW SLAVE STATUSagora 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_Pose problemas comMASTER_POS_WAIT()em configurações de replicação A->B->C. (Bug#1086) - Corrigido uma segmentation fault no
mysqlbinlogquando--position=xera usado comxestando entre um eventoCreate_filee o eventoAppend_block,Exec_loadouDelete_file. (Bug#1091) mysqlbinlogexibia avisos superfluos quando se usava--database, o que causava erro de sintaxe quando enviado paraMariaDB. (Bug#1092)- O
mysqlbinlog --databasetambém filtraLOAD DATA INFILE(anteriormente, ele filtrava todas as consultas excetoLOAD DATA INFILE). (Bug#1093) - O
mysqlbinlogem alguns casos esquece de colocar um'#'em frente doLOAD DATA INFILEoriginal (este comando é exibido apenas para informação, não para ser executado; mais tarde ele funcionava comoLOAD DATA LOCALcom um nome de arquivo diferente, para execução peloMariaDB). (Bug#1096) binlog-do-dbebinlog-ignore-dbfiltravamLOAD DATA INFILEincorretamente (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 ... SELECTpor exemplo), as consultas eram escritas no log binário em uma ordem incorreta. (Bug#873) - Quando em uma transação,
INSERT ... SELECTatualizava uma tabela não transacional, e umROLLBACKera 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 umINSERTnormal. (Bug#1113) - Corrigido um erro portencial: Quando
STOP SLAVEera executado enquanto a thread slave de SQL estava no meio de uma transação, e entãoCHANGE MASTERera 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).