XOOPS Brasil

 

D.3. Alterações na distribuição 4.0.x (Production)

A versão 4.0 do servidor MySQL inclui muitos aprimoramentos e novos recursos:

Para uma lista completa de alterações, visite a seção para cada distribuição 4.0.x individual.

D.3.1. Alterações na distribuição 4.0.17 (not released yet)

Functionality added or changed:

  • Allow spaces in windows service names.

  • Changed the default Windows service name for mysqld from MySql to MySQL. This should not affect usage, because service names are not case sensitive.

  • When you install mysqld as a service on Windows systems, mysqld will read startup options in option files from the option group with the same name as the service name. (Except when the service name is MySQL).

Bugs fixed:

  • Fixed Bug#1335 when filesort was never shown in EXPLAIN if query contained ORDER BY NULL clause.

  • Fixed invalidation of whole query cache on DROP DATABASE. (Bug#1898)

  • Fixed bug in range optimizer that caused wrong results for some not likely AND/OR queries. (Bug#1828)

  • Fixed a crash in ORDER BY when ordering by expression and identifier. (Bug#1945)

  • Fixed a crash in an open HANDLER when an ALTER TABLE was executed in a different connection. (Bug#1826)

  • Fixed a bug in trunc* operator of full-text search which sometimes caused MySQL not to find all matched rows.

  • Fixed bug in zero prepending to DECIMAL column type.

  • Fixed optimiser bug, introduced in 4.0.16, when REF access plan was preferred to more efficient RANGE on another column.

  • Fixed problem when installing a MySQL server as a Windows service using a command of the form mysqld --install mysql --defaults-file=path-to-file.

  • Fixed an incorrect result from a query that uses only const tables (such as one-row tables) and non-constant expression (such as RAND()). (Bug#1271)

  • Fixed bug when the optimiser did not take SQL_CALC_FOUND_ROWS into account if LIMIT clause was present. (Bug#1274)

  • mysqlbinlog now asks for a password at the console when the -p or --password option is used with no argument. This is consistent with the way that other clients such mysqladmin and mysqldump already behave. Note: A consequence of this change is that it is no longer possible to invoke mysqlbinlog as mysqlbinlog -p pass_val (with a space between the -p option and the following password value). (Bug#1595)

  • Bug accidentally introduced in 4.0.16 where the slave SQL thread deleted its replicated temporary tables when STOP SLAVE was issued.

  • In a ``chain'' replication setup A->B->C, if 2 sessions on A updated temporary tables of the same name at the same time, the binary log of B became incorrect, resulting in C becoming confused. (Bug#1686)

  • In a ``chain'' replication setup A->B->C, if STOP SLAVE was issued on B while it was replicating a temporary table from A, then when START SLAVE was issued on B, the binary log of B became incorrect, resulting in C becoming confused. (Bug#1240)

  • When MASTER_LOG_FILE and MASTER_LOG_POS were not specified, CHANGE MASTER used the coordinates of the slave I/O thread to set up replication, which broke replication if the slave SQL thread lagged behind the slave I/O thread. This caused the slave SQL thread to lose some events. The new behaviour is to use the coordinates of the slave SQL thread instead. Veja mais informações sobre isto na Seção 4.11.8.1, “CHANGE MASTER TO. (Bug#1870)

  • Now if integer is stored or converted to TIMESTAMP or DATETIME value checks of year, month, day, hour, minute and second ranges are performed and numbers representing illegal timestamps are converted to 0 value. This behaviour is consistent with manual and with behaviour of string to TIMESTAMP/DATETIME conversion. (Bug#1448)

  • Fixed bug when BIT_AND() and BIT_OR() group functions returned incorrect value if SELECT used a temporary table and no rows were found. (Bug#1790).

  • BIT_AND() is now unsigned in all contexts. This means that it will now return 18446744073709551615 (= 0xffffffffffffffff) instead of -1 if there were no rows in the result.

  • Fixed bug with BIT_AND() still returning signed value for an empty set in some cases. (Bug#1972)

  • Fixed bug with ^ (XOR) and >> (bit shift) still returning signed value in some cases. (Bug#1993)

  • Replication: a rare race condition in the slave SQL thread, which could lead to a wrong complain that the relay log is corrupted. (Bug#2011)

  • Replication: if an administrative command on a table (OPTIMIZE TABLE, REPAIR TABLE etc) was run on the slave, this could sometimes stop the slave SQL thread (this did not led to any corruption; one just had to type START SLAVE to get replication going again). (Bug#1858)

  • Replication: in the slave SQL thread, a multi-table UPDATE could produce a wrong complain that some record was not found in one table, if the UPDATE was preceded by a INSERT ... SELECT. (Bug#1701)

D.3.2. Alterações na distribuição 4.0.16 (17 Out 2003)

Funcionalidades adicionadas ou alteradas:

  • Write memory allocation information to error log when doing mysqladmin debug. This only works on system that support the mallinfo() call (like newer Linux systems).

  • Added the following new server variables to allow more precise memory allocation: range_alloc_block_size, query_alloc_block_size, query_prealloc_size, transaction_alloc_block_size, and transaction_prealloc_size.

  • mysqlbinlog now reads option files. To make this work one must now specify --read-from-remote-server when reading binary logs from a MySQL server. (Note that using a remote server is deprecated and may disappear in future mysqlbinlog versions).

  • Block SIGPIPE signals also for non-threaded programs. The blocking is moved from mysql_init() to mysql_server_init(), which is automatically called on the first call to mysql_init().

  • Added --libs_r and --include options to mysql_config.

  • New `> prompt for mysql. This prompt is similar to the '> and "> prompts, but indicates that an identifier quoted with backticks was begun on an earlier line and the closing backtick has not yet been seen.

  • Atualizado o mysql_install_db para poder usar o endereço de IP da máquina local em vez do nome da máquina ao criar as tabelas de permissões iniciais de skip-name-resolve foi especificado. Esta opção pode ser útil no FreeBSD para evitar problemas de segurança de threads com o resolver de bibliotecas do FreeBSD. (Obrigado a Jeremy Zawodny pelo patch)

  • A documentation change: Added a note that when backing up a slave, it is necessary also to back up the master.info and relay-log.info files, as well as any SQL_LOAD-* files located in the directory specified by the --slave-load-tmpdir option. All these files are needed when the slave resumes replication after you restore the slave's data.

Bugs corrigidos:

  • Fixed a spurious error ERROR 14: Can't change size of file (Errcode: 2) on Windows in DELETE FROM table_name without a WHERE clause or TRUNCATE TABLE table_name, when table_name is a MyISAM table. (Bug#1397)

  • Fixed a bug that resulted in thr_alarm queue is full warnings after increasing the max_connections variable with SET GLOBAL. (Bug#1435)

  • Made LOCK TABLES to work when Lock_tables_priv is granted on the database level and Select_priv is granted on the table level.

  • Fixed crash of FLUSH QUERY CACHE on queries that use same table several times (Bug#988).

  • Fixed core dump bug when setting an enum system variable (such as SQL_WARNINGS) to NULL.

  • Extended the default timeout value for Windows clients from 30 seconds to 1 year. (The timeout that was added in MySQL 4.0.15 was way too short). This fixes a bug that caused ERROR 2013: Lost connection to MySQL server during query for queries that lasted longer than 30 seconds, if the client didn't specify a limit with mysql_options(). Users of 4.0.15 on Windows should upgrade to avoid this problem.

  • More ``out of memory'' checking in range optimiser.

  • Fixed and documented a problem when setting and using a user variable within the same SELECT statement. (Bug#1194).

  • Fixed bug in overrun check for BLOB values with compressed tables. This was a bug introduced in 4.0.14. It caused MySQL to regard some correct tables containing BLOB values as corrupted. (Bug#770, Bug#1304, and maybe Bug#1295)

  • SHOW GRANTS showed USAGE instead of the real column-level privileges when no table-level privileges were given.

  • When copying a database from the master, LOAD DATA FROM MASTER dropped the corresponding database on the slave, thus erroneously dropping tables that had no counterpart on the master and tables that may have been excluded from replication using replicate-*-table rules. Now LOAD DATA FROM MASTER no longer drops the database. Instead, it drops only the tables that have a counterpart on the master and that match the replicate-*-table rules. replicate-*-db rules can still be used to include or exclude a database as a whole from LOAD DATA FROM MASTER. A database will also be included or excluded as a whole if there are some rules like replicate-wild-do-table=db1.% or replicate-wild-ignore-table=db1.%, as is already the case for CREATE DATABASE and DROP DATABASE in replication. (Bug#1248)

  • Fixed a bug where mysqlbinlog crashed with a segmentation fault when used with the -h or --host option. (Bug#1258)

  • Fixed a bug where mysqlbinlog crashed with a segmentation fault when used on a binary log containing only final events for LOAD DATA. (Bug#1340)

  • Fixed compilation problem when compiling with OpenSSL 0.9.7 with disabled old DES support (If OPENSSL_DISABLE_OLD_DES_SUPPORT option was enabled).

  • Fixed a bug when two (or more) MySQL servers were running on the same machine, and they were both slaves, and at least one of them was replicating some LOAD DATA INFILE command from its master. The bug was that one slave MySQL server sometimes deleted the SQL_LOAD-* files (used for replication of LOAD DATA INFILE and located in the slave-load-tmpdir directory, which defaults to tmpdir) belonging to the other slave MySQL server of this machine, if these slaves had the same slave-load-tmpdir directory. When that happened, the other slave could not replicate LOAD DATA INFILE and complained about not being able to open some SQL_LOAD-* file. (Bug#1357)

  • If LOAD DATA INFILE failed for a small file, the master forgot to write a marker (a Delete_file event) in its binary log, so the slave could not delete 2 files (SQL_LOAD-*.info and SQL_LOAD-*.data from its tmpdir. (Bug#1391)

  • On Windows, the slave forgot to delete a SQL_LOAD-*.info file from tmpdir after successfully replicating a LOAD DATA INFILE command. (Bug#1392)

  • When a connection terminates, MySQL writes DROP TEMPORARY TABLE statements to the binary log for all temporary tables which the connection had not explicitely dropped. MySQL forgot to backquote the database and table names in the statement. (Bug#1345)

  • On some 64-bit machines (some HP-UX and Solaris machines), a slave installed with the 64-bit MySQL binary could not connect to its master (it connected to itself instead). (Bug#1256, Bug#1381)

  • Code was introduced in MySQL 4.0.15 for the slave to detect that the master had died while writing a transaction to its binary log. This code reported an error in a legal situation: When the slave I/O thread was stopped while copying a transaction to the relay log, the slave SQL thread would later pretend that it found an unfinished transaction. (Bug#1475)

D.3.3. 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 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 mostra 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 mostra 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. Veja mais informações sobre isto na Seçã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. Veja mais informações sobre isto na Seçã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. Veja mais informações sobre isto na Seçã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 utilizadores 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 Seçã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 Seçã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 Seçã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 utilizador anônimo (isto é, uma conta com nome de utilizador 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 utilizador 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 Seçã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 utilizadores 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 mostra 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).

D.3.4. 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 colunas BLOB e TEXT pode ser indexadas em tabelas InnoDB, o que não era possível antes.

  • Uma alteração de documentação: Função INTERVAL(NULL, ...) retorna -1.

  • Habilitado o INSERT do SELECT quando a tabela na qual os registros são inseridos também é uma tabela listada no SELECT.

  • Permite CREATE TABLE e INSERT de qualquer UNION.

  • A opção SQL_CALC_FOUND_ROWS agora sempre retorna o número total de rgistro de qulquer UNION.

  • Removida a opção --table de mysqlbinlog para evitar repetir a funcionalidade mysqldump.

  • 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). Veja mais informações sobre isto na Seção 4.11.9, “FAQ da Replicação”.

  • Uma alteração de documentação: adicionado avisos sobre uso seguro do comando CHANGE MASTER. Veja mais informações sobre isto na Seção 4.11.8.1, “CHANGE MASTER TO.

  • O MySQL 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 MySQL 4.1.

  • Adicionada a opção --nice para mysqld_safe para permitir configurar a exatidão do processo mysqld. (Obrigado a Christian Hammers por fornecer o patch inicial.) (Bug#627)

  • Adicionada a opção --read-only para que o mysqld não permita atualizações, exceto da thread escrava ou de utilizadores com o privilégio SUPER. (Pacth original de Markus Benning).

  • SHOW BINLOG EVENTS FROM x onde x é menor que 4, agora converte silenciosamente x para 4 em vez de exibir um erro. A mesma alteração foi feita para CHANGE MASTER TO MASTER_LOG_POS=x e CHANGE MASTER TO RELAY_LOG_POS=x.

  • mysqld agora só adiciona um tratamento de interrupção para o sinal SIGINT se você começá-lo com a nova opção --gdb. Isto é porque alguns utilizadores MySQL encontraram alguns problemas estranhos quando acidentalmente enviavam SIGINT para a threads mysqld.

  • RESET SLAVE agora limpa os campos Last_Errno e Last_Error na saída de SHOW SLAVE STATUS.

  • Adicionada a variável max_relay_log_size; o relay log será rotacionado automaticamente quando seu tamanho exceder max_relay_log_size. Mas se max_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". Veja mais informações sobre isto na Seção 4.7.1.1, “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 tabela MERGE agora é permitida mesmo que alguma tabela MyISAM 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 pacote CHAR.

  • 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 comando FLUSH LOGS ou quando o log binário excede max_binlog_size. (Bug#791)

  • Corrigido um bug que pode levar a falha em INTERVAL e GROUP BY ou DISTINCT. (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 MySQL de usar índices FULLTEXT mesmo se fosse possível (por exemplo, em SELECT * FROM t1 WHERE MATCH a,b AGAINST("index") > 0).

  • Corrigido um bug com ``table is full'' em operações UNION.

  • Corrigido um problema de segurança no qual utilizadores 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 em mysqlbinlog. (Bug#670)

  • Correção: SET CHARACTER SET DEFAULT fucniona. (Bug#462)

  • Corrigido o comportamento de tabelas MERGE em consultas ORDER BY ... DESC. (Bug#515)

  • Corrigida a falha do servidor em PURGE MASTER LOGS ou SHOW 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 consultas SELECT, onde uma coluna declarada como NOT NULL era comparada com uma expressão que podia tomar o valor NULL.

  • Alterado o timeout em mysql_real_connect() para usar poll() em vez de select() para contornar problemas cmo muitos outros arquivos abertos no cliente.

  • Corrigido resultados incorretos de MATCH ... AGAINST usado com uma consulta LEFT 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ções HANDLER ... READ, quando uma tabela é referenciada via um alias.

  • Corrigido um problema de portabilidade com safe_malloc, o qual fazia com que o MySQL 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ção INSERT 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 MySQL 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 coluna AUTO_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 de ``Duplicate 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ção slave-skip-errors para como tratar consultas completadas parcialmente no slave, veja Seção 4.11.6, “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áusulas IGNORE ou REPLACE no master, era replicada com IGNORE. Enquanto isto não for um problemase os dados do master e slave são identicos (em LOAD 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 o IGNORE. 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 tabela InnoDB, 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, ou binlog-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 servidor mysqld 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() retorna NULL imediatamente (``slave stopped''). (Bug#651)

  • Depois de RESET SLAVE; START SLAVE;, o valor de Relay_Log_Space exibido por SHOW 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)

D.3.5. Alterações na distribuição 4.0.13 (16 May 2003)

Funcionalidades adicionadas ou alteradas:

  • PRIMARY KEY agora implica NOT NULL. (Bug#390)

  • O pacote de binários do Windows agora está compilado com --enable-local-infile encontrar a configuraçào de construção do Unix.

  • Removida a medida do tempo de mysql-test-run. time não aceita todos os parâmetros exigidos em muitas aplicações (por exemplo, QNX) e a medida de tempo não é reamente necessária (isto não é um benchmark).

  • SHOW MASTER STATUS e SHOW SLAVE STATUS exigem o privilégio SUPER; agora eles aceitam REPLICATION CLIENT. (Bug#343)

  • Adicionada otimização de reparação do MyISAM em multi-threads e a variável myisam_repair_threads para habilitá-lo. Veja mais informações sobre isto na Seção 4.6.8.4, “SHOW VARIABLES.

  • Adicionada a variável innodb_max_dirty_pages_pct que controla a quantidade de páginas ``sujas'' permitidas na área de buffer do InnoDB.

  • As mensagens de erro CURRENT_USER() e Access denied agora relatam o nome de máquina exatamente como ele está especificado no comando GRANT.

  • Removido os resultados de benchmark das distribuições fonte e binárias. Eles ainda estão disponíveis na árvore fonte do BK.

  • Tabelas InnoDB agora suportam ANALYZE TABLE.

  • O MySQL agora envia um erro quando ele abre uma tabela que foi criada com o MySQL 4.1.

  • A opção --new agora altera altera os itens binários (0xFFDF) para serem tratados como strings binárias em vez de números por padrão. Isto corrige alguns problemas com conjunto de caracteres onde é conveniente colocar a string como um item binário. Depois destas alterações você deve converter a string binária para INTEGER com um CAST se você quiser comparar dois itens binários, um com o outro, e saber qual é maior. SELECT CAST(0xfeff AS UNSIGNED) < CAST(0xff AS UNSIGNED). Este será o comportamento padrão no MySQL 4.1. (Bug#152)

  • Habilitado delayed_insert_timeout no Linux (as bibliotecas glibc mais modernas tem um pthread_cond_timedwait corrigido). (Bug#211)

  • Não cria mais threads de insert delayed que o dado por max_insert_delayed_threads. (Bug#211)

  • Alterado o UPDATE ... LIMIT para aplicar o limite as linhas encontradas, independente de terem sido alteradas. Anteriormente o limite era aplicado como uma restrição no número de linhas alteradas.

  • Ajustado o otimizador para favorecer indíces em cluster em ver de busca na tabela.

  • BIT_AND() e BIT_OR() agora retornam um valor de 64 bits sem sinal.

  • Adicionado avisos ao log de erro do porquê de um falha em uma conexão segura (quando executando com --log-warnings).

  • As opções --skip-symlink e --use-symbolic-links estão obsoletas e forma substituídas com --symbolic-links.

  • A opção padrão para innodb_flush_log_at_trx_commit foi alterada de 0 para 1 para tornar tabelas InnoDB como ACID por padrão. Veja mais informações sobre isto na Seção 7.5.3, “Opções de Inicialização do InnoDB”.

  • Adicionado o recurso para SHOW KEYS para mostrar chaves que estão disabilitadas pelo comando ALTER TABLE DISABLE KEYS.

  • Ao usar um tipo de tabela não existente com CREATE TABLE, primeiro vê se o tipo de tabela padrão existe antes de utilizar MyISAM.

  • Adicionado MEMORY como um apelido para HEAP.

  • Renomeada a função rnd para my_rnd já que o nome era muito genérico e é um símbolo exportado no libmysqlclient (obrigado a Dennis Haney pelo patch inicial).

  • Correção de portabilidade: renomeado include/dbug.h para include/my_debug.h.

  • mysqldump não deleta mais o log binário sem aviso quando chamado com --master-data ou --first-slave; enquanto este comportamento era conveniente para alguns utilizadores, outros podia sofrer com ele. Agora deve perguntar explicitamente pela sua deleção com a nova opção --delete-master-logs.

  • Se o slave é configurado (usando, por exemplo, replicate-wild-ignore-table=mysql.%) para ecluir mysql.user, mysql.host, mysql.db, mysql.tables_priv e mysql.columns_priv da replicação, então GRANT e REVOKE não serão replicados.

Bugs corrigidos:

  • A mensagem de erro Access denied ao logar tinha um valor Using password incorreto. (Bug#398)

  • Corrigido um bug com NATURAL LEFT JOIN, NATURAL RIGHT JOIN e RIGHT JOIN quando usadas muitas tabelas em joins. O problema era que o método JOIN não era sempre associoado com as tabelas envolvida no método JOIN. Se você tiver uma consulta que usa muitos RIGHT JOIN ou NATURAL ... JOINS você deve verificar se eles funcionam como você espera depois de atualizar o MySQL para esta versõa. (Bug#291)

  • O cliente de linha de comando mysql não olha mais os comnados \* dentro de stringd com aspas invertidas.

  • Corrigido Unknown error ao usar UPDATE ... LIMIT. (Bug#373)

  • Corrigido o problema com o modo ANSI e GROUP BY com constantes. (Bug#387)

  • Corrigido o erro com UNION e OUTER JOIN. (Bug#386)

  • Corrigido o erro se é usado um UPDATE multi-tabelas e a consulta exige um tabela temporária maior que tmp_table_size. (Bug#286)

  • Executa mysql_install_db com a opção -IN-RPM para a instalação do Mac OS X não falhar em sistemas com a configuração de nome de máquina feita de forma inapropriada.

  • LOAD DATA INFILE agora irá ler 000000 como uma data zerada em vez de "2000-00-00".

  • Corrigido um erro que fazia que DELETE FROM table WHERE const_expression sempre deletasse toda a tabela (mesmo se o resultado da expressão fosse falso). (Bug#355)

  • Corrigido um bug de core dump ao usar FORMAT('nan',#). (Bug#284)

  • Corrigido um erro na resolução do nome com HAVING ... COUNT(DISTINCT ...).

  • Corrigido resultados incorretos da operação de truncamento (*) em MATCH ... AGAINST() em alguns joins complexos.

  • Fixed a crash in REPAIR ... USE_FRM command, when used on read-only, nonexisting table or a table with a crashed index file.

  • Fixed a crashing bug in mysql monitor program. It occurred if program was started with --no-defaults, with a prompt that contained hostname and connection to non-existing db was requested

  • Fixed problem when comparing a key for a multi-byte-character set. (Bug#152)

  • Fixed bug in LEFT, RIGHT and MID when used with multi-byte character sets and some GROUP BY queries. (Bug#314)

  • Fix problem with ORDER BY being discarded for some DISTINCT queries. (Bug#275)

  • Fixed that SET SQL_BIG_SELECTS=1 works as documented (This corrects a new bug introduced in 4.0)

  • Fixed some serious bugs in UPDATE ... ORDER BY. (Bug#241)

  • Fixed unlikely problem in optimising WHERE clause with constant expression like in WHERE 1 AND (a=1 AND b=1).

  • Fixed that SET SQL_BIG_SELECTS=1 works again.

  • Introduced proper backtick quoting for db.table in SHOW GRANTS.

  • FULLTEXT index stopped working after ALTER TABLE that converts TEXT column to CHAR. (Bug#283)

  • Fixed a security problem with SELECT and wildcarded select list, when user only had partial column SELECT privileges on the table.

  • Mark a MyISAM table as "analyzed" only when all the keys are indeed analyzed.

  • Only ignore world-writeable my.cnf files that are regular files (and not, for example, named pipes or character devices).

  • Fixed few smaller issues with SET PASSWORD.

  • Fixed error message which contained deprecated text.

  • Fixed a bug with two NATURAL JOINs in the query.

  • SUM() didn't return NULL when there was no rows in result or when all values was NULL.

  • On Unix symbolic links handling was not enabled by default and there was no way to turn this on.

  • Added missing dashes to parameter --open-files-limit in mysqld_safe. (Bug#264)

  • Fixed incorrect hostname for TCP/IP connections displayed in SHOW PROCESSLIST.

  • Fixed a bug with NAN in FORMAT(...) function ...

  • Fixed a bug with improperly cached database privileges.

  • Fixed a bug in ALTER TABLE ENABLE / DISABLE KEYS which failed to force a refresh of table data in the cache.

  • Fixed bugs in replication of LOAD DATA INFILE for custom parameters (ENCLOSED, TERMINATED and so on) and temporary tables. (Bug#183, Bug#222)

  • Fixed a replication bug when the master is 3.23 and the slave 4.0: the slave lost the replicated temporary tables if FLUSH LOGS was issued on the master. (Bug#254)

  • Fixed a bug when doing LOAD DATA INFILE IGNORE: When reading the binary log, mysqlbinlog and the replication code read REPLACE instead of IGNORE. This could make the slave's table become different from the master's table. (Bug#218)

  • Fixed a deadlock when relay_log_space_limit was set to a too small value. (Bug#79)

  • Fixed a bug in HAVING clause when an alias is used from the select list.

  • Fixed overflow bug in MyISAM when a row is inserted into a table with a large number of columns and at least one BLOB/TEXT column. Bug was caused by incorrect calculation of the needed buffer to pack data.

  • Fixed a bug when SELECT @nonexistent_variable caused the error in client - server protocol due to net_printf() being sent to the client twice.

  • Fixed a bug in setting SQL_BIG_SELECTS option.

  • Fixed a bug in SHOW PROCESSLIST which only displayed a localhost in the "Host" column. This was caused by a glitch that only used current thread information instead of information from the linked list of threads.

  • Removed unnecessary Mac OS X helper files from server RPM. (Bug#144)

  • Allow optimization of multiple-table update for InnoDB tables as well.

  • Fixed a bug in multiple-table updates that caused some rows to be updated several times.

  • Fixed a bug in mysqldump when it was called with --master-data: the CHANGE MASTER TO commands appended to the SQL dump had incorrect coordinates. (Bug#159)

  • Fixed a bug when an updating query using USER() was replicated on the slave; this caused segfault on the slave. (Bug#178). USER() is still badly replicated on the slave (it is replicated to "").

D.3.6. Alterações na distribuição 4.0.12 (15 Mar 2003: Production)

Functionality added or changed:

  • mysqld no longer reads options from world-writeable config files.

  • Integer values between 9223372036854775807 and 9999999999999999999 are now regarded as unsigned longlongs, not as floats. This makes these values work similar to values between 10000000000000000000 and 18446744073709551615.

  • SHOW PROCESSLIST will now include the client TCP port after the hostname to make it easier to know from which client the request originated.

Bugs fixed:

  • Fixed mysqld crash on extremely small values of sort_buffer variable.

  • INSERT INTO u SELECT ... FROM t was written too late to the binary log if t was very frequently updated during the execution of this query. This could cause a problem with mysqlbinlog or replication. The master must be upgraded, not the slave. (Bug#136)

  • Fixed checking of random part of WHERE clause. (Bug#142)

  • Fixed a bug with multiple-table updates with InnoDB tables. This bug occurred as, in many cases, InnoDB tables cannot be updated ``on the fly,'' but offsets to the records have to be stored in a temporary table.

  • Added missing file mysql_secure_installation to the server RPM subpackage. (Bug#141)

  • Fixed MySQL (and myisamchk) crash on artificially corrupted .MYI files.

  • Don't allow BACKUP TABLE to overwrite existing files.

  • Fixed a bug with multi-table UPDATE statements when user had all privileges on the database where tables are located and there were any entries in tables_priv table, that is, grant_option was true.

  • Fixed a bug that allowed a user with table or column grants on some table, TRUNCATE any table in the same database.

  • Fixed deadlock when doing LOCK TABLE followed by DROP TABLE in the same thread. In this case one could still kill the thread with KILL.

  • LOAD DATA LOCAL INFILE was not properly written to the binary log (hence not properly replicated). (Bug#82)

  • RAND() entries were not read correctly by mysqlbinlog from the binary log which caused problems when restoring a table that was inserted with RAND(). INSERT INTO t1 VALUES(RAND()). In replication this worked ok.

  • SET SQL_LOG_BIN=0 was ignored for INSERT DELAYED queries. (Bug#104)

  • SHOW SLAVE STATUS reported too old positions (columns Relay_Master_Log_File and Exec_Master_Log_Pos) for the last executed statement from the master, if this statement was the COMMIT of a transaction. The master must be upgraded for that, not the slave. (Bug#52)

  • LOAD DATA INFILE was not replicated by the slave if replicate_*_table was set on the slave. (Bug#86)

  • After RESET SLAVE, the coordinates displayed by SHOW SLAVE STATUS looked un-reset (though they were, but only internally). (Bug#70)

  • Fixed query cache invalidation on LOAD DATA.

  • Fixed memory leak on ANALYZE procedure with error.

  • Fixed a bug in handling CHAR(0) columns that could cause incorrect results from the query.

  • Fixed rare bug with incorrect initialisation of AUTO_INCREMENT column, as a secondary column in a multi-column key (see Seção 3.6.9, “Usando AUTO_INCREMENT), when data was inserted with INSERT ... SELECT or LOAD DATA into an empty table.

  • On Windows, STOP SLAVE didn't stop the slave until the slave got one new command from the master (this bug has been fixed for MySQL 4.0.11 by releasing updated 4.0.11a Windows packages, which include this individual fix on top of the 4.0.11 sources). (Bug#69)

  • Fixed a crash when no database was selected and LOAD DATA command was issued with full table name specified, including database prefix.

  • Fixed a crash when shutting down replication on some platforms (for example, Mac OS X).

  • Fixed a portability bug with pthread_attr_getstacksize on HP-UX 10.20 (Patch was also included in 4.0.11a sources).

  • Fixed the bigint test to not fail on some platforms (for example, HP-UX and Tru64) due to different return values of the atof() function.

  • Fixed the rpl_rotate_logs test to not fail on certain platforms (e.g. Mac OS X) due to a too long file name (changed slave-master-info.opt to .slave-mi).

D.3.7. Alterações na distribuição 4.0.11 (20 Feb 2003)

Functionality added or changed:

  • NULL is now sorted LAST if you use ORDER BY ... DESC (as it was before MySQL 4.0.2). This change was required to comply with the SQL-99 standard. (The original change was made because we thought that SQL-99 required NULL to be always sorted at the same position, but this was incorrect).

  • Added START TRANSACTION (SQL-99 syntax) as alias for BEGIN. This is recommended to use instead of BEGIN to start a transaction.

  • Added OLD_PASSWORD() as a synonym for PASSWORD().

  • Allow keyword ALL in group functions.

  • Added support for some new INNER JOIN and JOIN syntaxes. For example, SELECT * FROM t1 INNER JOIN t2 didn't work before.

  • Novell NetWare 6.0 porting effort completed, Novell patches merged into the main source tree.

Bugs fixed:

  • Fixed problem with multiple-table delete and InnoDB tables.

  • Fixed a problem with BLOB NOT NULL columns used with IS NULL.

  • Re-added missing pre- and post(un)install scripts to the Linux RPM packages (they were missing after the renaming of the server subpackage).

  • Fixed that table locks are not released with multi-table updates and deletes with InnoDB storage engine.

  • Fixed bug in updating BLOB columns with long strings.

  • Fixed integer-wraparound when giving big integer (>= 10 digits) to function that requires an unsigned argument, like CREATE TABLE (...) AUTO_INCREMENT=#.

  • MIN(key_column) could in some cases return NULL on a column with NULL and other values.

  • MIN(key_column) and MAX(key_column) could in some cases return incorrect values when used in OUTER JOIN.

  • MIN(key_column) and MAX(key_column) could return incorrect values if one of the tables was empty.

  • Fixed rare crash in compressed MyISAM tables with blobs.

  • Fixed bug in using aggregate functions as argument for INTERVAL, CASE, FIELD, CONCAT_WS, ELT and MAKE_SET functions.

  • When running with --lower-case-table-names (default on Windows) and you had tables or databases with mixed case on disk, then executing SHOW TABLE STATUS followed with DROP DATABASE or DROP TABLE could fail with Errcode 13.

D.3.8. Alterações na distribuição 4.0.10 (29 Jan 2003)

Functionality added or changed:

  • Added option --log-error[=file_name] to mysqld_safe and mysqld. This option will force all error messages to be put in a log file if the option --console is not given. On Windows --log-error is enabled as default, with a default name of host_name.err if the name is not specified.

  • Changed some things from Warning: to Note: in the log files.

  • The mysqld server should now compile on NetWare.

  • Added optimization that if one does GROUP BY ... ORDER BY NULL then result is not sorted.

  • New --ft-stopword-file command-line option for mysqld to replace/disable the built-in stopword list that is used in full-text searches. Veja mais informações sobre isto na Seção 4.6.8.4, “SHOW VARIABLES.

  • Changed default stack size from 64K to 192K; This fixes a core dump problem on Red Hat 8.0 and other systems with a glibc that requires a stack size larger than 128K for gethostbyaddr() to resolve a hostname. You can fix this for earlier MySQL versions by starting mysqld with --thread-stack=192K.

  • Added mysql_waitpid to the binary distribution and the MySQL-client RPM subpackage (required for mysql-test-run).

  • Renamed the main MySQL RPM package to MySQL-server. When updating from an older version, MySQL-server.rpm will simply replace MySQL.rpm.

  • If a slave is configured with replicate_wild_do_table=db.% or replicate_wild_ignore_table=db.%, these rules will be applied to CREATE/DROP DATABASE too.

  • Added timeout value for MASTER_POS_WAIT().

Bugs fixed:

  • Fixed initialisation of the random seed for newly created threads to give a better rand() distribution from the first call.

  • Fixed a bug that caused mysqld to hang when a table was opened with the HANDLER command and then dropped without being closed.

  • Fixed bug in logging to binary log (which affects replication) a query that inserts a NULL in an AUTO_INCREMENT column and also uses LAST_INSERT_ID().

  • Fixed an unlikely bug that could cause a memory overrun when using ORDER BY constant_expression.

  • Fixed a table corruption in myisamchk's parallel repair mode.

  • Fixed bug in query cache invalidation on simple table renaming.

  • Fixed bug in mysqladmin --relative.

  • On some 64 bit systems, show status reported a strange number for Open_files and Open_streams.

  • Fixed incorrect number of columns in EXPLAIN on empty table.

  • Fixed bug in LEFT JOIN that caused zero rows to be returned in the case the WHERE condition was evaluated as FALSE after reading const tables. (Unlikely condition).

  • FLUSH PRIVILEGES didn't correctly flush table/column privileges when mysql.tables_priv is empty.

  • Fixed bug in replication when using LOAD DATA INFILE one a file that updated an AUTO_INCREMENT column with NULL or 0. This bug only affected MySQL 4.0 masters (not slaves or MySQL 3.23 masters). Note: If you have a slave that has replicated a file with generated AUTO_INCREMENT columns then the slave data is corrupted and you should reinitialise the affected tables from the master.

  • Fixed possible memory overrun when sending a BLOB value larger than 16M to the client.

  • Fixed incorrect error message when setting a NOT NULL column to an expression that returned NULL.

  • Fixed core dump bug in str LIKE "%other_str%" where str or other_str contained characters >= 128.

  • Fixed bug: When executing on master LOAD DATA and InnoDB failed with table full error the binary log was corrupted.

D.3.9. Alterações na distribuição 4.0.9 (09 Jan 2003)

Functionality added or changed:

  • OPTIMIZE TABLE will for MyISAM tables treat all NULL values as different when calculating cardinality. This helps in optimising joins between tables where one of the tables has a lot of NULL values in a indexed column:

    SELECT * from t1,t2 where t1.a=t2.key_with_a_lot_of_null;
    

  • Added join operator FORCE INDEX (key_list). This acts likes USE INDEX (key_list) but with the addition that a table scan is assumed to be VERY expensive. One bad thing with this is that it makes FORCE a reserved word.

  • Reset internal row buffer in MyISAM after each query. This will reduce memory in the case you have a lot of big blobs in a table.

Bugs fixed:

  • A security patch in 4.0.8 causes the mysqld server to die if the remote hostname can't be resolved. This is now fixed.

  • Fixed crash when replication big LOAD DATA INFILE statement that caused log rotation.

D.3.10. Alterações na distribuição 4.0.8 (07 Jan 2003)

Functionality added or changed:

  • Default max_packet_length for libmysqld.c is now 1024*1024*1024.

  • One can now specify max_allowed_packet in a file ready by mysql_options(MYSQL_READ_DEFAULT_FILE). for clients.

  • When sending a too big packet to the server with the not compressed protocol, the client now gets an error message instead of a lost connection.

  • We now send big queries/result rows in bigger hunks, which should give a small speed improvement.

  • Fixed some bugs with the compressed protocol for rows > 16M.

  • InnoDB tables now also support ON UPDATE CASCADE in FOREIGN KEY constraints. See the InnoDB section in the manual for the InnoDB changelog.

Bugs fixed:

  • Fixed bug in ALTER TABLE with BDB tables.

  • Fixed core dump bug in QUOTE() function.

  • Fixed a bug in handling communication packets bigger than 16M. Unfortunately this required a protocol change; If you upgrade the server to 4.0.8 and above and have clients that uses packets >= 255*255*255 bytes (=16581375) you must also upgrade your clients to at least 4.0.8. If you don't upgrade, the clients will hang when sending a big packet.

  • Fixed bug when sending blobs longer than 16M to client.

  • Fixed bug in GROUP BY when used on BLOB column with NULL values.

  • Fixed a bug in handling NULL values in CASE ... WHEN ...

D.3.11. Alterações na distribuição 4.0.7 (20 Dec 2002)

Functionality added or changed:

  • mysqlbug now also reports the compiler version used for building the binaries (if the compiler supports the option --version).

Bugs fixed:

  • Fixed compilation problems on OpenUnix and HPUX 10.20.

  • Fixed some optimization problems when compiling MySQL with -DBIG_TABLES on a 32 bit system.

  • mysql_drop_db() didn't check permissions properly so anyone could drop another users database. DROP DATABASE is checked properly.

D.3.12. Alterações na distribuição 4.0.6 (14 Dec 2002: Gamma)

Functionality added or changed:

  • Added syntax support for CHARACTER SET xxx and CHARSET=xxx table options (to be able to read table dumps from 4.1).

  • Fixed replication bug that caused the slave to loose its position in some cases when the replication log was rotated.

  • Fixed that a slave will restart from the start of a transaction if it's killed in the middle of one.

  • Moved the manual pages from man to man/man1 in the binary distributions.

  • The default type returned by IFNULL(A,B) is now set to be the more 'general' of the types of A and B. (The order is STRING, REAL or INTEGER).

  • Moved the mysql.server startup script in the RPM packages from /etc/rc.d/init.d/mysql to /etc/init.d/mysql (which almost all current Linux distributions support for LSB compliance).

  • Added Qcache_lowmem_prunes status variable (number of queries that were deleted from cache because of low memory).

  • Fixed mysqlcheck so it can deal with table names containing dashes.

  • Bulk insert optimization (see Seção 4.6.8.4, “SHOW VARIABLES) is no longer used when inserting small (less than 100) number of rows.

  • Optimization added for queries like SELECT ... FROM merge_table WHERE indexed_column=constant_expr.

  • Added functions LOCALTIME and LOCALTIMESTAMP as synonyms for NOW().

  • CEIL is now an alias for CEILING.

  • The CURRENT_USER() function can be used to get a user@host value as it was matched in the GRANT system. Veja mais informações sobre isto na Seção 6.3.6.2, “Funções Diversas”.

  • Fixed CHECK constraints to be compatible with SQL-99. This made CHECK a reserved word. (Checking of CHECK constraints is still not implemented).

  • Added CAST(... as CHAR).

  • Added PostgreSQL compatible LIMIT syntax: SELECT ... LIMIT row_count OFFSET offset

  • mysql_change_user() will now reset the connection to the state of a fresh connect (Ie, ROLLBACK any active transaction, close all temporary tables, reset all user variables etc..)

  • CHANGE MASTER and RESET SLAVE now require that slave threads be both already stopped; these commands will return an error if at least one of these two threads is running.

Bugs fixed:

  • Fixed number of found rows returned in multi table updates

  • Make --lower-case-table-names default on Mac OS X as the default file system (HFS+) is case insensitive. Veja mais informações sobre isto na Seção 6.1.3, “Caso Sensitivo nos Nomes”.

  • Transactions in AUTOCOMMIT=0 mode didn't rotate binary log.

  • A fix for the bug in a SELECT with joined tables with ORDER BY and LIMIT clause when filesort had to be used. In that case LIMIT was applied to filesort of one of the tables, although it could not be. This fix also solved problems with LEFT JOIN.

  • mysql_server_init() now makes a copy of all arguments. This fixes a problem when using the embedded server in C# program.

  • Fixed buffer overrun in libmysqlclient library that allowed a malicious MySQL server to crash the client application.

  • Fixed security-related bug in mysql_change_user() handling. All users are strongly recommended to upgrade to version 4.0.6.

  • Fixed bug that prevented --chroot command-line option of mysqld from working.

  • Fixed bug in phrase operator "..." in boolean full-text search.

  • Fixed bug that caused OPTIMIZE TABLE to corrupt the table under some rare circumstances.

  • Part rewrite of multi-table-update to optimise it, make it safer and more bug free.

  • LOCK TABLES now works together with multi-table-update and multi-table-delete.

  • --replicate-do=xxx didn't work for UPDATE commands. (Bug introduced in 4.0.0)

  • Fixed shutdown problem on Mac OS X.

  • Major InnoDB bugs in REPLACE, AUTO_INCREMENT, INSERT INTO ... SELECT ... were fixed. See the InnoDB changelog in the InnoDB section of the manual.

  • RESET SLAVE caused a crash if the slave threads were running.

D.3.13. Alterações na distribuição 4.0.5 (13 Nov 2002)

Functionality added or changed:

  • Port number was added to host name (if it is known) in SHOW PROCESSLIST command

  • Changed handling of last argument in WEEK() so that one can get week number according to the ISO 8601 specification. (Old code should still work).

  • Fixed that INSERT DELAYED threads doesn't hang on Waiting for INSERT when one sends a SIGHUP to mysqld.

  • Change that AND works according to SQL-99 when it comes to NULL handling. In practice, this only affects queries where you do something like WHERE ... NOT (NULL AND 0).

  • mysqld will now resolve basedir to its full path (with realpath()). This enables one to use relative symlinks to the MySQL installation directory. This will however cause show variables to report different directories on systems where there is a symbolic link in the path.

  • Fixed that MySQL will not use index scan on index disabled with IGNORE INDEX or USE INDEX. to be ignored.

  • Added --use-frm option to mysqlcheck. When used with REPAIR, it gets the table structure from the .frm file, so the table can be repaired even if the .MYI header is corrupted.

  • Fixed bug in MAX() optimization when used with JOIN and ON expressions.

  • Added support for reading of MySQL 4.1 table definition files.

  • BETWEEN behaviour changed (see Seção 6.3.1.2, “Operadores de Comparação”). Now datetime_col BETWEEN timestamp AND timestamp should work as expected.

  • One can create TEMPORARY MERGE tables now.

  • DELETE FROM myisam_table now shrinks not only the .MYD file but also the .MYI file.

  • When one uses the --open-files-limit=# option to mysqld_safe it's now passed on to mysqld.

  • Changed output from EXPLAIN from 'where used' to 'Using where' to make it more in line with other output.

  • Removed variable safe_show_database as it was no longer used.

  • Updated source tree to be built using automake 1.5 and libtool 1.4.

  • Fixed an inadvertently changed option (--ignore-space) back to the original --ignore-spaces in mysqlclient. (Both syntaxes will work).

  • Don't require UPDATE privilege when using REPLACE.

  • Added support for DROP TEMPORARY TABLE ..., to be used to make replication safer.

  • When transactions are enabled, all commands that update temporary tables inside a BEGIN/COMMIT are now stored in the binary log on COMMIT and not stored if one does ROLLBACK. This fixes some problems with non-transactional temporary tables used inside transactions.

  • Allow braces in joins in all positions. Formerly, things like SELECT * FROM (t2 LEFT JOIN t3 USING (a)), t1 worked, but not SELECT * FROM t1, (t2 LEFT JOIN t3 USING (a)). Note that braces are simply removed, they do not change the way the join is executed.

  • InnoDB now supports also isolation levels READ UNCOMMITTED and READ COMMITTED. For a detailed InnoDB changelog, see Seção 7.5.16, “Histórico de Alterações do InnoDB” in this manual.

Bugs fixed:

  • Fixed bug in MAX() optimization when used with JOIN and ON expressions.

  • Fixed that INSERT DELAY threads don't hang on Waiting for INSERT when one sends a SIGHUP to mysqld.

  • Fixed that MySQL will not use an index scan on an index that has been disabled with IGNORE INDEX or USE INDEX.

  • Corrected test for root user in mysqld_safe.

  • Fixed error message issued when storage engine cannot do CHECK or REPAIR.

  • Fixed rare core dump problem in complicated GROUP BY queries that didn't return any result.

  • Fixed mysqlshow to work properly with wildcarded database names and with database names that contain underscores.

  • Portability fixes to get MySQL to compile cleanly with Sun Forte 5.0.

  • Fixed MyISAM crash when using dynamic-row tables with huge numbers of packed fields.

  • Fixed query cache behaviour with BDB transactions.

  • Fixed possible floating point exception in MATCH relevance calculations.

  • Fixed bug in full-text search IN BOOLEAN MODE that made MATCH to return incorrect relevance value in some complex joins.

  • Fixed a bug that limited MyISAM key length to a value slightly less that 500. It is exactly 500 now.

  • Fixed that GROUP BY on columns that may have a NULL value doesn't always use disk based temporary tables.

  • The filename argument for the --des-key-file argument to mysqld is interpreted relative to the data directory if given as a relative pathname.

  • Removed a condition that temp table with index on column that can be NULL has to be MyISAM. This was okay for 3.23, but not needed in 4.*. This resulted in slowdown in many queries since 4.0.2.

  • Small code improvement in multi-table updates.

  • Fixed a newly introduced bug that caused ORDER BY ... LIMIT row_count to not return all rows.

  • Fixed a bug in multi-table deletes when outer join is used on an empty table, which gets first to be deleted.

  • Fixed a bug in multi-table updates when a single table is updated.

  • Fixed bug that caused REPAIR TABLE and myisamchk to corrupt FULLTEXT indexes.

  • Fixed bug with caching the mysql grant table database. Now queries in this database are not cached in the query cache.

  • Small fix in mysqld_safe for some shells.

  • Give error if a MyISAM MERGE table has more than 2 ^ 32 rows and MySQL was not compiled with -DBIG_TABLES.

  • Fixed some ORDER BY ... DESC problems with InnoDB tables.

D.3.14. Alterações na distribuição 4.0.4 (29 Sep 2002)

  • Fixed bug where GRANT/REVOKE failed if hostname was given in non-matching case.

  • Don't give warning in LOAD DATA INFILE when setting a timestamp to a string value of '0'.

  • Fixed bug in myisamchk -R mode.

  • Fixed bug that caused mysqld to crash on REVOKE.

  • Fixed bug in ORDER BY when there is a constant in the SELECT statement.

  • One didn't get an error message if mysqld couldn't open the privilege tables.

  • SET PASSWORD FOR ... closed the connection in case of errors (bug from 4.0.3).

  • Increased max possible max_allowed_packet in mysqld to 1 GB.

  • Fixed bug when doing a multi-line INSERT on a table with an AUTO_INCREMENT key which was not in the first part of the key.

  • Changed LOAD DATA INFILE to not recreate index if the table had rows from before.

  • Fixed overrun bug when calling AES_DECRYPT() with incorrect arguments.

  • --skip-ssl can now be used to disable SSL in the MySQL clients, even if one is using other SSL options in an option file or previously on the command line.

  • Fixed bug in MATCH ... AGAINST( ... IN BOOLEAN MODE) used with ORDER BY.

  • Added LOCK TABLES and CREATE TEMPORARY TABLES privilege on the database level. One must run the mysql_fix_privilege_tables script on old installations to activate these.

  • In SHOW TABLE ... STATUS, compressed tables sometimes showed up as dynamic.

  • SELECT @@[global|session].var_name didn't report global | session in the result column name.

  • Fixed problem in replication that FLUSH LOGS in a circular replication setup created an infinite number of binary log files. Now a rotate-binary-log command in the binary log will not cause slaves to rotate logs.

  • Removed STOP EVENT from binary log when doing FLUSH LOGS.

  • Disable the use of SHOW NEW MASTER FOR SLAVE as this needs to be completely reworked in a future release.

  • Fixed a bug with constant expression (for example, field of a one-row table, or field from a table, referenced by a UNIQUE key) appeared in ORDER BY part of SELECT DISTINCT.

  • --log-binary=a.b.c now properly strips off .b.c.

  • FLUSH LOGS removed numerical extension for all future update logs.

  • GRANT ... REQUIRE didn't store the SSL information in the mysql.user table if SSL was not enabled in the server.

  • GRANT ... REQUIRE NONE can now be used to remove SSL information.

  • AND is now optional between REQUIRE options.

  • REQUIRE option was not properly saved, which could cause strange output in SHOW GRANTS.

  • Fixed that mysqld --help reports correct values for --datadir and --bind-address.

  • Fixed that one can drop UDFs that didn't exist when mysqld was started.

  • Fixed core dump problem with SHOW VARIABLES on some 64 bit systems (like Solaris sparc).

  • Fixed a bug in my_getopt(); --set-variable syntax didn't work for those options that didn't have a valid variable in the my_option struct. This affected at least the default-table-type option.

  • Fixed a bug from 4.0.2 that caused REPAIR TABLE and myisamchk --recover to fail on tables with duplicates in a unique key.

  • Fixed a bug from 4.0.3 in calculating the default datatype for some functions. This affected queries of type CREATE TABLE table_name SELECT expression(),...

  • Fixed bug in queries of type SELECT * FROM table-list GROUP BY ... and SELECT DISTINCT * FROM ....

  • Fixed bug with the --slow-log when logging an administrator command (like FLUSH TABLES).

  • Fixed a bug that OPTIMIZE of locked and modified table, reported table corruption.

  • Fixed a bug in my_getopt() in handling of special prefixes (--skip-, --enable-). --skip-external-locking didn't work and the bug may have affected other similar options.

  • Fixed bug in checking for output file name of the tee option.

  • Added some more optimization to use index for SELECT ... FROM many_tables .. ORDER BY key limit #

  • Fixed problem in SHOW OPEN TABLES when a user didn't have access permissions to one of the opened tables.

D.3.15. Alterações na distribuição 4.0.3 (26 Aug 2002: Beta)

  • Fixed problem with types of user variables. (Bug#551)

  • Fixed problem with configure ... --localstatedir=....

  • Cleaned up mysql.server script.

  • Fixed a bug in mysqladmin shutdown when pid file was modified while mysqladmin was still waiting for the previous one to disappear. This could happen during a very quick restart and caused mysqladmin to hang until shutdown_timeout seconds had passed.

  • Don't increment warnings when setting AUTO_INCREMENT columns to NULL in LOAD DATA INFILE.

  • Fixed all boolean type variables/options to work with the old syntax, for example, all of these work: --lower-case-table-names, --lower-case-table-names=1, -O lower-case-table-names=1, --set-variable=lower-case-table-names=1

  • Fixed shutdown problem (SIGTERM signal handling) on Solaris. (Bug from 4.0.2).

  • SHOW MASTER STATUS now returns an empty set if binary log is not enabled.

  • SHOW SLAVE STATUS now returns an empty set if slave is not initialised.

  • Don't update MyISAM index file on update if not strictly necessary.

  • Fixed bug in SELECT DISTINCT ... FROM many_tables ORDER BY not-used-column.

  • Fixed a bug with BIGINT values and quoted strings.

  • Added QUOTE() function that performs SQL quoting to produce values that can be used as data values in queries.

  • Changed variable DELAY_KEY_WRITE to an enum to allow one set DELAY_KEY_WRITE for all tables without taking down the server.

  • Changed behaviour of IF(condition,column,NULL) so that it returns the value of the column type.

  • Made safe_mysqld a symlink to mysqld_safe in binary distribution.

  • Fixed security bug when having an empty database name in the user.db table.

  • Fixed some problems with CREATE TABLE ... SELECT function().

  • mysqld now has the option --temp-pool enabled by default as this gives better performance with some operating systems.

  • Fixed problem with too many allocated alarms on slave when connecting to master many times (normally not a very critical error).

  • Fixed hang in CHANGE MASTER TO if the slave thread died very quickly.

  • Big cleanup in replication code (less logging, better error messages, etc..)

  • If the --code-file option is specified, the server calls setrlimit() to set the maximum allowed core file size to unlimited, so core files can be generated.

  • Fixed bug in query cache after temporary table creation.

  • Added --count=N (-c) option to mysqladmin, to make the program do only N iterations. To be used with --sleep (-i). Useful in scripts.

  • Fixed bug in multi-table UPDATE: when updating a table, do_select() became confused about reading records from a cache.

  • Fixed bug in multi-table UPDATE when several fields were referenced from a single table

  • Fixed bug in truncating nonexisting table.

  • Fixed bug in REVOKE that caused user resources to be randomly set.

  • Fixed bug in GRANT for the new CREATE TEMPORARY TABLE privilege.

  • Fixed bug in multi-table DELETE when tables are re-ordered in the table initialisation method and ref_lengths are of different sizes.

  • Fixed two bugs in SELECT DISTINCT with large tables.

  • Fixed bug in query cache initialisation with very small query cache size.

  • Allow DEFAULT with INSERT statement.

  • The startup parameters myisam_max_sort_file_size and myisam_max_extra_sort_file_size are now given in bytes, not megabytes.

  • External system locking of MyISAM/ISAM files is now turned off by default. One can turn this on with --external-locking. (For most users this is never needed).

  • Fixed core dump bug with INSERT ... SET db_name.table_name.colname=''.

  • Fixed client hangup bug when using some SQL commands with incorrect syntax.

  • Fixed a timing bug in DROP DATABASE

  • New SET [GLOBAL | SESSION] syntax to change thread-specific and global server variables at runtime.

  • Added variable slave_compressed_protocol.

  • Renamed variable query_cache_startup_type to query_cache_type, myisam_bulk_insert_tree_size to bulk_insert_buffer_size, record_buffer to read_buffer_size and record_rnd_buffer to read_rnd_buffer_size.

  • Renamed some SQL variables, but old names will still work until 5.0. Veja mais informações sobre isto na Seção 2.5.2, “Atualizando da Versão 3.23 para 4.0”.

  • Renamed --skip-locking to --skip-external-locking.

  • Removed unused variable query_buffer_size.

  • Fixed a bug that made the pager option in the mysql client non-functional.

  • Added full AUTO_INCREMENT support to MERGE tables.

  • Extended LOG() function to accept an optional arbitrary base parameter. Veja mais informações sobre isto na Seção 6.3.3.2, “Funções Matematicas”.

  • Added LOG2() function (useful for finding out how many bits a number would require for storage).

  • Added LN() natural logarithm function for compatibility with other databases. It is synonymous with LOG(X).

D.3.16. Alterações na distribuição 4.0.2 (01 Jul 2002)

  • Cleaned up NULL handling for default values in DESCRIBE table_name.

  • Fixed truncate() to round up negative values to the nearest integer.

  • Changed --chroot=path option to execute chroot() immediately after all options have been parsed.

  • Don't allow database names that contain ‘\’.

  • lower_case_table_names now also affects database names.

  • Added XOR operator (logical and bitwise XOR) with ^ as a synonym for bitwise XOR.

  • Added function IS_FREE_LOCK("lock_name"). Based on code contributed by Hartmut Holzgraefe .

  • Removed mysql_ssl_clear() from C API, as it was not needed.

  • DECIMAL and NUMERIC types can now read exponential numbers.

  • Added SHA1() function to calculate 160 bit hash value as described in RFC 3174 (Secure Hash Algorithm). This function can be considered a cryptographically more secure equivalent of MD5(). Veja mais informações sobre isto na Seção 6.3.6.2, “Funções Diversas”.

  • Added AES_ENCRYPT() and AES_DECRYPT() functions to perform encryption according to AES standard (Rijndael). Veja mais informações sobre isto na Seção 6.3.6.2, “Funções Diversas”.

  • Added --single-transaction option to mysqldump, allowing a consistent dump of InnoDB tables. Veja mais informações sobre isto na Seção 4.9.7, “mysqldump, Descarregando a Estrutura de Tabelas e Dados”.

  • Fixed bug in innodb_log_group_home_dir in SHOW VARIABLES.

  • Fixed a bug in optimiser with merge tables when non-unique values are used in summing up (causing crashes).

  • Fixed a bug in optimiser when a range specified makes index grouping impossible (causing crashes).

  • Fixed a rare bug when FULLTEXT index is present and no tables are used.

  • Added privileges CREATE TEMPORARY TABLES, EXECUTE, LOCK TABLES, REPLICATION CLIENT, REPLICATION SLAVE, SHOW DATABASES and SUPER. To use these, you must have run the mysql_fix_privilege_tables script after upgrading.

  • Fixed query cache align data bug.

  • Fixed mutex bug in replication when reading from master fails.

  • Added missing mutex in TRUNCATE TABLE; This fixes some core dump/hangup problems when using TRUNCATE TABLE.

  • Fixed bug in multiple-table DELETE when optimiser uses only indexes.

  • Fixed that ALTER TABLE table_name RENAME new_table_name is as fast as RENAME TABLE.

  • Fixed bug in GROUP BY with two or more fields, where at least one field can contain NULL values.

  • Use Turbo Boyer-Moore algorithm to speed up LIKE "%keyword%" searches.

  • Fixed bug in DROP DATABASE with symlink.

  • Fixed crash in REPAIR ... USE_FRM.

  • Fixed bug in EXPLAIN with LIMIT offset != 0.

  • Fixed bug in phrase operator "..." in boolean full-text search.

  • Fixed bug that caused duplicated rows when using truncation operator * in boolean full-text search.

  • Fixed bug in truncation operator of boolean full-text search (incorrect results when there are only +word*s in the query).

  • Fixed bug in boolean full-text search that caused a crash when an identical MATCH expression that did not use an index appeared twice.

  • Query cache is now automatically disabled in mysqldump.

  • Fixed problem on Windows 98 that made sending of results very slow.

  • Boolean full-text search weighting scheme changed to something more reasonable.

  • Fixed bug in boolean full-text search that caused MySQL to ignore queries of ft_min_word_len characters.

  • Boolean full-text search now supports ``phrase searches''.

  • New configure option --without-query-cache.

  • Memory allocation strategy for ``root memory'' changed. Block size now grows with number of allocated blocks.

  • INET_NTOA() now returns NULL if you give it an argument that is too large (greater than the value corresponding to 255.255.255.255).

  • Fix SQL_CALC_FOUND_ROWS to work with UNIONs. It will work only if the first SELECT has this option and if there is global LIMIT for the entire statement. For the moment, this requires using parentheses for individual SELECT queries within the statement.

  • Fixed bug in SQL_CALC_FOUND_ROWS and LIMIT.

  • Don't give an error for CREATE TABLE ...(... VARCHAR(0)).

  • Fixed SIGINT and SIGQUIT problems in mysql.cc on Linux with some glibc versions.

  • Fixed bug in convert.cc, which is caused by having an incorrect net_store_length() linked in the CONVERT::store() method.

  • DOUBLE and FLOAT columns now honor the UNSIGNED flag on storage.

  • InnoDB now retains foreign key constraints through ALTER TABLE and CREATE/DROP INDEX.

  • InnoDB now allows foreign key constraints to be added through the ALTER TABLE syntax.

  • InnoDB tables can now be set to automatically grow in size (autoextend).

  • Added --ignore-lines=n option to mysqlimport. This has the same effect as the IGNORE n LINES clause for LOAD DATA.

  • Fixed bug in UNION with last offset being transposed to total result set.

  • REPAIR ... USE_FRM added.

  • Fixed that DEFAULT_SELECT_LIMIT is always imposed on UNION result set.

  • Fixed that some SELECT options can appear only in the first SELECT.

  • Fixed bug with LIMIT with UNION, where last select is in the braces.

  • Fixed that full-text works fine with UNION operations.

  • Fixed bug with indexless boolean full-text search.

  • Fixed bug that sometimes appeared when full-text search was used with const tables.

  • Fixed incorrect error value when doing a SELECT with an empty HEAP table.

  • Use ORDER BY column DESC now sorts NULL values first. (In other words, NULL values sort first in all cases, whether or not DESC is specified.) This is changed back in 4.0.10.

  • Fixed bug in WHERE key_name='constant' ORDER BY key_name DESC.

  • Fixed bug in SELECT DISTINCT ... ORDER BY DESC optimization.

  • Fixed bug in ... HAVING 'GROUP_FUNCTION'(xxx) IS [NOT] NULL.

  • Fixed bug in truncation operator for boolean full-text search.

  • Allow value of --user=# option for mysqld to be specified as a numeric user ID.

  • Fixed a bug where SQL_CALC_ROWS returned an incorrect value when used with one table and ORDER BY and with InnoDB tables.

  • Fixed that SELECT 0 LIMIT 0 doesn't hang thread.

  • Fixed some problems with USE/IGNORE INDEX when using many keys with the same start column.

  • Don't use table scan with BerkeleyDB and InnoDB tables when we can use an index that covers the whole row.

  • Optimized InnoDB sort-buffer handling to take less memory.

  • Fixed bug in multi-table DELETE and InnoDB tables.

  • Fixed problem with TRUNCATE and InnoDB tables that produced the error Can't execute the given command because you have active locked tables or an active transaction.

  • Added NO_UNSIGNED_SUBTRACTION to the set of flags that may be specified with the --sql-mode option for mysqld. It disables unsigned arithmetic rules when it comes to subtraction. (This will make MySQL 4.0 behave more like 3.23 with UNSIGNED columns).

  • The result returned for all bit functions (|, <<, ...) is now of type unsigned integer.

  • Added detection of nan values in MyISAM to make it possible to repair tables with nan in float or double columns.

  • Fixed new bug in myisamchk where it didn't correctly update number of ``parts'' in the MyISAM index file.

  • Changed to use autoconf 2.52 (from autoconf 2.13).

  • Fixed optimization problem where the MySQL Server was in ``preparing'' state for a long time when selecting from an empty table which had contained a lot of rows.

  • Fixed bug in complicated join with const tables. This fix also improves performance a bit when referring to another table from a const table.

  • First pre-version of multi-table UPDATE statement.

  • Fixed bug in multi-table DELETE.

  • Fixed bug in SELECT CONCAT(argument_list) ... GROUP BY 1.

  • INSERT ... SELECT did a full rollback in case of an error. Fixed so that we only roll back the last statement in the current transaction.

  • Fixed bug with empty expression for boolean full-text search.

  • Fixed core dump bug in updating full-text key from/to NULL.

  • ODBC compatibility: Added BIT_LENGTH() function.

  • Fixed core dump bug in GROUP BY BINARY column.

  • Added support for NULL keys in HEAP tables.

  • Use index for ORDER BY in queries of type: SELECT * FROM t WHERE key_part1=1 ORDER BY key_part1 DESC,key_part2 DESC

  • Fixed bug in FLUSH QUERY CACHE.

  • Added CAST() and CONVERT() functions. The CAST and CONVERT functions are nearly identical and mainly useful when you want to create a column with a specific type in a CREATE ... SELECT statement. For more information, read Seção 6.3.5, “Funções de Conversão”.

  • CREATE ... SELECT on DATE and TIME functions now create columns of the expected type.

  • Changed order in which keys are created in tables.

  • Added new columns Null and Index_type to SHOW INDEX output.

  • Added --no-beep and --prompt options to mysql command-line client.

  • New feature: management of user resources.

    GRANT ... WITH MAX_QUERIES_PER_HOUR N1
    MAX_UPDATES_PER_HOUR N2
    MAX_CONNECTIONS_PER_HOUR N3;
    

    Veja mais informações sobre isto na Seção 4.4.7, “Limitando os Recursos dos Utilizadores”.

  • Added mysql_secure_installation to the scripts/ directory.

D.3.17. Alterações na distribuição 4.0.1 (23 Dec 2001)

  • Added system command to mysql.

  • Fixed bug when HANDLER was used with some unsupported table type.

  • mysqldump now puts ALTER TABLE tbl_name DISABLE KEYS and ALTER TABLE tbl_name ENABLE KEYS in the sql dump.

  • Added mysql_fix_extensions script.

  • Fixed stack overrun problem with LOAD DATA FROM MASTER on OSF/1.

  • Fixed shutdown problem on HP-UX.

  • Added DES_ENCRYPT() and DES_DECRYPT() functions.

  • Added FLUSH DES_KEY_FILE statement.

  • Added --des-key-file option to mysqld.

  • HEX(string) now returns the characters in string converted to hexadecimal.

  • Fixed problem with GRANT when using lower_case_table_names=1.

  • Changed SELECT ... IN SHARE MODE to SELECT ... LOCK IN SHARE MODE (as in MySQL 3.23).

  • A new query cache to cache results from identical SELECT queries.

  • Fixed core dump bug on 64-bit machines when it got an incorrect communication packet.

  • MATCH ... AGAINST(... IN BOOLEAN MODE) can now work without FULLTEXT index.

  • Fixed slave to replicate from 3.23 master.

  • Miscellaneous replication fixes/cleanup.

  • Got shutdown to work on Mac OS X.

  • Added myisam/ft_dump utility for low-level inspection of FULLTEXT indexes.

  • Fixed bug in DELETE ... WHERE ... MATCH ....

  • Added support for MATCH ... AGAINST(... IN BOOLEAN MODE). Note: you must rebuild your tables with ALTER TABLE tablename TYPE=MyISAM to be able to use boolean full-text search.

  • LOCATE() and INSTR() are now case-sensitive if either argument is a binary string.

  • Changed RAND() initialisation so that RAND(N) and RAND(N+1) are more distinct.

  • Fixed core dump bug in UPDATE ... ORDER BY.

  • In 3.23, INSERT INTO ... SELECT always had IGNORE enabled. Now MySQL will stop (and possibly roll back) by default in case of an error unless you specify IGNORE.

  • Ignore DATA DIRECTORY and INDEX DIRECTORY directives on Windows.

  • Added boolean full-text search code. It should be considered early alpha.

  • Extended MODIFY and CHANGE in ALTER TABLE to accept the FIRST and AFTER keywords.

  • Indexes are now used with ORDER BY on a whole InnoDB table.

D.3.18. Alterações na distribuição 4.0.0 (Oct 2001: Alpha)

  • Added --xml option to mysql for producing XML output.

  • Added full-text variables ft_min_word_len, ft_max_word_len, and ft_max_word_len_for_sort.

  • Added documentation for libmysqld, the embedded MySQL server library. Also added example programs (a mysql client and mysqltest test program) which use libmysqld.

  • Removed all Gemini hooks from MySQL server.

  • Removed my_thread_init() and my_thread_end() from mysql_com.h, and added mysql_thread_init() and mysql_thread_end() to mysql.h.

  • Support for communication packets > 16M. In 4.0.1 we will extend MyISAM to be able to handle these.

  • Secure connections (with SSL).

  • Unsigned BIGINT constants now work. MIN() and MAX() now handle signed and unsigned BIGINT numbers correctly.

  • New character set latin1_de which provides correct German sorting.

  • STRCMP() now uses the current character set when doing comparisons, which means that the default comparison behaviour now is case-insensitive.

  • TRUNCATE TABLE and DELETE FROM tbl_name are now separate functions. One bonus is that DELETE FROM tbl_name now returns the number of deleted rows, rather than zero.

  • DROP DATABASE now executes a DROP TABLE on all tables in the database, which fixes a problem with InnoDB tables.

  • Added support for UNION.

  • Added support for multi-table DELETE operations.

  • A new HANDLER interface to MyISAM tables.

  • Added support for INSERT on MERGE tables. Patch from Benjamin Pflugmann.

  • Changed WEEK(date,0) to match the calendar in the USA.

  • COUNT(DISTINCT) is about 30% faster.

  • Speed up all internal list handling.

  • Speed up IS NULL, ISNULL() and some other internal primitives.

  • Full-text index creation now is much faster.

  • Tree-like cache to speed up bulk inserts and myisam_bulk_insert_tree_size variable.

  • Searching on packed (CHAR/VARCHAR) keys is now much faster.

  • Optimized queries of type: SELECT DISTINCT * from tbl_name ORDER by key_part1 LIMIT row_count.

  • SHOW CREATE TABLE now shows all table attributes.

  • ORDER BY ... DESC can now use keys.

  • LOAD DATA FROM MASTER ``automatically'' sets up a slave.

  • Renamed safe_mysqld to mysqld_safe to make this name more in line with other MySQL scripts/commands.

  • Added support for symbolic links to MyISAM tables. Symlink handling is now enabled by default for Windows.

  • Added SQL_CALC_FOUND_ROWS and FOUND_ROWS(). This makes it possible to know how many rows a query would have returned without a LIMIT clause.

  • Changed output format of SHOW OPEN TABLES.

  • Allow SELECT expression LIMIT ....

  • Added ORDER BY syntax to UPDATE and DELETE.

  • SHOW INDEXES is now a synonym for SHOW INDEX.

  • Added ALTER TABLE tbl_name DISABLE KEYS and ALTER TABLE tbl_name ENABLE KEYS commands.

  • Allow use of IN as a synonym for FROM in SHOW commands.

  • Implemented ``repair by sort'' for FULLTEXT indexes. REPAIR TABLE, ALTER TABLE, and OPTIMIZE TABLE for tables with FULLTEXT indexes are now up to 100 times faster.

  • Allow SQL-99 syntax X'hexadecimal-number'.

  • Cleaned up global lock handling for FLUSH TABLES WITH READ LOCK.

  • Fixed problem with DATETIME = constant in WHERE optimization.

  • Added --master-data and --no-autocommit options to mysqldump. (Thanks to Brian Aker for this.)

  • Added script mysql_explain_log.sh to distribution. (Thanks to mobile.de).