MySQL 5.7 Release Notes
        A value of system is now permitted for the
        WITH_BOOST
        CMake option. If this option is not set or is
        set to system, it is assumed that the correct
        version of Boost is installed on the compilation host in the
        standard location. In this case, the installed version of Boost
        is used rather than any version included with a MySQL source
        distribution.
       (Bug #22224313)
        In addition to the mysql-5.7.11.tar.gz
        source tarball, another tarball named
        mysql-boost-5.7.11.tar.gz is provided. The
        new tarball contains everything in the first tarball, but also
        contains all the required Boost header files in a subdirectory
        named boost. This is for the benefit of
        those who do not have the correct Boost version installed and do
        not wish to or cannot download it. To build from this source
        distribution, add
        -DWITH_BOOST=boost to the
        CMake command line.
      
        Bit functions and operators comprise
        BIT_COUNT(),
        BIT_AND(),
        BIT_OR(),
        BIT_XOR(),
        &,
        |,
        ^,
        ~,
        <<,
        and
        >>.
        Currently, bit functions and operators require
        BIGINT (64-bit integer) arguments
        and return BIGINT values, so they
        have a maximum range of 64 bits. Arguments of other types are
        converted to BIGINT and
        truncation might occur.
      
        An extension for MySQL 8.0 changes this
        cast-to-BIGINT behavior: Bit
        functions and operators permit binary string type arguments
        (BINARY,
        VARBINARY, and the
        BLOB types), enabling them to
        take arguments and produce return values larger than 64 bits.
        Consequently, bit operations on binary string arguments in MySQL
        5.7 might produce different results in MySQL 8.0. To provide
        advance notice about this potential change in behavior, the
        server now produces warnings for bit operations for which binary
        string arguments are not converted to integer in MySQL 8.0.
        These warnings afford an opportunity to rewrite affected
        statements. To explicitly produce MySQL 5.7 behavior in a way
        that will not change after an upgrade to 8.0, cast bit-operation
        binary string arguments to convert them to integer. For more
        information and examples, see Bit Functions and Operators.
       (WL #9015)
        The mysql_plugin utility is deprecated and
        will be removed in a future MySQL version. Alternatives include
        loading plugins at server startup using the
        --plugin-load or
        --plugin-load-add option, or at
        runtime using the INSTALL PLUGIN
        statement.
       (WL #8927)
        The mysql_kill(),
        mysql_list_fields(),
        mysql_list_processes(), and
        mysql_refresh() C API functions
        are deprecated and will be removed in a future MySQL version.
        The same is true of the corresponding
        COM_PROCESS_KILL,
        COM_FIELD_LIST,
        COM_PROCESS_INFO, and
        COM_REFRESH client/server protocol commands.
        Instead, use mysql_query() to
        execute a KILL,
        SHOW COLUMNS,
        SHOW PROCESSLIST, or
        FLUSH statement, respectively.
       (WL #8754)
        Previously, mysqld --initialize required the
        data directory to not exist or, if it existed, to be empty. Now
        an existing data directory is permitted to be nonempty if every
        entry either has a name that begins with a period
        (.) or is named using an
        --ignore-db-dir option.
       (Bug #79250, Bug #22213873)
        MySQL Server now supports a keyring that enables internal server
        components and plugins to securely store sensitive information
        for later retrieval. The implementation includes a
        keyring_file plugin that stores keyring data
        in a file local to the server host. For more information, see
        The MySQL Keyring,
        Writing Keyring Plugins, and
        The Keyring Service.
       (WL #5769)
yaSSL was upgraded to version 2.3.9. This upgrade corrects an issue in which yaSSL handled only cases of zero or one leading zeros for the key agreement instead of potentially any number, which in rare cases could cause connections to fail when using DHE cipher suites. (Bug #22361038)
The linked OpenSSL library for the MySQL Commercial Server has been updated from version 1.0.1p to version 1.0.1q. For a description of issues fixed in this version, see http://www.openssl.org/news/vulnerabilities.html.
This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (Bug #22348181)
        The default value of the
        default_password_lifetime
        system variable that controls the global password expiration
        policy has been changed from 360 (360 days) to 0 (no password
        expiration). The default of 360 sometimes took people by
        surprise when account passwords expired a year after upgrading
        to MySQL 5.7. To continue to use a value other than 0 as the
        password expiration, start the server with an explicit setting
        for default_password_lifetime.
        For example, use these lines in an option file:
      
[mysqld] default_password_lifetime=360
(Bug #77277, Bug #21284761)
        MySQL client programs now support an
        --ssl-mode option that enables
        you to specify the security state of the connection to the
        server. Permitted option values are PREFERRED
        (establish an encrypted connection if the server supports the
        capability, falling back to an unencrypted connection
        otherwise), DISABLED (establish an
        unencrypted connection), REQUIRED (establish
        an encrypted connection, or fail), VERFIFY_CA
        (like REQUIRED, but additionally verify the
        server certificate), VERIFY_IDENTITY (like
        VERIFY_CA, but additionally verify that the
        server certificate matches the host name to which the connection
        is attempted). For backward compatibility, the default is
        PREFERRED if
        --ssl-mode is not specified.
      
        These clients support
        --ssl-mode:
        mysql, mysqladmin,
        mysqlbinlog, mysqlcheck,
        mysqldump, mysqlimport,
        mysqlshow, mysqlpump,
        mysqlslap, mysqltest,
        mysql_upgrade.
      
        The --ssl-mode option comprises
        the capabilities of the client-side
        --ssl and
        --ssl-verify-server-cert
        options. Consequently, both of those options are now deprecated
        and will be removed in a future MySQL version. Use
        --ssl-mode=REQUIRED instead of
        --ssl=1 or
        --enable-ssl.
        Use --ssl-mode=DISABLED instead
        of --ssl=0,
        --skip-ssl, or
        --disable-ssl.
        Use --ssl-mode=VERIFY_IDENTITY
        instead of
        --ssl-verify-server-cert
        options. (The server-side --ssl
        option is not deprecated.)
      
        For the C API, the new MYSQL_OPT_SSL_MODE
        option for mysql_options()
        corresponds to the --ssl-mode option. The
        MYSQL_OPT_SSL_ENFORCE and
        MYSQL_OPT_SSL_VERIFY_SERVER_CERT options for
        mysql_options() correspond to
        the client-side --ssl and
        --ssl-verify-server-cert
        options. They are now deprecated and will be removed in a future
        MySQL version. Use MYSQL_OPT_SSL_MODE with an
        option value of SSL_MODE_REQUIRED or
        SSL_MODE_VERIFY_IDENTITY instead.
      
For more information, see Command Options for Encrypted Connections, and mysql_options().
In consequence of this change, the minor C API version number was incremented. (WL #8785, WL #9072)
InnoDB: 
        A new InnoDB configuration option,
        innodb_tmpdir, allows you to
        configure a separate directory for temporary files created
        during online ALTER TABLE
        operations that rebuild the table. This option was introduced to
        help avoid MySQL temporary directory overflows that could occur
        as a result of large temporary files created during online
        ALTER TABLE operations.
        innodb_tmpdir can be configured
        dynamically using a
        SET
        statement.
      
        Online ALTER TABLE operations
        that rebuild a table also create an
        intermediate table file in the same
        directory as the original table. The
        innodb_tmpdir option is not
        applicable to intermediate table files.
       (Bug #19183565)
InnoDB: 
        InnoDB now supports at-rest data encryption
        for InnoDB tables stored in file-per-table
        tablespaces. Encryption is enabled by specifying the
        ENCRYPTION option when creating or altering
        an InnoDB table. For more information, see
        InnoDB Data-at-Rest Encryption.
       (WL #8821, WL #8548)
Replication: 
        The
        log_statements_unsafe_for_binlog
        variable was added to provide control over whether the warnings
        generated by error 1592 are added to the binary log or not.
       (WL #8993)
        The Valgrind function signature in
        mysql-test/valgrind.supp was upgraded for
        Valgrind 3.11.
       (Bug #22214867)
        The audit_log plugin now produces events in
        the MYSQL_AUDIT_TABLE_ACCESS_CLASS class.
        These events are abortable.
       (Bug #21458192)
        The format of log output produced by
        mysqld_safe now is configurable using the
        --mysqld-safe-log-timestamps
        option. This option can be used to produce log timestamps in
        formats compatible with the server or in formats used by
        mysqld_safe in older versions of MySQL. For
        more information, see mysqld_safe — MySQL Server Startup Script.
       (Bug #78475, Bug #21862951)
        The server now supports an
        --early-plugin-load option that
        indicates which plugins to load before loading mandatory
        built-in plugins and before storage engine initialization. One
        use for this option is to load the
        keyring_file plugin: The
        InnoDB storage engine uses the keyring for
        data-at-rest encryption, so the keyring_file
        plugin must be loaded early to ensure that it is available prior
        to InnoDB initialization.
       (WL #8821)
        Storage engines now can request notification about acquisition
        and release of exclusive metadata locks. As result, the
        LOCK_STATUS column of the
        metadata_locks Performance Schema
        table has two new status values. The
        PRE_ACQUIRE_NOTIFY and
        POST_RELEASE_NOTIFY status values are brief
        and signify that the metadata locking subsubsystem is notifying
        interested storage engines while entering lock acquisition or
        leaving lock release operations.
       (WL #7567)
InnoDB; Partitioning: 
        When OPTIMIZE TABLE rebuilt a
        partitioned InnoDB table, it placed
        the resulting partition tablespace files
        (*.ibd files) in the default data directory
        instead of the directory specified using the DATA
        DIRECTORY option.
       (Bug #75112, Bug #20160327)
InnoDB: 
        InnoDB failed to update index statistics when
        adding or dropping a virtual column.
       (Bug #22469660, Bug #79775)
InnoDB: Server method calls in Information Schema interface code were fixed to avoid unnecessary typecasts. (Bug #22391925)
InnoDB: 
        A small InnoDB buffer pool size with a large
        innodb_stats_persistent_sample_pages
        setting resulted in a Difficult to find free blocks
        in the buffer pool warning.
       (Bug #22385442)
InnoDB: memcached connections are blocked from accessing tables that contain an indexed virtual column. Accessing an indexed virtual column requires a callback to the server, but a memcached connection does not have access to the server code. (Bug #22384503, Bug #79691)
InnoDB: 
        InnoDB did not return an informative message
        when refusing an online ALTER
        TABLE operation that attempted to add an index and a
        virtual column.
       (Bug #22374827)
InnoDB: 
        An invalid
        innodb_saved_page_number_debug
        setting caused a server exit.
       (Bug #22311319, Bug #79516)
InnoDB: 
        InnoDB failed to free a table object when a
        compressed table and temporary compressed table were created in
        the same shared tablespace.
       (Bug #22306581)
InnoDB: 
        In NUMA-related code, the size information passed to the
        mbind() call in the
        buf_chunk_init() function was incorrect.
       (Bug #22293530, Bug #79434)
InnoDB: NUMA support was incomplete for online buffer pool resizing operations. (Bug #22293511, Bug #79354)
InnoDB: 
        A SELECT COUNT(*) query that counted the
        results of a full-text subquery raised an assertion.
       (Bug #22270139)
InnoDB: 
        InnoDB passed a buffer with an incorrect
        TINYBLOB data length for a virtual column,
        resulting in a purge thread failure.
       (Bug #22256752)
InnoDB: A purge failure occurred while deleting data from a table that contained a spatial index. (Bug #22230442, Bug #22366370)
InnoDB: An assertion was raised when purge accessed a freed page while attempting to rebuild virtual column data from the clustered index. (Bug #22204260)
InnoDB: Only prefix bytes were logged for an indexed virtual column, resulting in an a Clustered record for sec rec not found error. (Bug #22202788)
InnoDB: 
        A small buffer pool with an
        innodb_page_size setting of
        64K could cause startup, bootstrap, and
        recovery failures.
       (Bug #22179133, Bug #79201)
InnoDB: Unreachable code that checks for 32-bit file offsets was removed. (Bug #22163880, Bug #79150)
InnoDB: A slow shutdown failure was caused by background threads adding undo records to the purge history list during or after purge thread exit. (Bug #22154730)
InnoDB: 
        The InnoDB purge thread died attempting to
        purge a virtual column index record that was not delete-marked.
       (Bug #22141031)
InnoDB: 
        In debug builds, an ALTER TABLE
        operation that increased the column length of a virtual column
        raised an assertion.
       (Bug #22139917)
InnoDB: 
        ut_allocator prepended the allocation payload
        with a 12-byte header on 32-bit systems, causing unaligned
        memory access. On 32-bit SPARC systems, the unaligned memory
        access caused a crash during bootstrap.
       (Bug #22131684)
InnoDB: 
        In debug builds, an ALTER TABLE
        operation that added a new virtual column before an existing
        virtual column raised an assertion.
       (Bug #22123674, Bug #22111464)
InnoDB: 
        InnoDB startup messages related to dumping
        and loading of the buffer pool were improved.
       (Bug #22096661, Bug #78960)
InnoDB: 
        Support was enabled for ALGORITHM=INPLACE
        operations that add an index on an existing virtual column while
        dropping another virtual column. Support was also enabled for
        ALGORITHM=INPLACE operations that add a
        virtual column and an index. When adding an index on a
        newly-added virtual column, purge now skips the uncommitted
        virtual index.
       (Bug #22082762)
InnoDB: The wrong table object was used to compute virtual column values for a query that accessed multiple instances of the same table. (Bug #22070021)
InnoDB: A purge thread failure occurred when inserting and deleting spatial data. The child page number field was not stored during the R-tree search stage. (Bug #22027053)
InnoDB: 
        Starting the server with an empty
        innodb_data_home_dir entry in
        the configuration file caused InnoDB to look
        for the buffer pool file in the root directory, resulting in a
        startup error.
       (Bug #22016556, Bug #78831)
InnoDB: A failure to compute virtual column values caused an excessive number of error messages. (Bug #21968375)
InnoDB: 
        An
        INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX
        query raised an assertion. A dictionary mutex was taken while
        InnoDB populated an in-memory heap table. The
        mutex was not released before InnoDB
        attempted to convert the in-memory heap table to an optimized
        internal temporary table.
       (Bug #21950756, Bug #78714)
InnoDB: 
        To avoid a potential hang and redo log overwrite, the
        innodb_log_file_size minimum
        value has been increased from 1MB to 4MB, and the length
        calculation in log_margin_checkpoint_age()
        has been revised.
       (Bug #21924224, Bug #78647)
InnoDB: A full-text query run under high concurrency caused a server exit due to an invalid memory access. (Bug #21922532)
InnoDB: 
        An ALTER TABLE operation on a
        table partitioned across multiple tablespaces moved existing
        partitions to the table's default tablespace, resulting in an
        assertion on SHOW CREATE
        TABLE. Likewise,
        ALTER TABLE
         moved
        existing partitions to the named tablespace. Only
        tbl_name TABLESPACE
        tablespace_nameALTER TABLE ...
        REORGANIZE PARTITION should move existing partitions
        to the table's default tablespace or to a named tablespace.
        Running ALTER TABLE
         on a table
        partitioned across multiple tablespaces should only change the
        table's default tablespace.
       (Bug #21914047, Bug #22124042, Bug #79030)tbl_name TABLESPACE
        tablespace_name
InnoDB: 
        With a large
        innodb_sort_buffer_size
        setting, adding an index on an empty table performed more slowly
        than expected.
       (Bug #21762319, Bug #78262)
InnoDB: 
        A race condition occurred between
        fil_names_write() and
        file_rename_tablespace_in_mem().
       (Bug #21549928)
InnoDB: Purge attempted to access undo pages that were freed by a preceding undo log truncate operation, resulting in an assertion. (Bug #21508627)
InnoDB: 
        InnoDB did not return an informative message
        when refusing an online ALTER
        TABLE operation on a table with a spatial index.
       (Bug #20111575)
InnoDB: 
        A compiler barrier was added to
        ut_relax_cpu(). The
        ut_always_false dummy global variable was
        removed from ut_delay().
       (Bug #20045167, Bug #74832)
InnoDB: Incorrect index values were returned while dropping a virtual column. The altered table object was used to evaluate virtual column values. (Bug #79773, Bug #22469459)
References: This issue is a regression of: Bug #22082762.
Partitioning: Subquery scans on partitioned tables with virtual columns could leak memory. (Bug #79145, Bug #22162200)
Replication: 
        The behavior of SET GTID_PURGED was not
        consistent between version 5.6 and 5.7. The fix ensures that
        version 5.7 does not initiate a transaction for SET
        GTID_PURGED statements.
       (Bug #21472492)
Replication: 
        When DML invokes a trigger or a stored function that inserts
        into an AUTO_INCREMENT column, that DML has
        to be marked as an unsafe statement. If the tables are locked in
        the transaction prior to the DML statement (for example by using
        LOCK TABLES), then the DML
        statement was not being marked as an unsafe statement. The fix
        ensures that such DML statements are marked correctly as unsafe.
       (Bug #17047208)
Replication: 
        If pseudo_slave_mode was set to
        1 while an XA transaction was in the prepare stage, an assert
        was generated. The fix ensures that changes from 0 to 1 can be
        made during XA transactions. Note that this variable is solely
        for internal use by the server.
       (Bug #79416, Bug #22273964, Bug #78695, Bug #21942487)
Replication: When using GTIDs, a GTID-violating statement generates an error in the following cases:
            gtid_mode is either
            ON or ON_PERMISSIVE
            and gtid_next=AUTOMATIC
          
The error prevented the implicit pre-commit, which caused a race condition. This has been fixed by making the error not prevent the implicit pre-commit from happening. This matches the expected behavior for GTID-violating DDL statements to implicitly commit the previous transaction before executing it. (Bug #78543, Bug #21895421)
Replication: 
        When a slave was configured with
        log_bin=OFF, the applier (SQL)
        thread was failing to correctly roll back partial transactions
        left in the relay log. The fix ensures that on reconnection, the
        applier thread correctly rolls back a partial transaction and
        starts applying it again from the next relay log file.
       (Bug #78211, Bug #21691396)
Replication: 
        If the server stopped unexpectedly immediately before committing
        an XA transaction which had been prepared, and the transaction
        modified the mysql.gtid_executed table, then
        the subsequent recovery aborted due to an
        innodb_lock_wait_timeout error
        when it was reading the mysql.gtid_executed
        table. To fix the problem, XA transactions are no longer
        permitted to modify the mysql.gtid_executed
        table.
       (Bug #77740, Bug #21452916)
Replication: 
        As part of the fix for Bug #16290902, when writing a
        DROP TEMPORARY TABLE
        IF EXISTS query into the binary log, the query is no
        longer preceded by a USE `db` statement.
        Instead the query uses a fully qualified table name, for example
        DROP TEMPORARY TABLE
        IF EXISTS `db`.`t1`;. This changed the application of
        replicate-rewrite-db filter
        rules, as they work only on the default database specified in a
        USE statement. This caused slaves
        to fail when the resulting CREATE TEMPORARY
        TABLE was applied. The fix ensures that at the time of
        writing a DROP
        TEMPORARY TABLE IF EXISTS query into the binary log, a
        check is made for the default database. If it exists then the
        query is written as USE default_db in the
        binary log. If a default database is not present then the query
        is logged with the qualified table name.
       (Bug #77417, Bug #21317739)
Replication: 
        If generating a GTID for a transaction fails, the transaction is
        not written to the binary log but still gets committed. Although
        running out of GTIDs is a rare situation, if it did occur an
        error was written to the binary log as a sync stage error. With
        binlog_error_action=ABORT_SERVER,
        the server aborts on such an error, avoiding data inconsistency.
        When
        binlog_error_action=IGNORE_ERROR,
        the server continues binary logging after such an error,
        potentially leading to data inconsistency between the master and
        the slave. The fix changes the error to be correctly logged as a
        flush stage error.
       (Bug #77393, Bug #21276561)
Replication: 
        When using --gtid-mode=ON ,
        --enforce-gtid-consistency ,
        and --binlog-format=row, if a
        user defined function with multiple
        DROP TEMPORARY
        TABLE statements was executed on a master, the
        resulting binary log caused an error on slaves. The fix ensures
        that stored functions and triggers are also considered
        multi-statement transactions, and that when
        --enforce-gtid-consistency is
        enabled, functions with
        CREATE TEMPORARY
        TABLE or
        DROP TEMPORARY
        TABLE statements generate an
        ER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTION
        error.
       (Bug #77354, Bug #21253415)
Replication: 
        Stored procedure local variables that were used in an
        ALTER EVENT statement were not
        being replicated correctly. This was related to the fact that
        CALL statements are not written
        into the binary log. Instead each statement executed in a stored
        procedure is binary logged separately, with the exception that
        the statement string is modified so that uses of stored
        procedure local variables are replaced with
        NAME_CONST('spvar_name',
        'spvar-value') calls. DDL statements (which are always
        binary logged in statement binary log mode irrespective of the
        current binary log format) can also use stored procedure local
        variables and a clash could cause them to not be replicated
        correctly. The fix ensures that any stored procedure local
        variables used in a statement are replaced with
        NAME_CONST(...), except for the
        case when it is a DML statement and the binary log format is
        ROW.
       (Bug #77288, Bug #21229951)
Replication: 
        DROP TABLE statements are
        regenerated by the server before being written to the binary
        log. If a table or database name contained a non-regular
        character, such as non-latin characters, the regenerated
        statement was using the wrong name, breaking replication. The
        fix ensures that in such a case the regenerated name is
        correctly converted back to the original character set. Also
        during work on this bug, it was discovered that in the rare case
        that a table or database name contained 64 characters, the
        server was throwing an assert(M_TBLLEN <
        128) assertion. The assertion has been corrected to be
        less than or equal 128.
       (Bug #77249, Bug #21205695)
References: See also: Bug #78036, Bug #22261585, Bug #21619371.
Replication: 
        Irrespective of the current
        binlog_format setting, DDL that
        changes metadata on a master is always identified and written to
        the binary log in STATEMENT format. Such DDL
        could occur from event based SQL statements, such as
        CREATE EVENT or
        DROP EVENT, or transactions that
        had unsafe functions such as
        sysdate(). When
        binlog_format=MIXED and
        attempting to replicate such DDL, it was not being correctly
        identified and therefore was not being correctly replicated.
       (Bug #71859, Bug #19286708)
Microsoft Windows: Thread handle resource leakage could occur when creating threads for handling connections on Windows, which could lead to Windows servers eventually running out of handles. (Bug #79714, Bug #22455198)
JSON: 
        Syntax checks were not always performed when an
        ALTER TABLE statement changed a
        column's type from TEXT to
        JSON. This could lead to
        JSON columns containing invalid JSON data.
        This issue was observed when the original
        TEXT column used the
        utf8mb4_bin collation.
       (Bug #79432, Bug #22278524)
        The System-V initialization script for RHEL6 or older failed to
        enable the mysqld service by default.
       (Bug #22600974)
        Some activations of triggers that referenced a
        NEW value inside a query might cause a server
        exit.
       (Bug #22377554)
        Parsing the output of
        ST_GeometryType() as a
        DATETIME value with a default
        character set of utf32 caused a server exit.
       (Bug #22340858)
For a character set loaded from an XML file, the server could fail to properly initialize its state map, leading to a server exit. (Bug #22338946)
Inserting a token of 84 4-byte characters into a full-text index raised an assertion. The maximum token length was 84 characters up to a maximum of 252 bytes, which did not account for 4-byte characters. The maximum byte length is now 336 bytes. (Bug #22291765, Bug #79475)
For some combination of consumers, the Performance Schema prepared statement instrumentation could cause a server exit. (Bug #22291560)
        If a client attempted to use an unsupported client character set
        (ucs2, utf16,
        utf32), the error message reported to the
        client differed for SSL and non-SSL connections.
       (Bug #22216715)
        Data corruption or a server exit could occur if a stored
        procedure had a variable declared as
        TEXT or
        BLOB and data was copied to that
        variable using SELECT ... INTO syntax from a
        TEXT or
        BLOB column.
       (Bug #22203532, Bug #22232332, Bug #21941152)
        For debug builds, with the
        ONLY_FULL_GROUP_BY SQL mode
        disabled, the optimizer could attempt to sort on outer
        references, causing an assertion to be raised.
       (Bug #22200984)
        Different handling of YEAR values
        for INSERT and
        SELECT could raise an assertion
        when such values were used in a generated-column expression.
       (Bug #22195458)
        For debug builds, for queries involving
        MIN() or
        MAX() on an indexed column and a
        reference to an unindexed datetime column, the optimizer could
        attempt to access unread values, causing an assertion to be
        raised.
       (Bug #22186926)
        Geohash decoding (for example, for
        ST_LongFromGeoHash(),
        ST_LatFromGeoHash(), and
        ST_PointFromGeoHash()) could
        yield incorrect results due to the rounding algorithm being too
        aggressive.
       (Bug #22165582)
        In debug builds, with READ
        UNCOMMITTED transaction isolation level, a
        SELECT reading a generated column
        using an index could raise an assertion.
       (Bug #22133710)
For generated columns, the optimizer could fail to establish the proper table reference, resulting in a server exit. (Bug #22132822)
        For some combination of consumers, the Performance Schema file
        instrumentation could fail due to an attempt to use a
        NULL pointer while instrumenting temporary
        file I/O.
       (Bug #22130453)
The Performance Schema could raise an assertion based on the (incorrect) assumption that instrumenting a temporary file open operation always resulted in an instrumented file. (Bug #22118669)
        An ALTER TABLE statement that
        added an index on a virtual generated column using the
        INPLACE algorithm did not properly report
        warnings (or errors in strict SQL mode) for problems with
        virtual column values. Any subsequent ALTER
        TABLE on the same table using the
        COPY algorithm produced such warnings (or
        failures in strict SQL mode) due to evaluating the problematic
        value, but left the connection in a state that made further
        INPLACE alterations on the table fail for the
        same reason.
       (Bug #22095783)
        If the left expression of an IN expression
        was a row subquery that accesses no tables, an assertion could
        be raised (in debug builds), or incorrect results could be
        returned (in release builds).
       (Bug #22089623)
Expressions that match an indexed generated column may be replaced with the generated column by the optimizer to enable use of the associated index. However, this optimization was not performed for single-table update and delete statements. The optimizer now extends this replacement optimization to such statements. (Bug #22077611)
        ANSI SQL mode could cause
        inconsistencies in processing of generated column expressions.
       (Bug #22018979)
Removal of server session plugins was faulty and could cause a server exit. (Bug #21983102)
For some queries, if the optimizer used Disk-Sweep Multi-Range Read optimization on generated columns, the server could exit. (Bug #21980430)
        mysqlpump tries to do as much work in
        parallel as possible, but the dump threads lacked a
        synchronization point before backing up the data, resulting in
        inconsistent backup. mysqlpump now locks the
        server and flushes all the tables using
        FLUSH TABLES WITH READ LOCK to
        ensure that any further connections view the same state of all
        the databases.
      
        This change lifts the restriction aginst the
        --single-transaction option
        being mutually exclusive with parallelism. When using
        --single-transaction, it is no
        longer necessary to disable parallelism by setting
        --default-parallelism to 0 and
        not using any instances of
        --parallel-schemas.
       (Bug #21980284)
        A fault in pthread_rwlock_unlock() wherein it
        decremented the lock counter even for already unlocked objects
        could result in deadlock.
       (Bug #21966621)
The Performance Schema could acquire a double lock on session system variables, causing a server hang or (in debug builds) an assertion to be raised. (Bug #21935106)
        Certain queries containing WHERE 0 of the
        following form could cause a server exit due to uninitialized
        reads: SELECT (SELECT .
       (Bug #21922202)col
        AND constant FROM t WHERE 0) IN
        (SELECT constant FROM t1)
        CREATE TEMPORARY TABLE .. SELECT statements
        involving BIT columns that
        resulted in a column type redefinition could cause a server exit
        or an improperly created table.
       (Bug #21902059)
        For UPDATE operations on
        InnoDB tables, there could be a mismatch
        between the value of a virtual generated column in the index and
        the value in the “before” buffer, resulting in a
        server exit.
       (Bug #21875520)
        With
        character_set_server=utf16le,
        some values of
        ft_boolean_syntax could cause a
        server exit for full-text searches.
       (Bug #21631855)
        With gtid_mode=ON, concurrent
        execution of SHOW TABLE STATUS
        and REVOKE ALL
        PRIVILEGES could lead to deadlock in there was a view
        in the database and
        REVOKE ALL
        PRIVILEGES failed for some but not all of the named
        users.
       (Bug #21463167)
mysqlpump could exit due to incorrect synchronization of view-handling threads during dump processing. (Bug #21399236, Bug #21447753)
        With LOCK TABLES in force, an
        attempt to open a temporary MERGE table
        consisting of a view in its list of tables (not the last table
        in the list) caused a server exit.
       (Bug #20691429)
For certain prepared statements, the optimizer could transform join conditions such that it used a pointer to a temporary table field that was no longer available after the initial execution. Subsequent executions caused a server exit. (Bug #19941403)
        Repeated execution of ALTER TABLE v1 CHECK
        PARTITION as a prepared statement, where
        v1 is a view, led to a server exit.
      
        In addition, output for some administrative operations, when
        they are attempted on a view, changes from
        “Corrupt” to “Operation failed”. These
        include ANALYZE TABLE,
        OPTIMIZE TABLE, and
        REPAIR TABLE, and
        ALTER TABLE statements that
        perform ANALYZE PARTITION, CHECK
        PARTITION, OPTIMIZE PARTITION, and
        REPAIR PARTITION operations.
       (Bug #19817021)
Valgrind detected some possibly unsafe use of string functions in code used for asymmetric encryption. (Bug #19688135)
An out-of-memory failure in join buffer allocation could lead to incorrect results for multiple-table queries. (Bug #19031409)
        SSL connections ignored any change made by passing the
        MYSQL_OPT_READ_TIMEOUT option to the
        mysql_options() C API function.
       (Bug #17618162)
        For ALTER TABLE statements, the
        parser did not support the ALGORITHM clause
        for some operations involving tablespaces or partitions.
       (Bug #17400320)
        Debian packages create the root user account
        using the auth_socket authentication plugin
        to achieve secure-by-default installation if installation was
        done with a blank root password. However,
        auth_socket was being used even if the
        password was not blank.
       (Bug #80137, Bug #22594846, Bug #23321113, Bug #81518)
        Solaris packages failed to note the dependency of the MySQL
        client library on the libstlport library.
       (Bug #79778, Bug #22504264)
        Using systemd to start mysqld failed if
        configuration files contained multiple
        datadir lines. Now the last
        datadir line is used.
       (Bug #79613, Bug #22361702)
        A derived table contained in the SET clause
        of an UPDATE statement should be
        materialized to avoid an error about updating a table that is
        also read in the same statement. Materialization did not occur
        for some statements, leading to that error.
       (Bug #79590, Bug #22343301)
        MySQL 5.7.8 prohibited references to select list columns of the
        outer query from the HAVING clause of a
        correlated subquery in the inner query because they are not
        permitted by standard SQL. However, because this is a frequently
        used extension, it is once again permitted.
       (Bug #79549, Bug #22328395)
References: This issue is a regression of: Bug #19823076.
        Installing just shared libraries, clients, and development
        support files failed to install everything needed to build
        client applications because the
        binary_log_types.h header file was not
        installed.
       (Bug #79531, Bug #22321338)
        SHOW CREATE TRIGGER could fail to
        display all applicable SQL modes.
       (Bug #79526, Bug #22313133)
References: This issue is a regression of: Bug #18311187.
        On SELinux, mysqld --initialize with an
        init_file system variable could
        fail to initialize the data directory.
       (Bug #79442, Bug #22314098, Bug #79458, Bug #22286481)
        Hexadecimal and bit literals written to saved view definitions
        could be truncated. This could also affect extended
        EXPLAIN output.
       (Bug #79398, Bug #22268110)
        ST_Buffer() returned an error for
        geometries with an SRID different from 0. Nonzero SRID values
        now are permitted but ignored (calculations are still done using
        Cartesian coordinates).
       (Bug #79394, Bug #22306745)
        A regression caused failure of the workaround at
        Restrictions on Subqueries for avoiding
        ER_UPDATE_TABLE_USED errors when
        referencing the same table in a subquery as was used as target
        for an UPDATE or
        DELETE statement.
       (Bug #79333, Bug #22239474)
Statements causing multiple parse errors could cause an assertion to be raised. (Bug #79303, Bug #22222013)
Some queries with derived tables perform better with materialization than when merged into the outer query. The optimizer no longer uses merging by default for derived tables containing dependent subqueries in the select list. (Bug #79294, Bug #22223202)
        ALTER USER and
        SET PASSWORD did not work at
        server startup when invoked in the file named using the
        init_file system variable.
       (Bug #79277, Bug #22205360)
        When not in strict SQL mode, attempts to implicitly insert
        NULL into a NOT NULL
        column resulted in different behavior depending on whether the
        table had a trigger.
       (Bug #79266, Bug #22202665)
        Some replication-only code was not protected with
        #ifdef and failed to compile with the
        WITH_UBSAN
        CMake option enabled.
       (Bug #79236, Bug #22190632)
        Configuring MySQL with the
        -DWITH_UBSAN=ON
        CMake option resulted in spurious runtime
        warnings from comp_err. These are now
        suppressed. Also, a CMake warning was added
        that undefined behavior address sanitizer support is currently
        experimental.
       (Bug #79230, Bug #22190656)
        INSERT INTO ... SELECT statements could
        insert values other than DEFAULT into
        generated columns.
       (Bug #79204, Bug #22179637)
        With the derived_merge flag of
        the optimizer_switch system
        variable enabled, queries that used a derived table on the inner
        side of an outer join could return incorrect results.
       (Bug #79194, Bug #22176604)
References: See also: Bug #80526, Bug #22833364.
        Memory leaks in libmysqld were corrected.
       (Bug #79187, Bug #22174219)
        FOUND_ROWS() could return a
        negative value if the preceding query was a
        UNION involving
        SQL_CALC_FOUND_ROWS and LIMIT ...
        OFFSET.
       (Bug #79131, Bug #22155786)
        IN-to-EXISTS subquery
        transformation could cause SELECT NULL IN
        ( to return 0
        rather than subquery)NULL.
      
        IN-to-EXISTS subquery
        transformation could yield incorrect results for queries for
        which the table was nonempty, the subquery on the left side of
        the IN predicate produced an empty result,
        and semijoin optimization was disabled.
       (Bug #78946, Bug #22090717, Bug #74403, Bug #19822406)
        The result from WEIGHT_STRING()
        could be incorrect when used in a view.
       (Bug #78783, Bug #21974321)
        For connections made using a Unix socket file, specifying the
        --ssl-ca option caused the
        connection to fail.
       (Bug #78509, Bug #21878661)
        If server was started with
        --thread-handling=no-threads, no
        foreground thread was created for a client connection. The
        Performance Schema did not account for the possibility of no
        foreground threads for queries on the
        session_connect_attrs table,
        causing an assertion to be raised.
       (Bug #78292, Bug #21765843)
        mysqlpump generated incorrect
        INSERT statements for tables that
        had generated columns.
       (Bug #78082, Bug #21650559)
        ALTER TABLE ...
        CONVERT TO CHARACTER SET operations that used the
        INPLACE algorithm were ineffective if the
        table contained only numeric data types. Also, such operations
        failed to clean up their temporary .frm
        file.
       (Bug #77554, Bug #21345391)
        Heavy SHOW PROCESSLIST or
        SELECT ... FROM
        INFORMATION_SCHEMA.PROCESSLIST activity could result
        in the server accepting more than
        max_connections connections.
       (Bug #75155, Bug #20201006)
        When used with the libmysqld embedded server,
        the mysql_stmt_execute() C API
        function failed with a malformed communication
        packet error, even for simple prepared statements.
       (Bug #70664, Bug #17883203)
        Queries using SUM(DISTINCT) could
        produce incorrect results when there were many distinct values.
       (Bug #56927, Bug #11764126, Bug #79648, Bug #22370382)