MySQL Lists are EOL. Please join:

List:General Discussion« Previous MessageNext Message »
From:Bjorn Munch Date:October 22 2015 8:36am
Subject:MySQL Community Server 5.7.9 (GA) has been released (part 2/2)
View as plain text  
[This is part 2 of the announcement]

   Bugs Fixed, cont.

     * Replication: The group replication applier channel does
       not support DATABASE as the slave_parallel_type; when
       group replication is started, this is checked for
       explicitly, and handled correctly. However, it remained
       possible to change this value indirectly at a later point
       in time by increasing the value of slave_parallel_workers
       while the slave SQL thread was stopped, which caused the
       applier to fail with an error. To fix this problem, the
       slave_parallel_type for the group_replication_applier is
       now checked to make sure that it is set to LOGICAL_CLOCK
       whenever the number of slave_parallel_workers is set
       greater then 0, and not merely when group replication is
       first started. (Bug #21798804)

     * Replication: As binlog_error_action=ABORT_SERVER is the
       default in MySQL 5.7.7 and later it is being used for
       more error situations. The behavior has been adjusted to
       generate a core dump to improve troubleshooting
       possibilities. (Bug #21486161, Bug #77738)

     * Replication: At runtime, some Gtid_set objects could be
       instrumented with a performance schema mutex key equal to
       0 (which is invalid), due to its use as the effective
       default value when the mutex key was not actually
       supplied. This allowed these objects to be created
       without a valid key, which led to further issues when
       using them. (Bug #21485997)

     * Replication: When running the server with gtid_mode=ON, a
       DELETE from a MEMORY table following a restart was not
       written to the binary log correctly. (Bug #21045848)

     * Replication: The locking behavior of replication
       administration statements has changed to make SHOW SLAVE
       STATUS more concurrent. This makes the NONBLOCKING clause
       redundant for SHOW SLAVE STATUS and it has been removed.
       (Bug #20593028)

       errors were not reported using the correct format. (Bug

     * Replication: When the dump thread was killed while
       dumping an inactive binary log, some events in this log
       could be skipped and thus not replicated. (Bug #78337,
       Bug #21816399)
       References: See also Bug #74607, Bug #19975697.

     * Replication: XA transactions could cause an assert
       condition on XA COMMIT; this was happening because the
       internal transaction state was not reset between XA
       PREPARE and XA COMMIT or XA ROLLBACK, due to the fact
       that these operations constitute separate transactions
       under XA. In addition, XA ROLLBACK statements were not
       handled properly in some cases. (Bug #78264, Bug

     * Replication: The interface between the Group Replication
       plugin and the Performance Schema engine made use of a
       type of memory allocation which was passed to the server,
       and was a potential source of problems when passing
       information between the plugin and performance_schema
       tables. The implementation for this interface has been
       reworked so as to avoid performing this type of memory
       allocation when sharing data. (Bug #78263, Bug #21755699)

     * Replication: The MTS submode set for each channel was
       ignored by the worker threads, which continued to read
       and use the global flag set for all slave channels. This
       could lead to errors when the coordinator was of one type
       and its workers of another. (Bug #77763, Bug #21464737)

     * Replication: Replication slaves could fail for having
       insufficient privileges when they had been granted only
       the REPLICATION SLAVE privilege. (Bug #77732, Bug

     * Replication: The status variable Slave_open_temp_tables
       keeps track of the number of temporary tables that are
       opened by the replication slave. If multi-source
       replication is enabled, it is the total number of
       temporary tables for all channels. This fix addresses the
       following issues relating to this variable:

          + RESET SLAVE FOR CHANNEL channel forced the value of
            Slave_open_temp_tables to 0; in the event that some
            other replication channel had open temporary tables
            which were later dropped, the value wrapped around
            to a large negative value (1 - 2^32). This also
            caused spurious or missed warnings when issuing a
            STOP SLAVE or CHANGE MASTER TO statement.

          + The internal function that modifies
            Slave_open_temp_tables in such cases relied on two
            incorrect assumptions:

              1. That the variable is updated by only one thread
                 when multi-threaded slaves are not enabled,
                 which is not true in the case of multi-source
                 That non-atomic operations are safe with a
                 single writer and multiple readers, which is
                 not necessarily true for some platforms
                 supported by MySQL.
       (Bug #77585, Bug #21357008)

     * Replication: The warning '@@session.gtid_executed' is
       deprecated and will be removed in a future release. was
       printed even when the session variable gtid_executed was
       not included in the result of a query. In addition, the
       result of SELECT @@session.gtid_executed included a
       duplicate warning. Both issues occurred because the
       warning was printed whenever the value of gtid_executed
       was accessed by a statement, such access occurring as a
       matter of course, whether or not a given variable is
       actually included in the result.
       To fix this issue, we make handling of
       @@session.gtid_executed consistent with how the
       also-deprecated variable @@global.sql_log_bin is treated
       in such cases, by making the following changes:

          + gtid_executed is no longer included in the
            performance_schema.session_variables table.

          + gtid_executed is still included in the
            information_schema.session_variables table, but when
            show_compatibility_56 = ON, the warning is not
            issued when querying the session_variables table, or
            when issuing SHOW VARIABLES or SHOW SESSION
            VARIABLES, even when using a matching LIKE clause
            with either of the SHOW statements.
       The warning is still issued by a statement such as SELECT
       @@session.gtid_executed which accesses the value of the
       variable directly. (Bug #77574, Bug #21354712)
       References: See also Bug #75980, Bug #20575529, Bug
       #76626, Bug #20854952.

     * Replication: When a transaction consisting of a single
       statement with a specified GTID failed in autocommit
       mode, its GTID was not released when rolling it back when
       binary logging was disabled. (Bug #77521, Bug #21338147)

     * Replication: The slave group event parser did not
       properly register an XA_ROLLBACK event as a transaction
       boundary. (Bug #77392, Bug #21273010)
       References: See also Bug #20920851.

     * Replication: mysqlbinlog printed a ROLLBACK statement at
       the end of the binary log file, which when played back
       failed with error 1782 @@SESSION.GTID_NEXT cannot be set
       to ANONYMOUS when @@GLOBAL.GTID_MODE = ON. This occurred
       when the binary log file did not include any data related
       events, or when the relay log file included a
       Format_description_log_event that had been generated on
       the master at server startup.
       The fix for this issue causes a relay log's
       Format_description_log_event to do nothing if it is
       applied by a BINLOG statement, and stops a ROLLBACK from
       setting gtid_next to ANONYMOUS when the state of
       gtid_next has not yet been determined by a subsequent
       event. (Bug #76887, Bug #20980932)

     * Replication: SAVEPOINT and ROLLBACK TO SAVEPOINT within a
       trigger led to an assertion. (Bug #76727, Bug #20901025)

     * Replication: While a SHOW BINLOG EVENTS statement was
       executing, any parallel transaction was blocked. The fix
       ensures that the SHOW BINLOG EVENTS process now only
       acquires a lock for the duration of calculating the
       file's end position, therefore parallel transactions are
       not blocked for long durations. (Bug #76618, Bug

     * Replication: If a CREATE VIEW statement failed, it was
       being incorrectly written to the binary log even though
       it did not result in the creation of a partial view. The
       fix ensures that such statements are not recorded in the
       binary log. Additionally it was found that when a
       statement which had failed on a master was received by a
       slave with an expected error, if the statement was
       skipped on the slave, for example due to a replication
       filter, the expected error was being compared with the
       actual error that happened on the slave. The fix ensures
       that if a statement with an expected error is received by
       a slave, if the statement has not been filtered, only
       then is it compared with the actual error that happened
       on the slave. (Bug #76493, Bug #20797764)

     * Replication: The action specified for binlog_error_action
       was not always honored correctly after a hardware failure
       occurred during log rotation. (Bug #76379, Bug #20805298)

     * Replication: When using MySQL 5.7.6 and later with
       binlog_format=row and gtid_mode=off, if CREATE ... SELECT
       was killed during execution it could lead to an
       inconsistent state, breaking replication. The cause was
       that in MySQL 5.7.6 the way CREATE ... SELECT was logged
       was changed, so that a commit was introduced between the
       CREATE TABLE and SELECT steps. The fix ensures that
       CREATE ... SELECT does not commit in the middle of the
       transaction when binlog_format=row. (Bug #76320, Bug
       #77098, Bug #20742519, Bug #21114464)

     * Replication: Modifying the master_info_repository or
       relay_log_info_repository inside a transaction and later
       rolling back that transaction left the repository in an
       unusable state. We fix this by preventing any
       modification of these repositories inside a transaction.
       (Bug #74950, Bug #20074353)

     * Replication: Transactions added to gtid_executed using
       SET gtid_purged were not taken into account by
       WAIT_FOR_EXECUTED_GTID_SET() until a subsequent
       transaction was committed by a client or slave thread.
       (Bug #73838, Bug #19579811)

     * Replication: When the running with
       --relay-log-info-repository=TABLE, the
       mysql.slave_relay_log_info table is updated when a
       transaction is committed or when a flush is performed
       explicitly, such during relay log rotation. If a
       transaction that uses any nontransactional tables (such
       as MyISAM tables) is split across multiple relay logs, it
       is partially committed on relay log flush. When
       gtid_mode=ON, this caused the same GTID to be used for
       the remaining portion of the transaction, which raised an
       We fix this issue by postponing in such cases the update
       of the relay log information repository that normally
       occurs on relay log rotation until the commit for the
       transaction in question has been executed.
       This issue did not affect tables using transactional
       storage engines such as InnoDB. (Bug #68525, Bug

     * For an index-only scan over an indexed generated column,
       the server could do random calculations; the random
       results were not exposed to the user, but Valgrind
       warnings could occur, and the server could exit when
       calculations involved functions which did not expect such
       incorrect data. (Bug #21833760)

     * Although the use of JSON values with GREATEST() or
       LEAST() is not currently supported, the server did not
       handle attempts to do so correctly, leading to an assert
       (Linux) or exit() call (Windows) in debug builds. Now
       when you try to use JSON values with either of these
       functions, the server emits a suitable warning
       (ER_NOT_SUPPORTED_YET). (Bug #21828321)
       References: See also Bug #21383497.

     * For debug builds, a DROP TRIGGER statement could raise an
       assertion if the trigger was defined on a table that
       contained a generated column. (Bug #21824519)

     * A table that included a generated column referencing a
       JSON column in some cases become corrupted, so that a
       subsequent access of the table using a different
       connection caused the server to fail. (Bug #21808680)
       References: See also Bug #21824519, Bug #78408.

     * For tables with VIRTUAL generated columns, an INSERT with
       an empty values list could cause a server exit. (Bug

     * CMake configuration was adjusted to handle new warnings
       reported by Clang 3.7. (Bug #21803314)

     * Using a materialized view defined over a table containing
       generated columns could cause a server exit. (Bug

     * For partitioned InnoDB tables containing a virtual
       generated column, reads from the table could return
       random data for the column. (Bug #21779011)

     * The CMake checks for NUMA availability could cause
       compilation problems on platforms without NUMA support.
       (Bug #21774859)

     * The optimizer did not consider nonfunctional expressions
       such as (a AND b) = 1 when looking for indexed generated
       columns to substitute for the (a AND b) expression. Now
       expressions using the AND and OR logical operators are
       considered. (Bug #21770798)

     * For debug builds, when the optimizer tried to clone
       certain types of keys for a range optimization, an
       assertion was raised. (Bug #21761867)

     * For debug builds, the server could exit when the
       optimizer attempted to estimate the cost for processing
       unique values when there were no keys. (Bug #21697002)

     * An INSERT into a view with a subquery could fail if
       executed as a prepared statement. (Bug #21696206)

     * now has an --valgrind-clients option
       that causes all clients started by .test files to be run
       with valgrind. This option requires valgrind 3.9 or
       In addition, several client memory leak issues were
       fixed. (Bug #21672747)

     * For queries on InnoDB tables for which the optimizer used
       SPATIAL indexes for full index scans, the result was
       empty because such indexes do not support a full scan.
       The optimizer no longer considers SPATIAL indexes as
       candidates for full index scans. (Bug #21663612)

     * For some inputs, ST_Intersection() could return an
       invalid polygon. (Bug #21658453)

     * Added Microsoft Visual Studio 2015 support. Changes
       include using the native (added in VS 2015) timespec
       library if it exists, renamed lfind/lsearch and
       timezone/tzname to avoid redefinition problems, set
       TMPDIR to "" by default as P_tmpdir no longer exists,
       deprecated std::hash_map in favor of std::unordered_map,
       and added Wix Toolset 3.10 support. (Bug #21657078)

     * Spatial functions could simplify geometry values in
       contexts where the value might be used elsewhere in a
       query, producing incorrect results. (Bug #21652012)

     * If ST_ConvexHull() or ST_SRID() were used in a view
       definition, the resulting definition contained
       ST_Convex_Hull() (misspelled) or SRID() (deprecated).
       (Bug #21651588)

     * JSON_TYPE() returned OPAQUE for some binary values that
       it should have identified as BLOB. (Bug #21649073)

     * The mysql client parser incorrectly interpreted optimizer
       hint comments that contained ;, ", ', or ` characters.
       (Bug #21646026)

     * These Version Tokens issues were resolved:

          + version_tokens_delete() now strips whitespace
            surrounding token names in its argument, similar to
            version_tokens_set() and version_tokens_edit().

          + Passing NULL to version_tokens_delete() caused a
            server exit.

          + Passing an argument with an empty token name to to
            version_tokens_set() or version_tokens_edit() caused
            a server exit.

          + Passing NULL as the timeout value to
            version_tokens_lock_exclusive() or
            version_tokens_lock_shared() caused a server exit.
       (Bug #21645001, Bug #21646106, Bug #21645944, Bug

     * For debug builds, enabling the PAD_CHAR_TO_FULL_LENGTH
       SQL mode could cause SHOW FUNCTION STATUS to raise an
       assertion. (Bug #21632425)

     * mysqlpump did not exit with a message for some
       combinations of incompatible options. (Bug #21628662)

     * An assertion could be raised if the optimizer tried to
       create a temporary table based on a prepared statement
       parameter. (Bug #21625929)

     * Executing a prepared statement with multiple nested
       subqueries could raise an assertion. (Bug #21624851)

     * For debug builds, failure of subquery optimization could
       cause an assertion to be raised due to improper error
       handling. (Bug #21621313)

     * Some table and index optimizer hints were lost early in
       statement processing, so query rewrite plugins did not
       have access to them. This could cause incorrect matching
       between incoming statements and statement pattern
       templates. (Bug #21619780)

     * Queries containing nested subqueries combining grouping
       and outer references might cause a server exit. (Bug

     * Passing NULL as the second or third argument to
       ST_AsGeoJSON() could cause the server to stop responding
       to the session or (in debug builds) to raise an
       Giving input to HANDLER READ that could not be converted
       to the correct type could cause the server to stop
       responding to the session or (in debug builds) to raise
       an assertion. (Bug #21616810, Bug #21650603)

     * For debug builds, ST_IsValid(NULL) could raise an
       assertion. (Bug #21616647)

     * For debug builds, an assertion could be raised for
       negative zero values when converting time values to
       decimal. (Bug #21616585)

     * ST_AsWKB() could cause a server exit if given invalid
       data. (Bug #21614368)

     * If an aggregate function was used over a generated column
       that was itself part of a multiple-column index, the
       server could exit. (Bug #21613615)

     * A missing error check during column reference resolution
       could result in an incorrect error message or (in debug
       builds) an assertion being raised. (Bug #21613422)

     * For debug builds, an assertion could be raised in
       Filesort::make_sortorder() for attempts to sort Item_ref
       objects. (Bug #21611270)

     * JSON functions could return incorrect values if a path
       argument was passed as a user-defined variable that
       changed values between result set rows. (Bug #21602361)

     * Columns selected from the right-hand table of a left
       join, which was also a derived table, might produce
       incorrect NULL value information when used in an IN
       subquery. (Bug #21574933)
       References: This bug was introduced by Bug #14358878.

     * For debug builds, an assertion was raised for some
       queries that have a semi-join and use the materialization
       strategy, if a key length or number of key parts was
       zero. (Bug #21566735)

     * Compilation using gcc 4.9 or 5.1 failed on ARM64
       platforms. (Bug #21552524)

     * If a multiple-column UPDATE statement failed to update a
       JSON column that was then referenced in a later update,
       the server could exit. (Bug #21547877)

     * For debug builds, invalid geometry byte strings could
       cause spatial functions to raise an assertion rather than
       return an error to the caller. (Bug #21546656)

     * For debug builds, a too-strict assertion could be raised
       by invalid characters for LOAD DATA. (Bug #21542698)

     * The server could exit when InnoDB tried to update a
       secondary index on a VIRTUAL generated column of type
       BLOB. (Bug #21530366)

     * Binary logging of CREATE USER and statements could log
       the hash of the password hash (rather than the hash
       itself) when log_backward_compatible_user_definitions was
       enabled. Binary logging of ALTER USER statements could
       include attributes not present in the original
       In consequence of the fix for these issues,
       log_backward_compatible_user_definitions has been
       replaced by log_builtin_as_identified_by_password. If
       this variable is enabled, binary logging for CREATE USER
       statements involving built-in authentication plugins
       rewrites the statements to include an IDENTIFIED BY
       PASSWORD clause, and SET PASSWORD statements are logged
       as SET PASSWORD statements, rather than being rewritten
       to ALTER USER statements. (Bug #21516392, Bug #20535561)

     * For debug builds, incorrect caching of JSON values could
       cause an assertion to be raised. (Bug #21491442)

     * An empty string (which is not a valid JSON value)
       normally is parsed and returned as a JSON null literal,
       but in some cases could raise an assertion for debug
       builds. (Bug #21487833)

     * For temporary tables created to handle UNION statements
       that selected CHAR or SET columns, the maximum column
       width could be too long for InnoDB to handle. Now such
       columns are created as variable-length columns. (Bug

     * Certain JSON functions could return incorrect results
       when used in prepared statements which had path
       expression constants. (Bug #21472872)

     * Valgrind errors could occur during partition pruning for
       tables containing generated columns. (Bug #21469535)

     * For builds configured with MAX_INDEXES greater than 64,
       certain queries for which the server used temporary
       tables could cause a server exit. (Bug #21466850)

     * Adding or dropping a VIRTUAL generated column could cause
       a server exit. (Bug #21465626)

     * An attempt to use a previously unused time zone with
       CONVERT_TZ() could produce warnings or errors or (in
       debug builds) raise an assertion if GTIDs were enabled
       but the binary log was not enabled.
       In debug builds, an attempt to use a previously unused
       time zone with CONVERT_TZ() or as the value of the
       time_zone system variable inside a stored program could
       raise an assertion. (Bug #21459999, Bug #21459795)

     * For plugins that use the audit plugin API,
       MYSQL_AUDIT_GLOBAL_VARIABLE_SET events passed to the
       notification function did not include the new variable
       value. (Bug #21457699)

     * Queries on a table containing an indexed generated column
       could fail if the table name contained special
       characters. (Bug #21454155)

     * When a view was the inner table of an outer join, a JSON
       column could produce a non-NULL value when NULL was
       expected. (Bug #21448719)

     * If JSON_CONTAINS_PATH() was called with a one_or_all
       argument of all and a path argument contained a wildcard,
       the function found all matches per path, even though in
       this case one match is sufficient. (Bug #21442775)

     * JSON_SET() and JSON_REPLACE() sometimes produced an
       incorrect result if a path expression identified a
       nonarray value. (Bug #21442624)

     * Suppression of JSON conversion errors using non-strict
       SQL mode or INSERT IGNORE could then cause an assertion
       to be raised if an empty value inserted into a JSON NOT
       NULL column was copied to another JSON column. (Bug

     * For debug builds, some spatial functions that accept raw
       byte data for spatial arguments (for example, specified
       as hex values) could raise an assertion if such an
       argument contained extra garbage following valid data.
       (Bug #21397107)

     * ALTER TABLE could raise an assertion for a table with an
       indexed virtual column having a column position greater
       than 64. (Bug #21391781)

     * Evaluation of virtual generated columns could fail to
       evaluate all base columns and result in invalid memory
       reads. (Bug #21390605)

     * For deeply nested JSON input, ST_GeomFromGeoJSON() or
       JSON_VALID() could produce stack overflow. (Bug
       #21389101, Bug #21377136)

     * Failure to parse a JSON string that contained a
       floating-point number with a large, negative exponent
       could cause a server exit. (Bug #21384048)

     * For debug builds, an incorrect assertion could be raised
       during subquery execution. (Bug #21383882)

     * For debug builds, a missing error check in
       Item_sum_hybrid::fix_fields() caused an assertion to be
       raised. (Bug #21383714)

     * For debug builds, invoking ST_AsGeoJSON() within GROUP BY
       ... WITH ROLLUP could raise an assertion. (Bug #21383497)

     * JSON_SEARCH() could return incorrect results if an
       invalid escape expression was specified. (Bug #21383284)

     * For debug builds, a NULL first argument to JSON_SET()
       could raise an assertion. (Bug #21381806)

     * For expressions of the form (subquery) IN (subquery),
       where a subquery could return a JSON value, failure to
       handle a row result could cause a server exit.` (Bug

     * Failure of JSON_APPEND() to handle a legal condition
       could cause a server exit. (Bug #21373874)

     * Calls to ST_Buffer() could hang or raise an assertion.
       (Bug #21372946)

     * The server could exit in unclean fashion if configured to
       listen on a TCP/IP port number already in use by another
       server instance. (Bug #21368299)

     * Certain subqueries as arguments to PROCEDURE ANALYSE()
       could cause a server exit. (Bug #21350175)

     * A query with a right outer join inside a derived table
       might return wrong data. (Bug #21350125)

     * Starting the server with --skip-grant-tables (or with
       options such as --initialize for which
       --skip-grant-tables is implicit) prevented the INSTALL
       PLUGIN and UNINSTALL PLUGIN statements from working. (Bug

     * mysql_ssl_rsa_setup could create an unwanted .rnd file in
       the data directory. (The file is actually created by
       openssl, which mysql_ssl_ras_setup invokes.
       mysql_ssl_rsa_setup now cleans up the file.) (Bug

     * For spatial functions, input polygons were automatically
       closed if open. However, the Open Geospatial Consortium
       guidelines require that input polygons already be closed.
       Unclosed polygons are now rejected as invalid rather than
       being closed. (Bug #21327888)

     * When a VIRTUAL generated column was added to a table, it
       was not ensured that data being calculated by the
       generated column expression would not be out of range for
       the column. This could lead to inconsistent data being
       returned and unexpectedly failed statements.
       VALIDATION clauses to control whether ALTER TABLE
       validates the data for a VIRTUAL generated column:

          + With WITHOUT VALIDATION (the default if neither
            clause is specified), an in-place operation is
            performed (if possible), data integrity is not
            checked, and the statement finishes more quickly.
            However, later reads from the table might report
            warnings or errors for the column if values are out
            of range.

          + With WITH VALIDATION, ALTER TABLE copies the table.
            If an out-of-range or any other error occurs, the
            statement fails. Because a table copy is performed,
            the statement takes longer.
       WITHOUT VALIDATION and WITH VALIDATION are permitted only
       operations. (Bug #21317507)

     * Some INFORMATION_SCHEMA queries consumed excessive memory
       due to suboptimal query plans and insufficient
       materialization. (Bug #21299665)

     * With the server configured to send error messages to
       syslog or a log file, messages generated prior to error
       log setup were sent to stderr or stdout. These messages
       are now buffered until error log setup has completed,
       then logged to the proper destination. (Bug #21296553)

     * Statement digests did not include information about
       optimizer hint comments, causing statements with and
       without hints to be aggregated. (Bug #21286261)

     * Executing a prepared statement using a derived table and
       an aggregate function in a subquery in the SELECT list
       could cause a server exit. (Bug #21277074)

     * GRANT created the account for nonexistent accounts even
       if the NO_AUTO_CREATE_USER SQL mode was enabled. (Bug

     * ST_SymDifference() with multipolygon arguments could
       return incorrect results. (Bug #21263152)

     * A query with a NOT IN subquery that had COUNT(DISTINCT)
       could return incorrect results. (Bug #21243772)

     * When started using a very old data directory (from MySQL
       5.0), the server could exit due to failure to properly
       read the old grant tables. (Bug #21216433)

     * A mulitple-table update involving generated columns that
       updated used a temporary table could cause a server exit
       or raise an assertion. (Bug #21216067)

     * Unit testing now uses Google Mock 1.7 rather than 1.6.
       (Bug #21215389)

     * For queries containing an expression of the form (x IN
       (subquery)) IN (subquery2), a combination of semi-join
       and subquery materialization strategies could cause a
       server exit. (Bug #21205577)

     * If a query contained an outer join such as LEFT JOIN
       (t1,t2,...) and a hint was used to disable join buffering
       on a right-side table but not on the others, a server
       exit occurred. (Bug #21205282)

     * For a cursor type of CURSOR_TYPE_READ_ONLY, retrieving
       the result set for the first execution of a prepared CALL
       staement could be missing the first result set row if the
       data was numeric; raise an assertion for debug builds if
       the data was string; cause loss of the server connection
       when calling mysql_stmt_fetch(). (Bug #21199582)

     * Dangling blob pointers could remain when closing an
       InnoDB table, resulting in a subsequent read of invalid
       memory and a server exit. (Bug #21153489)

     * For some operations where sorting or grouping required a
       temporary table, the table could have zero columns and
       raise an assertion. (Bug #21143151)

     * For debug builds, merging a derived table into an outer
       query block could raise an assertion. (Bug #21139722)

     * Queries containing an expression of the form (x IS NULL)
       IN (subquery) could cause a server exit. (Bug #21139402)

     * During server SSL file autogeneration, ca.pem briefly had
       insecure file permissions. (Bug #21138119)

     * An assertion could be raised due to incorrect error
       handling if a SELECT ... FOR UPDATE subquery resulted in
       deadlock and caused a rollback. (Bug #21096444)

     * Selecting the result of an INSERT() function call to
       which input was passed as a hexidecimal string could
       expose more information than was passed to the function.
       (Bug #21056907)

     * Subqueries having COUNT() with GROUP BY could yield
       incorrect results. (Bug #21055139)

     * The updatable property of a view is set during view
       creation. If the underlying table was dropped and
       re-created as a nonupdatable one, the updatable property
       of the original view was not revised accordingly. This
       could cause a server exit for attempts to insert or
       replace into the view is made. (This problem was specific
       to views with multiple tables/views and did not occur
       with update statements.) (Bug #21039264)

     * The locking functions provided by the version_token
       plugin were renamed: vtoken_get_read_locks(),
       vtoken_get_write_locks(), and vtoken_release_locks() are
       now named version_tokens_lock_shared(),
       version_tokens_lock_exclusive(), and
       version_tokens_unlock(), respectively.
       These functions also failed to have any effect because
       they were implicitly unlocked at the end of the statement
       in which they were set. (Bug #21034322, Bug #21280801)

     * Servers linked against yaSSL and compiled with GCC 4.8.2
       could fail to respond correctly to connection attempts
       until several seconds after startup.
       yaSSL was upgraded to version 2.3.7e. (Bug #21025377)

     * When upgrading an old data directory (MySQL 5.0 or 5.1),
       mysql_upgrade could fail to properly read the mysql.proc
       table. (Bug #20968596)

     * For tables with subpartitions, the server could exit due
       to incorrect error handling during partition pruning if
       the partition could be identified but not the
       subpartition. (Bug #20909518)

     * mysql_upgrade could fail to look for checked tables in
       the wrong database during the repair phase. (Bug

     * DELETE could check privileges for the wrong database when
       table aliases were used. (Bug #20777016)

     * mysqldump used incorrect syntax for generated column
       definitions. (Bug #20769542)

     * Within a trigger, use of a cursor that accessed OLD or
       NEW values from a row could cause a server exit. (Bug

     * If a file was specified using an --init-file option,
       mysqld --initialize produced errors for statements in the
       file such as GRANT that affect user accounts. (Bug

     * Failure during execution of an XA PREPARE statement could
       result in an invalid XA transaction state. Subsequent
       attempts to start another XA transaction led to an
       ER_XAER_OUTSIDE error. (Bug #20538956)

     * The audit log plugin could audit accounts named in the
       audit_log_exclude_accounts system variable. (Bug

     * If a generated foreign key index was renamed by the same
       ALTER TABLE statement that added a new foreign key with
       the same name, the server could exit. (Bug #20146455)

     * ALTER TABLE operations that dropped and added the same
       FULLTEXT index were not performed as in-place (fast)
       operations that avoid using a temporary copy of the
       table. (Bug #20106837)

     * When the number of days calculated by DATE_FORMAT()
       function was negative, the server could exit. (Bug

     * ALTER TABLE operations to add or modify columns could
       create geometry columns containing invalid data due to
       missing validation. (Bug #19880316)

     * If range optimization was attempted on an index with a
       string column as its first part and values used for
       comparison were fully truncated, comparisons would be
       incorrect and produce incorrect results. (Bug #19333852)
       References: This bug was introduced by Bug #16407965.

     * The server could hang due to incorrect cleanup of
       aggregate functions used in a query. (Bug #18979515)

     * The server could exit while checking for appropriate
       indexes to use for certain queries that used aggregate
       function in the WHERE clause. (Bug #18706592)

     * On Windows, the validate_password plugin could cause a
       server exit during the dictionary check. (Bug #18636874)

     * Invoking a stored program without qualifying it with the
       database name could lead to stored program compilation
       errors. (Bug #18599181)

     * EXPLAIN of statements containing GROUP_CONCAT() could
       cause a server exit. (Bug #17865675)

     * The value of the FOUND_ROWS() function that returns the
       number of rows found in the previous query could change
       during execution of the next query. Now the value of
       FOUND_ROWS() for the previous query remains constant
       during execution of the next query. (Bug #17846246)

     * Failure to check for error conditions could cause some
       updates or deletes to result in a server exit. (Bug

     * On Windows, heap corruption in the audit log plugin
       caused server startup failure. (Bug #14700102)

       swapped two column values, the server could read
       incorrect data and exit. (Bug #13901905)

     * mysqlpump generated incorrect ALTER TABLE statements for
       adding foreign keys. (Bug #78593, Bug #21907297)

     * Some stress test files in the
       mysql-test/suite/innodb_stress directory had the
       executable file mode set although they were not script
       files. (Bug #78403, Bug #21822413)

     * Subqueries that used a derived table and contained a set
       function referring to a column from that derived table
       might be aggregated in the wrong query block. (Bug
       #78250, Bug #21753180)

     * For some inputs, ST_Union() could return an invalid
       geometry collection. (Bug #78206, Bug #21689998)

     * On non-Windows systems, setting range_alloc_block_size or
       query_alloc_block_size to a value larger than 32 bits at
       startup could cause a server exit. The maximum value for
       these system variables (on all platforms) is now limited
       to 2^32 − 1, rounded down to the nearest multiple of
       1024. (Bug #78188, Bug #21682231)

     * On Windows, if the MySQL server was started as a service,
       logging to the error log file was disabled. (Bug #77977,
       Bug #21574096)
       References: This bug was introduced by Bug #21328041.

     * In the Performance Schema setup_instruments table, it was
       possible to set memory instrument to TIMED='YES',
       although memory operations are never timed. Now such
       attempts are ignored. It was possible to set built-in
       memory instruments (with names of the form
       memory/performance_schema/%) to ENABLED='YES', although
       built-in memory instruments cannot be disabled. Now such
       attempts are ignored. (Bug #77944, Bug #21562212)

     * mysqldump and mysqlpump output included sys schema stored
       programs even when the sys schema was not dumped. (Bug
       #77926, Bug #21549860)

     * RPM installation scripts if configuration files contained
       multiple datadir lines. Now the last datadir line is
       used. (Bug #77878, Bug #21527467)

     * An unnecessary memset() call invoked during Performance
       Schema digest operations has been removed, which improves
       performance by reducing overhead. (Bug #77863, Bug

     * A potential race condition for the safe mutex
       implementation was corrected. This implementation is
       enabled by default only for debug builds. (Bug #77862,
       Bug #21522888)

     * mysqld --initialize produced warnings about missing SSL
       files, which is unnecessary because initialization does
       not require SSL. (Bug #77825, Bug #21498544)

     * When mysqlpump was invoked with the --defer-table-indexes
       option, it could generate incorrect CREATE TABLE
       statements for tables with a foreign key and a primary
       key but not a secondary index. (Bug #77759, Bug

     * The server initialization script used for the service
       mysql status command on Linux sometimes incorrectly
       reported that the server was stopped. (Bug #77696, Bug

     * For statements of the form CREATE TABLE ... SELECT, where
       the table was defined to contain a DECIMAL UNSIGNED,
       calculation of the row size was incorrect, leading to
       incorrect values in the table. (Bug #77636, Bug

     * A WHERE predicate containing both TRIM(LEADING ..) and
       TRIM(TRAILING ...) could be incorrectly optimized away.
       (Bug #77631, Bug #21447969)

     * For wait events, the Performance Schema uses the CYCLE
       timer by default, but failed to fall back to a different
       timer if CYCLE was unavailable. (Bug #77577, Bug

     * A disk-full condition during execution of a CREATE
       TABLESPACE statement caused a server exit. (Bug #77556,
       Bug #21347001)

     * A privilege precheck for derived tables could fail and
       cause a server exit. (Bug #77525, Bug #21338077)

     * For some string functions, data was truncated when
       evaluated in subqueries due to incorrect space
       calculations when creating temporary tables to hold
       intermediate results. (Bug #77473, Bug #21317406)

     * A predicate of the form WHERE ROUND(X,Y) > 0, where X is
       a column name and Y is a program local variable, could
       return false when it should return true. (Bug #77391, Bug

     * Updating VARCHAR and TEXT columns in the same UPDATE
       statement could produce incorrect results. When a VARCHAR
       column was assigned to a TEXT column and the VARCHAR
       column was then set to a different value, the TEXT
       column's result contained the VARCHAR column's new value.
       (Bug #77135, Bug #21143080)

     * A subquery in a HAVING clause that returned more than 1
       row could cause a server exit.
       Additional to the bug fix, EXPLAIN now displays Zero
       limit rather than Impossible WHERE when optimizing a
       query with LIMIT 0. (Bug #76998, Bug #21067109)

     * If an INFORMATION_SCHEMA query that performed a
       table-open operation encountered a corrupt table and
       attempted to repair it, a deadlock could occur, resulting
       in an aborted transaction without an appropriate error
       being reported. Such queries now do not attempt table
       repair. (Bug #76912, Bug #21021848)

     * mysqladmin -u root -p could exit with a segmentation
       fault. (Bug #76538, Bug #20802751)

     * The optimizer sometimes generates an index for a derived
       table (subquery in the FROM clause). If this occurred for
       a statement executed within a stored program, a memory
       leak could occur. (Bug #76349, Bug #20728894)

     * Optimizer estimates for filtering conditions could lead
       to suboptimal execution plans if the expected number of
       rows selected from a table was between 0 and 1. The
       estimate is now made to be at least 1. (Bug #76314, Bug

     * The optimizer could incorrectly assume an out-of-memory
       condition while optimizing a range scan for the OR
       operator, resulting in overestimation of the number of
       qualifying rows. (Bug #75248, Bug #20229614)

     * The Performance Schema events_statements_history table
       could have an ERRORS column value of 0 when other columns
       indicated there were errors. (Bug #74614, Bug #19929832)

     * View creation from a UNION failed with a duplicate-column
       error if a SELECT statement in the UNION other than the
       first used the same column name multiple times. (Bug
       #74539, Bug #19886430)

     * Timestamp values written to the slow query log could be
       incorrect. (Bug #73974, Bug #19646918)

     * When the mysql client was used to connect to the server
       in batch mode using an account with an expired password,
       the error message was not meaningful. mysql now reports
       "Please use --connect-expired-password option or invoke
       mysql in interactive mode" in this case. (Bug #72696, Bug

     * For UPDATE statements with ORDER BY, the optimizer could
       perform an unnecessary filesort on a key that was used
       for scanning as well as being updated. (Bug #72518, Bug

     * For a query with many range conditions, the optimizer
       could estimate that too much memory would be required for
       a range scan and fall back to a less efficient full table
       A new range_optimizer_max_mem_size system variable now
       controls the limit on memory consumption for the range
       optimizer. A value of 0 means "no limit." If an execution
       plan considered by the optimizer uses the range access
       method but the optimizer estimates that the amount of
       memory needed for this method would exceed the limit, it
       abandons the plan and considers other plans. (Bug #70247,
       Bug #17413040, Bug #17769777)

     * Empty XML elements having the form <element/> were not
       handled correctly by the LOAD XML statement. (Bug #67542,
       Bug #16171518)

     * As the number of open MyISAM tables increased, lookups to
       check whether a table was open became expensive,
       particularly when the table was not open. Lookup
       performance has been improved, with the overhead
       reduction especially beneficial for selects on large
       number of tables with large values of table_open_cache
       and table_definition_cache. (Bug #49177, Bug #11757169)

MySQL Community Server 5.7.9 (GA) has been released (part 2/2)Bjorn Munch22 Oct