Note: This build passes our test suite and fixes a lot of reported bugs found in the previous 5.0.0 release. However, please be aware that this is not a “standard MySQL build” in the sense that there are still some open critical bugs in our bugs database at http://bugs.mysql.com/ that affect this release as well. We are actively fixing these and will make a new release where these are fixed as soon as possible. However, this binary should be a good candidate for testing new MySQL 5.0 features for future products.
Functionality added or changed:
          Warning: Incompatible change!
          C API change: mysql_shutdown() now requires
          a second argument. This is a source-level incompatibility that
          affects how you compile client programs; it does not affect
          the ability of compiled clients to communicate with older
          servers. See Sección 24.2.3.56, “mysql_shutdown()”.
        
          When installing a MySQL server as a Windows service, the
          installation command can include a
          --local-service option following the service
          name to cause the server to run using the
          LocalService Windows account that has
          limited privileges. This is in addition to the
          --defaults-file option that also can be given
          following the service name.
        
Added support for read-only and updatable views based on a single table or other updatable views. View use requires that you upgrade your grant tables to add the view-related privileges. See Sección 2.10.2, “Aumentar la versión de las tablas de privilegios”.
          Implemented a new “greedy search” optimizer that
          can significantly reduce the time spent on query optimization
          for some many-table joins. (You are affected if not only some
          particular SELECT is slow, but even using
          EXPLAIN for it takes a noticeable amount of
          time.) Two new system variables,
          optimizer_search_depth and
          optimizer_prune_level, can be used to
          fine-tune optimizer behavior.
        
A stored procedure is no longer “global.” That is, it now belongs to a specific database:
When a database is dropped, all routines belonging to that database are also dropped.
              Procedure names may be qualified, for example,
              db.p()
            
              When executed from another database, an implicit
              USE 
              is in effect.
            db_name
              Explicit USE
               statements no
              longer are allowed in a stored procedure.
            db_name
          Fixed SHOW TABLES output field name and
          values according to standard. Field name changed from
          Type to table_type,
          values are BASE TABLE,
          VIEW and ERROR. (Bug#4603)
        
          Added the sql_updatable_view_key system
          variable.
        
          Added the --replicate-same-server-id server
          option.
        
          Added Last_query_cost status variable that
          reports optimizer cost for last compiled query.
        
          Added the --to-last-log option to
          mysqlbinlog, for use in conjunction with
          --read-from-remote-server.
        
          Added the --innodb-safe-binlog server option,
          which adds consistency guarantees between the content of
          InnoDB tables and the binary log. See
          Sección 5.10.3, “El registro binario (Binary Log)”.
        
          OPTIMIZE TABLE for
          InnoDB tables is now mapped to
          ALTER TABLE instead of ANALYZE
          TABLE. This rebuilds the table, which updates index
          statistics and frees space in the clustered index.
        
          sync_frm is now a settable global variable
          (not only a startup option).
        
          For replication of MEMORY
          (HEAP) tables: Made the master
          automatically write a DELETE FROM statement
          to its binary log when a MEMORY table is
          opened for the first time since master's startup. This is for
          the case where the slave has replicated a non-empty
          MEMORY table, then the master is shut down
          and restarted: the table is now empty on master; the
          DELETE FROM empties it on slave too. Note
          that even with this fix, between the master's restart and the
          first use of the table on master, the slave still has
          out-of-date data in the table. But if you use the
          --init-file option to populate the
          MEMORY table on the master at startup, it
          ensures that the failing time interval is zero. (Bug#2477)
        
          When a session having open temporary tables terminates, the
          statement automatically written to the binary log is now
          DROP TEMPORARY TABLE IF EXISTS instead of
          DROP TEMPORARY TABLE, for more robustness.
        
          The MySQL server now returns an error if SET
          SQL_LOG_BIN is issued by a user without the
          SUPER privilege (in previous versions it
          just silently ignored the statement in this case).
        
          Changed that when the MySQL server has binary logging disabled
          (that is, no --log-bin option was used), then
          no transaction binary log cache is allocated for connections.
          This should save binlog_cache_size bytes of
          memory (32KB by default) for every connection.
        
          Added the sync_binlog=N global variable and
          startup option, which makes the MySQL server synchronize its
          binary log to disk (fdatasync()) after
          every Nth write to the binary log.
        
          Changed the slave SQL thread to print less useless error
          messages (no more message duplication; no more messages when
          an error is skipped because of
          slave-skip-errors).
        
          DROP DATABASE IF EXISTS, DROP
          TABLE IF EXISTS, single-table
          DELETE, and single-table
          UPDATE now are written to the binary log
          even if they changed nothing on the master (for example, even
          if a DELETE matched no rows). The old
          behavior sometimes caused bad surprises in replication setups.
        
Replication and mysqlbinlog now have better support for the case that the session character set and collation variables are changed within a given session. See Sección 6.7, “Características de la replicación y problemas conocidos”.
          Killing a CHECK TABLE statement does not
          result in the table being marked as “corrupted”
          any more; the table remains as if CHECK
          TABLE had not even started. See
          Sección 13.5.5.3, “Sintaxis de KILL”.
        
Bugs fixed:
          Strange results with index (x, y) ... WHERE
          x= (Bug#3155)
        val_1 AND
          y>=val_2 ORDER BY
          pk;
Subquery and order by (Bug#3118)
          ALTER DATABASE caused the client to hang if
          the database did not exist. (Bug#2333)
        
          SLAVE START (which is a deprecated syntax,
          START SLAVE should be used instead) could
          crash the slave. (Bug#2516)
        
          Multiple-table DELETE statements were never
          replicated by the slave if there were any
          --replicate-*-table options. (Bug#2527)
        
          The MySQL server did not report any error if a statement
          (submitted through mysql_real_query() or
          mysql_stmt_prepare()) was terminated by
          garbage characters. This can happen if you pass a wrong
          length parameter to these functions. The
          result was that the garbage characters were written into the
          binary log. (Bug#2703)
        
          Replication: If a client connects to a slave server and issues
          an administrative statement for a table (for example,
          OPTIMIZE TABLE or REPAIR
          TABLE), this could sometimes stop the slave SQL
          thread. This does not lead to any corruption, but you must use
          START SLAVE to get replication going again.
          (Bug#1858)
        
          Made clearer the error message that one gets when an update is
          refused because of the --read-only option.
          (Bug#2757)
        
          Fixed that --replicate-wild-*-table rules
          apply to ALTER DATABASE when the table
          pattern is %, as is the case for
          CREATE DATABASE and DROP
          DATABASE. (Bug#3000)
        
          Fixed that when a Rotate event is found by
          the slave SQL thread in the middle of a transaction, the value
          of Relay_Log_Pos in SHOW SLAVE
          STATUS remains correct. (Bug#3017)
        
          Corrected the master's binary log position that
          InnoDB reports when it is doing a crash
          recovery on a slave server. (Bug#3015)
        
          Changed the column Seconds_Behind_Master in
          SHOW SLAVE STATUS to never show a value of
          -1. (Bug#2826)
        
          Changed that when a DROP TEMPORARY TABLE
          statement is automatically written to the binary log when a
          session ends, the statement is recorded with an error code of
          value zero (this ensures that killing a
          SELECT on the master does not result in a
          superfluous error on the slave). (Bug#3063)
        
          Changed that when a thread handling INSERT
          DELAYED (also known as a
          delayed_insert thread) is killed, its
          statements are recorded with an error code of value zero
          (killing such a thread does not endanger replication, so we
          thus avoid a superfluous error on the slave). (Bug#3081)
        
          Fixed deadlock when two START SLAVE
          commands were run at the same time. (Bug#2921)
        
          Fixed that a statement never triggers a superfluous error on
          the slave, if it must be excluded given the
          --replicate-* options. The bug was that if
          the statement had been killed on the master, the slave would
          stop. (Bug#2983)
        
          The --local-load option of
          mysqlbinlog now requires an argument.
        
          Fixed a segmentation fault when running LOAD DATA
          FROM MASTER after RESET SLAVE.
          (Bug#2922)
        
          mysqlbinlog --read-from-remote-server read
          all binary logs following the one that was requested. It now
          stops at the end of the requested file, the same as it does
          when reading a local binary log. There is an option
          --to-last-log to get the old behavior. (Bug#3204)
        
Fixed mysqlbinlog --read-from-remote-server to print the exact positions of events in the "at #" lines. (Bug#3214)
          Fixed a rare error condition that caused the slave SQL thread
          spuriously to print the message Binlog has bad magic
          number and stop when it was not necessary to do so.
          (Bug#3401)
        
          Fixed mysqlbinlog not to forget to print a
          USE statement under rare circumstances
          where the binary log contained a LOAD DATA
          INFILE statement. (Bug#3415)
        
          Fixed a memory corruption when replicating a LOAD
          DATA INFILE when the master had version 3.23. (Bug#3422)
        
          Multiple-table DELETE statements were
          always replicated by the slave if there were some
          --replicate-*-ignore-table options and no
          --replicate-*-do-table options. (Bug#3461)
        
          Fixed a crash of the MySQL slave server when it was built with
          --with-debug and replicating itself. (Bug#3568)
        
Fixed that in some replication error messages, a very long query caused the rest of the message to be invisible (truncated), by putting the query last in the message. (Bug#3357)
          If server-id was not set using startup
          options but with SET GLOBAL, the
          replication slave still complained that it was not set. (Bug#3829)
        
          mysql_fix_privilege_tables didn't correctly
          handle the argument of its --password=#
          option. (Bug#4240)
        
          Fixed potential memory overrun in
          mysql_real_connect() (which required a
          compromised DNS server and certain operating systems). (Bug#4017, CVE-2004-0836)
        
          During the installation process of the server RPM on Linux,
          mysqld was run as the
          root system user, and if you had
          --log-bin=
          it created binary log files owned by somewhere_out_of_var_lib_mysqlroot
          in this directory, which remained owned by
          root after the installation. This is now
          fixed by starting mysqld as the
          mysql system user instead. (Bug#4038)
        
          Made DROP DATABASE honor the value of
          lower_case_table_names. (Bug#4066)
        
          The slave SQL thread refused to replicate INSERT ...
          SELECT if it examined more than 4 billion rows. (Bug#3871)
        
mysqlbinlog didn't escape the string content of user variables, and did not deal well when these variables were in non-ASCII character sets; this is now fixed by always printing the string content of user variables in hexadecimal. The character set and collation of the string is now also printed. (Bug#3875)
          Fixed incorrect destruction of expression that led to a server
          crash on complex AND/OR
          expressions if query was ignored (either by a replication
          server because of --replicate-*-table rules,
          or by any MySQL server because of a syntax error). (Bug#3969,
          Bug#4494)
        
          If CREATE TEMPORARY TABLE t SELECT failed
          while loading the data, the temporary table was not dropped.
          (Bug#4551)
        
          Fixed that when a multiple-table DROP TABLE
          failed to drop a table on the master server, the error code
          was not written to the binary log. (Bug#4553)
        
          When the slave SQL thread was replicating a LOAD DATA
          INFILE statement, it didn't show the statement in
          the output of SHOW PROCESSLIST. (Bug#4326)
        
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

