:: DEVELOPER ZONE
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 MySQL 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,
O mysqldump nunca enviará consultas ao servidor que resultam em um erro
de sintaxe. Este problema não está relacionado a saída do programa
mysqldump, que não foi alterado. (Bug #1148)
Altera a informação de metadados do resultado e assim MIN() e
MAX() informamm que eles podem retornar NULL (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 servidor mysqld já em execução.
As variveis do servidor mysqld wait_timeout,
net_read_timeout e net_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ção mysql_options()
Adicionada a opção --sql-mode=NO_DIR_IN_CREATE para tornar possível para
os slaves ignorarem as opções INDEX DIRECTORY e DATA DIRECTORY
dadas para CREATE TABLE. Quando ele está ligado, SHOW CREATE TABLE
não exibirá os diretórios dados.
SHOW CREATE TABLE agora exibe as opções INDEX DIRECTORY e
DATA 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 MySQL no boot do sistema.
See Secção 2.1.3, “Instalando o MySQL 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ório docs.
See Secção 2.2.5, “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.
See Secção 1.5.1.2, “Servidor Embutido MySQL”.
O MySQL 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 e binlog-ignore-db são testadas em um
banco de dados no master (see Secção 4.10.4, “O Log Binário”), e um parágrafo sobre como
replicate-do-db, replicate-do-table e opções análogas são
testadas em bancos de dados e tabelas no slave (see Secção 4.11.6, “Opções de Inicialização da Replicação”).
Agora o slave não replica SET PASSWORD se estiver configurado para
excluir o banco de dados mysql da replicação (usando, por exemplo,
replicate-wild-ignore-table=mysql.%). Este já era o caso para
GRANT e REVOKE 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 of SHOW PROCESSLIST for replication threads and for MASTER_POS_WAIT()
and added the most common states for these threads to the
documentation, see Secção 4.11.3, “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 mais FLUSH PRIVILEGES para a
conta ser conhecida no servidor. (Bug #473)
CHANGE MASTER agora descarrega o relay-log.info. Anteriormente
isto era feito na próxima execução de START SLAVE, assim se o
mysqld fosse desligado no slave depois de CHANGE MASTER sem
executar START SLAVE, o nome e posição do relay log eram perdidos.
Na reinicialização eles eram carregados a partir do relay-log.info,
revertendo-os para seus valores antigos (incorretos) de antes do CHANGE 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 MySQL 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 do EXPLAIN. (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 Secção 4.3.10, “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 executar
myisamchk --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 e ISAM quando um
registro era atualiado na tabela com um grande número de colunas e pelo
meno uma coluna BLOB/TEXT.
Corrigido um resultado incorreto ao fazer UNION e LIMIT #,#
quando não era usado parenteses na parte SELECT.
Corrigido um resultado incorreto ao fazer UNION e ORDER BY .. LIMIT # quando não usado parenteses na parte SELECT.
Corrigido um problema com SELECT SQL_CALC_FOUND_ROWS ... UNION ALL ... LIMIT # onde FOUND_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 MySQL 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 de MAX().
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 como NOT NULL
era ordenada depois de uma chave UNIQUE para uma coluna NOT NULL).
Corrigido o resultado de INTERVAL qaundo aplicado a um valor DATE.
(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áusula WHERE. (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ção ON é 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 de EXPLAIN).
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 como CREATE 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 ou REVOKE mesmo se estivesse configurado para excluir o
banco de dados mysql da replicação (por exemplo, usando
replicate-wild-ignore-table=mysql.%). (Bug #980)
Os campos Last_Errno e Last_Error na saída de SHOW SLAVE STATUS agora são limpadas por CHANGE 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 de RESET 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
com MASTER_POS_WAIT() em configurações de replicação A->B->C. (Bug #1086)
Corrigido uma segmentation fault no mysqlbinlog quando --position=x
era usado com x estando entre um evento Create_file e o evento
Append_block, Exec_load ou Delete_file. (Bug #1091)
mysqlbinlog exibia avisos superfluos quando se usava --database,
o que causava erro de sintaxe quando enviado para mysql. (Bug #1092)
O mysqlbinlog --database também filtra LOAD DATA INFILE
(anteriormente, ele filtrava todas as consultas exceto LOAD DATA INFILE). (Bug #1093)
O mysqlbinlog em alguns casos esquece de colocar um '#' em
frente do LOAD DATA INFILE original (este comando é exibido apenas
para informação, não para ser executado; mais tarde ele funcionava como
LOAD DATA LOCAL com um nome de arquivo diferente, para execução pelo
mysql). (Bug #1096)
binlog-do-db e binlog-ignore-db filtravam LOAD 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 tabela MyISAM) era atualizada usando o
conteúdo atualizado da tabela transacional (com INSERT ... 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 um ROLLBACK 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 um
INSERT 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ão
CHANGE 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).
© 1995-2005 MySQL AB. All rights reserved.
