MySQL Forums
Forum List  »  Announcements

MySQL Community Server 5.7.8 has been released (part 1/3)
Posted by: Balasubramanian Kandasamy
Date: August 03, 2015 09:09AM


Dear MySQL users,

MySQL Server 5.7.8-rc (Release Candidate) is a new version of the world's
most popular open source database. This is the second Release
Candidate of MySQL 5.7.

http://dev.mysql.com/doc/mysql-development-cycle/en/development-milestone-releases.html

[Due to size limitations on forum, this announcement had to be
split into three parts. This is part 1.]

As with any other pre-production release, caution should be taken when
installing on production level systems or systems with critical data.

Note that 5.7.8-rc includes all features present in MySQL 5.6.

For information on installing MySQL 5.7.8-rc on new servers, please see
the MySQL installation documentation at

http://dev.mysql.com/doc/refman/5.7/en/installing.html

MySQL Server 5.7.8-rc is available in source and binary form for a number of
platforms from the "Development Releases" selection of our download
pages at

http://dev.mysql.com/downloads/mysql/

MySQL Server 5.7.8-rc is also available from our repository for Linux
platforms, go here for details:

http://dev.mysql.com/downloads/repo/

Windows packages are available via the Installer for Windows or .ZIP
(no-install) packages for more advanced needs. The point and click
configuration wizards and all MySQL products are available in the
unified Installer for Windows:


http://dev.mysql.com/downloads/installer/

5.7.8-rc also comes with a web installer as an alternative to the full
installer.

The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:

http://bugs.mysql.com/report.php

The following section lists the changes in MySQL 5.7.8-rc since the
previous release candidate.

http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-8.html

Enjoy!

Changes in MySQL 5.7.8 (2015-08-03, Release Candidate)

   Note

   This is a release candidate, for use at your own risk.
   Significant development changes take place in release candidate
   releases and you may encounter compatibility issues, such as
   data format changes that require attention in addition to the
   usual procedure of running mysql_upgrade. For example, you
   may find it necessary to dump your data with mysqldump before
   the upgrade and reload it afterward.

   This release adds support for Debian 8 and Ubuntu 15.04.

     * Account Management Notes

     * Backup Notes

     * Configuration Notes

     * JSON Notes

     * Optimizer Notes

     * Packaging Notes

     * Performance Schema Notes

     * Plugin Notes

     * Security Notes

     * Spatial Data Support

     * SQL Mode Notes

     * Functionality Added or Changed

     * Bugs Fixed


   Account Management Notes

     * The maximum length of MySQL user names has been increased
       from 16 characters to 32 characters, which provides
       greater flexibility in choosing the user name part of
       MySQL account names. The change affects permitted user
       names in these contexts:

          + Account-management statements, such as CREATE USER,
            GRANT, REVOKE, and SHOW GRANTS.

          + Statements that support a DEFINER clause, such as
            CREATE PROCEDURE and CREATE VIEW.

          + Other statements with clauses that contain user
            names, such as CHANGE MASTER TO and CREATE SERVER.

          + Columns that store user names in mysql system
            database, INFORMATION_SCHEMA, and Performance Schema
            tables have been widened to accommodate 32
            characters.
       There are no changes in the client/server protocol, which
       exchanges user names as null-terminated strings. However,
       third-party programs that use this protocol to
       communicate may need to be modified if they use or store
       user names based on the assumption of 16 characters
       maximum.
       The increase in maximum user name length has implications
       for MySQL administration:

          + Replication implication: Replication of user names
            longer than 16 characters to a slave that supports
            only shorter user names will fail. However, this
            should occur only when replicating from a newer
            master to an older slave, which is not a recommended
            configuration.

          + Downgrade implication: If a newer server supports
            any accounts with a user name longer than 16
            characters, downgrades to an older version of MySQL
            that supports only shorter names is not possible.
       If you upgrade to this MySQL release from an earlier
       version, you must run mysql_upgrade (and restart the
       server) to incorporate this change in user name length.

     * The CREATE USER statement now supports an IF NOT EXISTS
       clause that causes the statement to produce a warning for
       each named account that already exists, rather than an
       error. The ALTER USER and DROP USER statements now
       support an IF EXISTS clause that cause the statements to
       produce a warning for each named account that does not
       exist, rather than an error. For details, see CREATE USER
       Syntax
       (http://dev.mysql.com/doc/refman/5.7/en/create-user.html),
       ALTER USER Syntax
       (http://dev.mysql.com/doc/refman/5.7/en/alter-user.html),
       and DROP USER Syntax
       (http://dev.mysql.com/doc/refman/5.7/en/drop-user.html).
       These statement variants can be useful in replication
       scenarios when the set of accounts differs between master
       and slave. They also permit scripting account-management
       operations that otherwise would terminate for statement
       errors.


   Backup Notes

     * A new client program, mysqlpump, provides an alternative
       to mysqldump. Significant mysqlpump features include:

          + Parallel processing of databases, and of objects
            within databases, to speed up the dump process

          + For dump file reloading, faster secondary index
            creation for InnoDB tables by adding indexes after
            rows are inserted

          + Better control over which databases and database
            objects (tables, views, stored programs, user
            accounts) to dump

          + Dumping of user accounts as account-management
            statements (CREATE USER, GRANT) rather than as
            inserts into the mysql system database

          + Capability of creating compressed output

          + Progress indicator
       For more information, see mysqlpump --- A Database Backup
       Program
       (http://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html).

   Configuration Notes

     * The default configuration for systemd now sets
       LimitNOFILE to 5000 to increase the number of file
       descriptors available to the MySQL server. This change
       applies to Linux systems on which MySQL installation is
       performed using RPM packages. On such systems, the number
       of descriptors available is often set by the operating
       system to 1024. The change causes the number of
       descriptors to match the --open-files-limit option
       default value of 5000. To configure a different number of
       descriptors, set LimitNOFILE as described at Managing
       MySQL Server with systemd
(http://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html).
       (Bug #21073014)

   JSON Notes

     * MySQL now supports a native JSON data type that enables
       efficient access to data in JSON (JavaScript Object
       Notation) documents. The JSON data type provides these
       advantages over storing JSON-format strings in a string
       column:

          + Automatic validation of JSON documents stored in
            JSON columns. Invalid documents produce an error.

          + Optimized storage format. JSON documents stored in
            JSON columns are converted to an internal format
            that permits efficient access to document elements.
       Along with the JSON data type, a set of SQL functions is
       available to enable operations on JSON values, such as
       creation, manipulation, and searching. In addition, the
       CONVERT() and CAST() functions can convert values between
       JSON and other types.
       For more information, see The JSON Data Type
       (http://dev.mysql.com/doc/refman/5.7/en/json.html), and
       JSON Functions
       (http://dev.mysql.com/doc/refman/5.7/en/json-functions.html).

   Optimizer Notes

     * The optimizer now is able to use indexes on generated
       columns, even when queries do not refer to such columns
       directly by name. The optimizer recognizes query
       expressions that match definitions of generated columns
       and uses indexes from those columns as appropriate during
       query execution. For details, see Optimizer Use of
       Generated Column Indexes
(http://dev.mysql.com/doc/refman/5.7/en/generated-column-index-optimizations.html).

     * The optimizer hint capability introduced in MySQL 5.7.7
       has been expanded to subquery execution strategies.
       Subquery hints affect whether to use semi-join
       transformations and which semi-join strategies to permit,
       and, when semi-joins are not used, whether to use
       subquery materialization or IN-to-EXISTS transformations.
       Examples:
         SELECT /*+ SEMIJOIN(FIRSTMATCH, LOOSESCAN) */ * FROM t1 ...;
         SELECT id, a IN (SELECT /*+ SUBQUERY(MATERIALIZATION) */ a FROM t1)
         FROM t2;
         SELECT * FROM t2 WHERE t2.a IN (SELECT /*+ SUBQUERY(INTOEXISTS) */ a
         FROM t1);

       For more information, see Subquery Optimizer Hints
(http://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html#optimizer-hints-subquery).
       There is also a new duplicateweedout flag for the
       optimizer_switch system variable. This flag enables use
       of optimizer_switch to specify whether to use the
       Duplicate Weedout semi-join strategy, which was not
       previously possible.

     * The optimizer cost model has a new memory_block_read_cost
       parameter in the mysql.engine_cost table representing the
       cost of reading an index or data block from an in-memory
       database buffer.
       Together with the existing io_block_read_cost parameter
       representing the cost of reading a block from disk, this
       change enables cost models for data access methods to
       take into account the costs of reading information from
       different sources; that is, the cost of reading
       information from disk versus reading information already
       in a memory buffer. For the initial implementation, the
       default value of memory_block_read_cost is the same as
       io_block_read_cost. Tuning the values remains as future
       work, although you can change the values to see how that
       affects query performance. For more information, see The
       Optimizer Cost Model
       (http://dev.mysql.com/doc/refman/5.7/en/cost-model.html).
       If you upgrade to this MySQL release from an earlier
       version, you must run mysql_upgrade (and restart the
       server) to incorporate this change into the mysql
       database.


   Packaging Notes

     * For Windows, the MSI installer package no longer includes
       debugging binaries/information components (including PDB
       files). These are available in a separate Zip archive
       named mysql-VERSION-winx64-debug-test.zip for 64-bit and
       mysql-VERSION-win32-debug-test.zip for 32-bit. (Bug
       #18296012)

   Performance Schema Notes

     * Current-event timing now provides more information.
       Previously, while a wait, stage, statement, or
       transaction event was executing, the respective tables
       displayed the event with TIMER_START populated, but with
       TIMER_END and TIMER_WAIT as NULL:
           events_waits_current
           events_stages_current
           events_statements_current
           events_transactions_current

       To make it possible to determine how how long a
       not-yet-completed event has been running, the timer
       columns now are set as follows:

          + TIMER_START is populated (unchanged from previous
            behavior)

          + TIMER_END is populated with the current timer value

          + TIMER_WAIT is populated with the time elapsed so far
            (TIMER_END − TIMER_START)
       To find events that have not yet completed (that is, have
       no END_EVENT_ID) and have taken longer than N picoseconds
       thus far, monitoring applications can use this expression
       in queries:
       WHERE END_EVENT_ID IS NULL AND TIMER_WAIT > N

       (Bug #75156, Bug #20889406)

     * The Performance Schema incorporates these changes:

          + The show_compatibility_56 system variable default
            value, previously ON, has been changed to OFF.
            Applications that require 5.6 behavior should set
            this variable to ON until such time as they have
            been migrated to the new behavior for system
            variables and status variables. See Migrating to
            Performance Schema Variable Tables
(http://dev.mysql.com/doc/refman/5.7/en/performance-schema-variable-table-migration.html)


          + When the Performance Schema session variable tables
            produced output, they included no rows for
            global-only variables and thus did not fully reflect
            all variable values in effect for the current
            session. This has been corrected so that each table
            has a row for each session variable, and a row for
            each global variable that has no session
            counterpart. This change applies to the
            session_variables and session_status tables.

          + It is no longer required that the
            show_compatibility_56 system variable be OFF for the
            Performance Schema system variable tables to produce
            output. The tables now produce output regardless of
            the variable value. This change applies to the
            global_variables, session_variables, and
            variables_by_thread tables.

          + WHERE clauses for SHOW VARIABLES and SHOW STATUS
            were deprecated in MySQL 5.7.6. This restriction has
            been lifted so that WHERE is supported as before
            5.7.6.

          + The metadata_locks table now displays tablespace
            locks. Rows for these locks have an OBJECT_TYPE
            value of TABLESPACE.

          + The Performance Schema logs wait, stage, statement,
            and transaction events in these history tables:
                events_waits_history
                events_waits_history_long
                events_stages_history
                events_stages_history_long
                events_statements_history
                events_statements_history_long
                events_transactions_history
                events_transactions_history_long

            Previously, historical event logging was controlled
            entirely by enabling or disabling history-related
            consumers in the setup_consumers table. These flags
            are global to the server, with the result that
            historical data was collected either for all threads
            or no threads.
            The Performance Schema now uses history consumers in
            conjunction with the setup_actors table to make it
            possible to control collection of historical events
            per host, user, or account (combination of host and
            user). This table has a new HISTORY column that
            indicates whether to collect historical events
            (subject also to which history consumers are
            enabled), and each new foreground thread is matched
            against rows in the table. If a matching row is
            found, its HISTORY value is recorded in the row for
            the thread in the threads table, which also now has
            a HISTORY column.
            Enabling historical event logging for a given
            session can be done independent of enabling
            instrumentation for it. Consequently, you can
            control more precisely what events are logged in
            history tables, with these advantages:
               o A decrease in runtime overhead when historical
                 data is needed only for a subset of the
                 instrumented sessions.
               o A reduction of noise in the history tables,
                 facilitating troubleshooting on busy servers
                 that generate a large number of events.

            For more information, see Pre-Filtering by Thread
(http://dev.mysql.com/doc/refman/5.7/en/performance-schema-pre-filtering.html#performance-schema-thread-filtering),
            The setup_actors Table
            (http://dev.mysql.com/doc/refman/5.7/en/setup-actors-table.html),
            and The threads Table
            (http://dev.mysql.com/doc/refman/5.7/en/threads-table.html).


          + The threads table now contains a CONNECTION_TYPE
            column that indicates the connection protocol. It
            can be used to determine how the connection was
            made. Permitted values are TCP/IP (TCP/IP connection
            established without SSL), SSL/TLS (TCP/IP connection
            established with SSL), Socket (Unix socket file
            connection), Named Pipe (Windows named pipe
            connection), and Shared Memory (Windows shared
            memory connection).
            Connection-type information is also written to the
            general query log for new connections, and the audit
            log interface was revised to incorporate the
            connection type.
            For more information, see The threads Table
            (http://dev.mysql.com/doc/refman/5.7/en/threads-table.html),
            The General Query Log
            (http://dev.mysql.com/doc/refman/5.7/en/query-log.html),
            and Writing Audit Plugins
            (http://dev.mysql.com/doc/refman/5.7/en/writing-audit-plugins.html).
       If you upgrade to this MySQL release from an earlier
       version, you must run mysql_upgrade (and restart the
       server) to incorporate these changes into the
       performance_schema database.
       References: See also Bug #20652173, Bug #20684424, Bug
       #20811494.

   Plugin Notes

     * These changes were made for the Rewriter query rewrite
       plugin (see The Rewriter Query Rewrite Plugin
(http://dev.mysql.com/doc/refman/5.7/en/rewriter-query-rewrite-plugin.html):

          + There is now a single installation script,
            install_rewriter.sql. Previously, there were two
            installation scripts, install_rewriter.sql and
            install_rewriter_with_optional_columns.sql, which
            differed in whether they created the pattern_digest
            and normalized_columns columns of the rewrite_rules
            table. install_rewriter.sql now always creates those
            columns, so there is no need for
            install_rewriter_with_optional_columns.sql.

          + The enabled column of the rewrite_rules table is now
            defined as ENUM('YES,'NO') rather than as CHAR(1).
            Correspondingly, to enable a rule, set this column
            to YES rather than Y.
       To upgrade if you have previously installed the Rewriter
       plugin, uninstall it by running the uninstallation script
       first, then run the installation script. After
       reinstalling, load your rewrite rules again (this is
       necessary because uninstalling drops the rules table).
       For instructions, see Installing the Rewriter Query
       Rewrite Plugin
(http://dev.mysql.com/doc/refman/5.7/en/rewriter-query-rewrite-plugin.html#rewriter-query-rewrite-plugin-installation).

   Security Notes

     * Community Edition RPM packages now invoke
       mysql_ssl_rsa_setup during installation to create default
       SSL and RSA key and certificate files. (Bug #20855737)

     * A new system variable, require_secure_transport, enables
       administrators to require all client connections to the
       server to be made using some form of secure transport.
       Qualifying connections are those that use SSL, a socket
       file (on Unix), or shared memory (on Windows). When this
       variable is enabled, the server rejects nonsecure
       connection attempts, which fail with an
       ER_SECURE_TRANSPORT_REQUIRED error.
       This capability supplements per-account SSL requirements,
       which take precedence. For example, if an account is
       defined with REQUIRE SSL, enabling
       require_secure_transport does not make it possible to use
       the account to connect using a Unix socket file.

   Spatial Data Support

     * ST_NumInteriorRing() was added as more a
       standard-compliant alias of ST_NumInteriorRings(). (Bug
       #21362781)

     * All spatial computations now are done using
       Boost.Geometry functions. All older non-Boost-based
       algorithms have been removed. (Bug #21300713)

     * Geometry constructor functions that take WKT or WKB
       values (such as ST_GeomFromText() and ST_GeomFromWKB())
       did not check for trailing garbage bytes. They now reject
       trailing nonwhitespace characters and produce an error.
       (Bug #21198064)

     * The required version of the Boost library for server
       builds has been raised from 1.57.0 to 1.58.0. (Bug
       #20721087)

     * Geometry object constructor functions such as Point() and
       MultiPolygon() now are stricter about rejecting invalid
       arguments. (Bug #20712775)

   SQL Mode Notes

     * In MySQL 5.7.4, the ERROR_FOR_DIVISION_BY_ZERO,
       NO_ZERO_DATE, and NO_ZERO_IN_DATE SQL modes were changed
       so that they did nothing when named explicitly. Instead,
       their effects were included in the effects of strict SQL
       mode (STRICT_ALL_TABLES or STRICT_TRANS_TABLES). The
       intent was to reduce the number of SQL modes with an
       effect dependent on strict mode and make them part of
       strict mode itself.
       However, the change to make strict mode more strict by
       including ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and
       NO_ZERO_IN_DATE caused some problems. For example, in
       MySQL 5.6 with strict mode but not NO_ZERO_DATE enabled,
       TIMESTAMP columns can be defined with DEFAULT '0000-00-00
       00:00:00'. In MySQL 5.7.4 with the same mode settings,
       strict mode includes the effect of NO_ZERO_DATE and
       TIMESTAMP columns cannot be defined with DEFAULT
       '0000-00-00 00:00:00'. This causes replication of CREATE
       TABLE statements from 5.6 to 5.7.4 to fail if they
       contain such TIMESTAMP columns.
       The long term plan is still to have the three affected
       modes be included in strict SQL mode and to remove them
       as explicit modes in a future MySQL release. But to
       restore compatibility in MySQL 5.7 with MySQL 5.6 strict
       mode and to provide additional time for affected
       applications to be modified, the following changes have
       been made:

          + ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and
            NO_ZERO_IN_DATE again have an effect when named
            explicitly. This reverts a change made in MySQL
            5.7.4.

          + ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and
            NO_ZERO_IN_DATE are no longer part of strict SQL
            mode. This reverts a change made in MySQL 5.7.4.

          + ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and
            NO_ZERO_IN_DATE are now included in the default
            sql_mode value, which as a result includes these
            modes: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES,
            NO_ZERO_IN_DATE, NO_ZERO_DATE,
            ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and
            NO_ENGINE_SUBSTITUTION.
       With the preceding changes, stricter data checking is
       still enabled by default, but the individual modes can be
       disabled in environments where it is currently desirable
       or necessary to do so.
       Although ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE, and
       NO_ZERO_IN_DATE again can be used separately from strict
       mode, it is intended that they be used together. As a
       reminder, a warning now occurs if they are enabled
       without also enabling strict mode or vice versa.
       References: See also Bug #75439, Bug #20367829.

   Functionality Added or Changed

     * InnoDB: The adaptive hash index search system is now
       partitioned, with each index bound to a specific
       partition, and each partition protected by a separate
       latch. Partitioning is controlled by the
       innodb_adaptive_hash_index_parts configuration option.
       Prior to MySQL 5.7.8, the adaptive hash index search
       system was protected by a single latch (btr_search_latch)
       which could become a point of contention. To reduce
       contention, innodb_adaptive_hash_index_parts is set to 8
       by default. The maximum setting is 512. (Bug #20985298)

     * InnoDB: The new innodb_log_checksum_algorithm option
       specifies how to generate and verify the checksum stored
       in redo log disk blocks. innodb_log_checksum_algorithm
       supports same algorithms as innodb_checksum_algorithm,
       which include innodb, crc32, none, and their associated
       strict forms. Previously, only the innodb algorithm was
       supported for redo log disk blocks.
       innodb_log_checksum_algorithm=innodb is the default
       setting. Thanks to Laurynas Biveinis for the patch. (Bug
       #20531208, Bug #75595)

     * InnoDB: InnoDB now supports page-level compression for
       file-per-table tablespaces. Page compression is enabled
       by specifying the COMPRESSION attribute when creating or
       altering a table. Supported compression algorithms
       include Zlib and LZ4. This feature, which is referred to
       as transparent page compression, relies on sparse file
       and hole punching support. It is supported on Windows
       with NTFS, and on the following subset of MySQL-supported
       Linux platforms where the kernel level provides hole
       punching support:

          + RHEL 7 and derived distributions that use kernel
            version 3.10.0-123 or higher

          + OEL 5.10 (UEK2) kernel version 2.6.39 or higher

          + OEL 6.5 (UEK3) kernel version 3.8.13 or higher

          + OEL 7.0 kernel version 3.8.13 or higher

          + SLE11 kernel version 3.0-x

          + SLE12 kernel version 3.12-x

          + OES11 kernel version 3.0-x

          + Ubuntu 14.0.4 LTS kernel version 3.13 or higher

          + Ubuntu 12.0.4 LTS kernel version 3.2 or higher

          + Debian 7 kernel version 3.2 or higher
       All of the available file systems for a given Linux
       distribution may not support hole punching.
       For more information about this feature, see InnoDB Page
       Compression
(http://dev.mysql.com/doc/refman/5.7/en/innodb-page-compression.html).

     * InnoDB: The new innodb_flush_sync configuration option,
       which is enabled by default, causes the
       innodb_io_capacity setting to be ignored for bursts of
       I/O activity that occur at checkpoints. To adhere to the
       limit on InnoDB background I/O activity defined by the
       innodb_io_capacity setting, disable innodb_flush_sync.

     * InnoDB: The default value for innodb_purge_threads and
       innodb_page_cleaners was changed from 1 to 4. If the
       number of page cleaner threads exceeds the number of
       buffer pool instances, innodb_page_cleaners is
       automatically set to the same value as
       innodb_buffer_pool_instances.

     * InnoDB: Internal server-layer functions were added to
       allow InnoDB purge threads to construct and destroy
       thread handle objects, and to compute virtual generated
       column index values when a table object is not present.
       This enhancement was required to support secondary
       indexes on virtual generated columns.

     * InnoDB: InnoDB now supports secondary indexes on virtual
       generated columns. For more information, see CREATE TABLE
       and Generated Columns
(http://dev.mysql.com/doc/refman/5.7/en/create-table.html#create-table-generated-columns).

     * InnoDB: Virtual generated column values no longer occupy
       space in database rows. With this change, a table rebuild
       is no longer required when adding or dropping virtual
       generated columns.
       Virtual generated columns are still represented in InnoDB
       metadata. The N_COLS field of INNODB_SYS_TABLES still
       counts virtual generated columns, and INNODB_SYS_COLUMNS
       still includes virtual generated column metadata.
A new INFORMATION_SCHEMA table, INNODB_SYS_VIRTUAL,
       provides metadata about columns upon which virtual
generated columns are based.

      * Replication: The behavior of SET GTID_PURGED has been
       changed so that it does not add any GTIDs to
       Previous_gtids_log_event and does not rotate the binary
       log. Instead the GTIDs are added to the
       mysql.gtid_executed table. This fix ensures that it is
       safe in all cases to use binlog_gtid_simple_recovery=1
       for a server using MySQL 5.7.8 or later, where all binary
       logs were generated by servers using MySQL 5.7.8 or
       later. (Bug #75767, Bug #20470724)

     * Replication: When using a multi-threaded slave, each
       worker thread has its own queue of transactions to
       process. In previous MySQL versions, STOP SLAVE waited
       for all workers to process their entire queue. This logic
       has been changed so that STOP SLAVE first finds the
       newest transaction that was committed by any worker
       thread. Then, it waits for all workers to complete
       transactions older than that. Newer transactions are not
       processed. The new logic allows STOP SLAVE to complete
       faster in case some worker queues contain multiple
       transactions. (Bug #75525, Bug #20369401)

     * The patch number of the C client library is now increased
       for each patch version of the server. This number has the
       format major.minor.patch. (Bug #21341481)

     * The max_statement_time system variable was renamed to
       max_execution_time. The Max_statement_time_exceeded,
       Max_statement_time_set, and Max_statement_time_set_failed
       status variables were renamed to
       Max_execution_time_exceeded, Max_execution_time_set, and
       Max_execution_time_set_failed.
       The MAX_STATEMENT_TIME option for SELECT statements was
       removed because its functionality is now available using
       the more general optimizer hint syntax (see Optimizer
       Hints
      (http://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html)).
       Statements that begin like this:
       SELECT MAX_STATEMENT_TIME = N ...

       Should be rewritten to begin like this:
       SELECT /*+ MAX_EXECUTION_TIME(N) */ ...

       There are some minor implementation differences between
       the two. MAX_STATEMENT_TIME was not permitted in
       non-top-level SELECT statements such as subqueries, or in
       stored programs, and produced an error.
       MAX_EXECUTION_TIME() is permitted in those contexts, but
       is ignored. (Bug #21306646, Bug #21306392, Bug #21306319)

     * GeometryCollection() with no arguments is now permitted
       as a way to create an empty geometry. (Bug #21127270)

     * Solaris tarball and PKG distributions no longer have -gcc
       in the distribution file names. (Bug #21047137)

     * Previously, the max_digest_length system variable
       controlled the maximum digest length for all server
       functions that computed statement digests. However,
       whereas the Performance Schema may need to maintain many
       digest values, other server functions such as query
       rewrite plugins need only one digest per session.
       Increasing the max_digest_length value has little impact
       on total memory requirements for those functions, but can
       increase Performance Schema memory requirements
       significantly. To enable configuring digest length
       separately for the Performance Schema, its digest length
       is now controlled by the new
       performance_schema_max_digest_length system variable.
       (Bug #20963147)

     * Use of the optimizer cost model was extended to
       estimating index scan costs within
       test_if_cheaper_ordering() for the I/O cost of accessing
       table blocks. (Bug #20947871)

     * mysqldump no longer dumps the sys schema by default. It
       is still possible to dump it by naming it explicitly on
       the command line (for example, mysqldump --databases
       sys). (Bug #20902791)

     * For non-TCP/IP connections, these changes were made when
       --ssl was specified to force SSL to be used:

          + For named pipe and shared memory connections,
            attempts to use SSL now produce an error because
            these connections use non-network protocols.

          + For Unix socket file connections, SSL does not add
            any security. The connection is permitted, but the
            mysql client now produces a warning that SSL does
            not add anything for this connection protocol.
       (Bug #20785409, Bug #21025587)

     * The server now prints more descriptive diagnostic
       messages for bad values of secure_file_priv. (Bug
       #20771331)

     * The libmysqld embedded server took its default
       secure_file_priv value from the
       INSTALL_SECURE_FILE_PRIVDIR CMake option, but cannot
       share the same directory with a non-embedded server. The
       new INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR option enables a
       separate directory to be specified for libmysqld. The
       default value is NULL. (Bug #20770671)

     * mysql_ssl_rsa_setup now has a --uid=name option that
       enables specifying the owner for any files created by the
       program (if the program is executed as root). (Bug
       #20726413)

     * my_print_defaults now masks passwords. To display
       passwords in cleartext, use the new --show option. In
       addition, The output for client programs invoked with the
       --print-defaults option now masks passwords. (Bug
       #19953365, Bug #20903330)

     * For attempts to create a multiple-column SPATIAL index,
       the server previously returned an "Incorrect arguments to
       SPATIAL INDEX" error. Now it returns
       ER_TOO_MANY_KEY_PARTS ("Too many key parts specified; max
       1 parts allowed"). (Bug #18320371)

     * For tables that contain object information, the
       Performance Schema now uses lowercase stored program
       names. (Bug #17818062)

     * To make the effect of password-change operations more
       clear, mysql_secure_installation now displays the user
       whose password is being changed. (Bug #17343687)

     * The shutdown timeout value in /etc/init.d/mysqld was too
       short for some environments. The value has been increased
       from 60 seconds to 600 seconds. (Bug #76900, Bug
       #20987568)

     * For MySQL install operations on OS X from DMG packages,
       if a a random root account password is generated, it now
       is displayed in a dialog box. (Bug #76792, Bug #20930305)

     * MySQL distributions now include an innodb_stress suite of
       test cases. Thanks to Mark Callaghan for the
       contribution. (Bug #76347, Bug #20717127)

     * The data type for generated columns now permits the
       COLLATE attribute. (Bug #76329, Bug #20709487)

     * Connections for the FEDERATED storage engine now set the
       program_name session connection attribute to federated to
       permit identification of the connection source. (Bug
       #68781, Bug #16555730)

     * Previously, changes to the validate_password plugin
       dictionary file (named by the
       validate_password_dictionary_file system variable) while
       the server was running required a restart for the server
       to recognize the changes. Now
       validate_password_dictionary_file can be set at runtime
       and assigning a value causes the named file to be read
       without a restart.
       In addition, two new status variables are available.
       validate_password_dictionary_file_last_parsed indicates
       when the dictionary file was last read, and
       validate_password_dictionary_file_words_count indicates
       how many words it contains. (Bug #66697, Bug #14588145)

     * The error produced for a COM_FIELD_LIST command with too
       much data was changed from ER_UNKNOWN_COM_ERROR to the
       more informative ER_MALFORMED_PACKET. (Bug #53699, Bug
       #11761229)

     * MySQL distributions no longer include the sql-bench
       directory. The INSTALL_SQLBENCHDIR CMake option has also
       been removed.
       References: See also Bug #21303289.

     * The so-called "fast mutex" code has been removed from the
       server sources. It provides no measurable benefit,
       complicates the code, and is problematic for certain
       architectures such as POWER8. The (undocumented)
       WITH_FAST_MUTEXES CMake option has also been removed.
       References: See also Bug #37703, Bug #11748914, Bug
       #72806, Bug #18871517, Bug #72807, Bug #18871138, Bug
       #72805, Bug #18870931.

     * Work was done to clean up the source code base,
       including: Removal of unneeded CMake checks; removing
       unused macros from source files; reorganizing header
       files to reduce the number of dependencies and make them
       more modular, removal of function declarations without
       definitions.

     * The read_only system variable enables the server to be
       put into read-only mode, in which the server permits
       client updates only from users who have the SUPER
       privilege. A new super_read_only system variable, if
       enabled, prohibits client updates even from users who
       have SUPER. "Super" read-only mode can be useful for
       operations such as preparing a server for a move or
       upgrade because it prevents all client users from
       modifying data, even administrators.

     * mysqld_safe no longer uses the data directory as a
       possible location for setting MYSQL_HOME. (This has been
       deprecated since MySQL 5.0.)

     * A new system variable, disabled_storage_engines, enables
       administrators to designate storage engines that cannot
       be used to create new tables or tablespaces. By default,
       this variable is empty (no engines disabled), but it can
       be set to a comma-separated list of one or more engines.
       Any engine named in the value cannot be used to create
       tables or tablespaces with CREATE TABLE or CREATE
       TABLESPACE, and cannot be used with ALTER TABLE ...
       ENGINE or ALTER TABLESPACE ... ENGINE to change the
       storage engine of existing tables or tablespaces.
       Attempts to do so result in an ER_DISABLED_STORAGE_ENGINE
       error.
       disabled_storage_engines does not restrict other DDL
       statements for existing tables, such as CREATE INDEX,
       TRUNCATE TABLE, ANALYZE TABLE, DROP TABLE, or DROP
       TABLESPACE. This permits a smooth transition so that
       existing tables or tablespaces that use a disabled engine
       can be migrated to a permitted engine by means such as
       ALTER TABLE ... ENGINE permitted_engine.

     * The default value of the table_open_cache_instances
       system variable has been increased from 1 to 16.

   Bugs Fixed

     * Incompatible Change: Internal storage format for VIRTUAL
       generated columns was modified. For MyISAM tables with
       such columns, this is an incompatible change; for
       upgrades, use ALTER TABLE to drop the columns before the
       upgrade and add them again after the upgrade. (Bug
       #21237637)

     * Incompatible Change: The mysql_parser plugin service
       interface defined in the service_parser.h header file was
       incorrect for the case that the MYSQL_DYNAMIC_PLUGIN
       macro was defined. The test for this symbol used the
       wrong name, so the interface did not enable the proper
       code. The test has been corrected, and some adjustments
       made to the API for function pointer members within the
       mysql_parser_service_st structure:

          + Some function pointer names began with
            mysql_parser_, others with mysql_. For consistency,
            function pointer member names that began with
            mysql_parser_ were changed to begin with mysql_.

          + The missing mysql_get_statement_digest function
            pointer member was added.
       These modifications change the service API. Any plugin to
       be used with this version of MySQL that relies on the
       service must be recompiled. (Bug #20856729)

     * InnoDB; Partitioning: In certain rare cases the optimizer
       pruned all partitions for an InnoDB table but failed to
       remove the table from consideration as a source for
       obtaining matches, instead calling for the table to be
       initialized and prepared for fetching records. This
       occurred when the active index was not set during
       initialization. To fix this problem, we now set the
       active index ID during initialization even if there are
       no partitions to select from. This behavior also matches
       the way the same case is already handled in MySQL 5.6.
       (Bug #21211524)

     * InnoDB; Partitioning: Sorted index reads on partitioned
       InnoDB tables added rows to the prefetch cache, which
       could cause rows from the wrong partition since the
       prefetch cache does not support partitioned tables. Now
       the the prefetch cache is disabled in such cases. (Bug
       #20584754)

     * InnoDB; Partitioning: ALTER TABLE ADD UNIQUE INDEX failed
       when run concurrently with an INSERT on the same
       partitioned InnoDB table. (Bug #20510811, Bug #75834)

     * InnoDB; Partitioning: The CREATE_TIME column of the
       INFORMATION_SCHEMA.TABLES table now shows the correct
       table creation time for partitioned InnoDB tables. The
       CREATE_TIME column of the INFORMATION_SCHEMA.PARTITIONS
       table now shows the correct partition creation time for a
       partition of partitioned InnoDB tables.
       The UPDATE_TIME column of the INFORMATION_SCHEMA.TABLES
       table now shows when a partitioned InnoDB table was last
       updated by an INSERT, DELETE, or UPDATE. The UPDATE_TIME
       column of the INFORMATION_SCHEMA.PARTITIONS table now
       shows when a partition of a partitioned InnoDB table was
       last updated. (Bug #69990, Bug #17299181)

     * InnoDB: With innodb_strict_mode=OFF, a CREATE TEMPORARY
       TABLE ... ROW_FORMAT=Compressed
       TABLESPACE=innodb_file_per_table DATA DIRECTORY ...
       statement raised an assertion. The DATA DIRECTORY clause
       is not supported with temporary tables and should be
       ignored. (Bug #21324507)

     * InnoDB: The btr_search_drop_page_hash_index function
       dereferenced the adaptive hash index block before
       acquiring a latch, which could result in a race
       condition. (Bug #21310520)

     * InnoDB: A regression introduced in MySQL 5.7.2 caused an
       innochecksum-related memory leak. (Bug #21255718)

     * InnoDB: The records_in_range function returned a constant
       value for spatial indexes. (Bug #21245805, Bug #77332)

     * InnoDB: In some cases, memory was not properly allocated
       for rw_lock_t instances. (Bug #21242541)

     * InnoDB: SHOW ENGINE INNODB STATUS no longer reports mutex
       metrics. Mutex metrics are now reported by SHOW ENGINE
       INNODB MUTEX. (Bug #21238953, Bug #77314)
       References: See also Bug #21052754.

     * InnoDB: Functionality required to build adaptive hash
       indexes on field prefixes was reintroduced to improve
       sequential insert performance. The functionality was
       removed in MySQL 5.7.2 by the fix for Bug #21198396. (Bug
       #21198396)

     * InnoDB: When defining buf_block_t, a lock and a mutex
       were often accessed in the same vicinity, which could
       cause unintended cache line sharing. (Bug #21153684)

     * InnoDB: The ib_cursor_moveto function did not accept a
       search tuple with fewer fields than are defined for the
       index. (Bug #21121197, Bug #77083)

     * InnoDB: The ib_table_truncate function failed to release
       a transaction, resulting in a hang on server shutdown.
       (Bug #21121164, Bug #77084)

     * InnoDB: The ib_open_table_by_id function passed an
       incorrect argument to dict_table_open_on_id. (Bug
       #21121084, Bug #77100)

     * InnoDB: On Unix-like platforms,
       os_file_create_simple_no_error_handling_func and
       os_file_create_func opened files in different modes when
       innodb_flush_method was set to O_DIRECT. (Bug #21113036,
       Bug #76627)



Edited 1 time(s). Last edit at 08/03/2015 09:30AM by Balasubramanian Kandasamy.

Options: ReplyQuote


Subject
Views
Written By
Posted
MySQL Community Server 5.7.8 has been released (part 1/3)
4226
August 03, 2015 09:09AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.