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).
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.