* For builds on 32-bit platforms with Undefined Behavior
       Sanitizer enabled, a stack-overrun check could cause a
       server exit. (Bug #27224961)

     * The server could hang during spatial reference system
       (SRS) creation while another session was using that SRS.
       (Bug #27220467)

     * A lock for the privilege cache was acquired unnecessarily
       during privilege-checking operations not involving table
       permissions. (Bug #27197483)

     * Persisting the read-only gtid_owned or gtid_executed
       system variable caused an assertion failure at server
       startup. These variables can no longer be persisted. (Bug

     * Improper handling of plugin loading and unloading could
       cause a server exit. (Bug #27151550, Bug #88589, Bug
       #27116827, Bug #88483)

     * Error propagation from some windowing functions was not
       always performed correctly. (Bug #27135084, Bug

     * Negation of some very large values was not handled
       correctly by an internal function. (Bug #27134168)

     * Instituted stricter checks when performing addition
       involving date intervals. (Bug #27134148)

     * Recently introduced SRID and COLUMN_STATISTICS metadata
       locks were not instrumented by the Performance Schema.
       (Bug #27124506)

     * The name of a derived table was not saved before the
       table was materialized and assigned the name of the
       temporary table. Later, when trying to reset the table
       name, this caused the server to fail due to the missing
       reference to the original value of the name. (Bug

     * Performance Schema queries that used indexes on
       OBJECT_TYPE columns could return incorrect results. (Bug

     * Compiling with -DWITH_ASAN=1 and -DWITH_ASAN_SCOPE=1
       detected a stack-use-after-scope memory error. (Bug
       #27108794, Bug #88460)

     * FILE privilege checking for prepared SELECT ... INTO
       OUTFILE statements was incorrect. (Bug #27094955)

     * Some messages with note priority were written to the
       error log when log_error_verbosity was less than 3. (Bug

     * The ha_create_table_from_engine function failed to pass a
       table object to the ha_create routine. (Bug #27066335)

     * Partition by and order by elements of unused window
       definitions were not included when estimating memory
       requirements. This is resolved by assigning a parsing
       context (CTX_WINDOW), but only when the current context
       is CTX_NONE. As part of this fix, unused window
       definitions are now removed after being checked for
       syntax and semantic errors. (Bug #27062031)

     * GROUP BY with a ROLLUP that generated NULL was not
       handled correctly. (Bug #27060420)

     * An Event Scheduler event for which global autocommit was
       disabled at event expiration time caused an assertion to
       be raised. (Bug #27041552, Bug #88255)

     * Length calculations for string-valued user-defined
       variables could be incorrect if the collation was
       changed. (Bug #27041543, Bug #88256)

     * CREATE TABLE ... SELECT statements that attempted to
       create a non-InnoDB table raised an assertion if a
       pre-existing view referenced the table to be created.
       (Bug #27041536, Bug #88258)

     * When used as an argument to the IF() function, the value
       of a TIMESTAMP column could be handled differently for
       different collations. (Bug #27041526, Bug #88259)

     * With statement-based binary logging, using CREATE TABLE
       ... SELECT to create a BLACKHOLE table caused an
       assertion to be raised. (Bug #27041516, Bug #88260)

     * For debug builds, a TIMESTAMP-related assertion could be
       raised with explicit_defaults_for_timestamp enabled. (Bug
       #27041502, Bug #88261)

     * Under LOCK TABLES, an attempt to execute a DML statement
       on a table with foreign keys led to assertion failure if
       the statement was incompatible with the mode under which
       the tables in the foreign key relationship were locked.
       (Bug #27041477, Bug #88264)

     * With a LOCK TABLES statement active, queries that select
       from the INFORMATION_SCHEMA.FILES table could raise an
       assertion trying to obtain a metadata lock. (Bug
       #27041452, Bug #88266)

     * Server component installation did not properly perform
       auto-increment handling, which could result in a server
       exit. (Bug #27041374, Bug #88276)

     * With big_tables=1 and character_set_connection=ucs2, SHOW
       TABLE STATUS could raise an assertion. (Bug #27041323,
       Bug #88279)

     * With a backup lock active, removal of binary log files
       and relay log files incorrectly was permitted. (Bug

     * When evaluating an end-range condition in a scan of a
       non-covering secondary index, and the end-range condition
       referenced an indexed virtual column, InnoDB sometimes
       read the wrong column from the index, which could lead to
       assertion failures or wrong results. (Bug #27010089)

     * In event items in filter rules, the audit_log plugin did
       not properly process values specified as a JSON array.
       (Bug #27010045)

     * An integer overflow was sometimes possible when adding
       date values, with the potential to return invalid
       results. (Bug #27004806)

     * TRUNCATE TABLE on an InnoDB table with an active LOCK
       TABLES raised an assertion if more than one table
       instance was locked. (Bug #26999526)

     * Some windowing functions including NTH_VALUE() did not
       return NULL in all cases in which they should have. (Bug

     * If one of the temporal arguments to LEAST() or GREATEST()
       was of type DATETIME, but the aggregated data type was
       something other than VARCHAR or a temporal type, the
       LEAST() or GREATEST() item had temporal properties set
       for it in spite of the fact that it was not of a temporal
       data type. The temporal properties for the LEAST() or
       GREATEST() item, including its fractional precision, were
       therefore not calculated correctly, leading to failure at
       a later point in statement execution.
       To fix this issue, the data type of LEAST() or GREATEST()
       is now temporarily set to a temporal type if one or more,
       but not all, of its arguments are of temporal types
       regardless of their aggregated data type. (Bug #26975864)

     * IFNULL() did not always check for errors correctly when
       processing multiple arguments. (Bug #26975848, Bug
       #27062796, Bug #27062694)

     * With compression enabled for the client/server protocol,
       logical packets that are multiples of size 0xFFFFFF could
       cause the connection to be dropped. Thanks to Facebook
       Inc. for the patch. (Bug #26974113, Bug #88092)

     * Installing and uninstalling a plugin many times from
       multiple sessions could cause the server to become
       unresponsive. (Bug #26946491)

     * A virtual column definition that included a function
       removed in MySQL 8.0 caused startup to fail with a "No
       database selected" error when starting the MySQL 8.0
       server on a MySQL 5.7 data directory. (Bug #26945125, Bug

     * These errors occurred after an in-place upgrade from
       MySQL 5.7 to 8.0:

          + Starting the server with an
            --explicit-defaults-for-timestamp=0 setting returned
            an Invalid default value for 'cached_time' error.

          + Starting the server with --initialize and
            --explicit-defaults-for-timestamp=0 configuration
            settings returned an Invalid default value for
            'SET_TIME' error.

          + Duplicate SET data type values caused a Duplicated
            value in SET error, regardless of the sql_mode
            configuration setting.
       (Bug #26944731, Bug #88039, Bug #26948678, Bug #88032)

     * Queries with a common table expression and a derived
       table or view that contained a window function produced
       incorrect results. (Bug #26907753, Bug #87939)

     * The deprecation warnings were clarified regarding use of
       the --symbolic-links and --skip-symbolic-links server
       options (and their equivalents). The server no longer
       warns about a missing data directory when invoked with
       the --help option. (Bug #26898576, Bug #87913)

     * VALUES() was not handled correctly in some cases. (Bug
       References: See also: Bug #19601973, Bug #17458914.

     * The tablespace discovery mechanism in MySQL Cluster was
       disabled, which prevented serialized dictionary
       information from being imported into the data dictionary
       in cases where the table exists in the storage engine
       dictionary but not in the MySQL data dictionary. (Bug

     * For debug builds, validation checks on relevant generated
       columns could be missed for UPDATE statements, leading to
       a server exit. (Bug #26838771)

     * For window functions, an error could be produced that a
       window was not defined, when it was defined. (Bug
       #26813454, Bug #87780)

     * When a materialized derived table was determined to be
       superfluous, the routine that deleted the corresponding
       object left it in an inconsistent state. Now in such
       cases, the derived table's TABLE_LIST object left in a
       consistent state after its materialized object is
       deleted, by setting its table pointer to NULL. (Bug

     * Incorrect results were obtained for a query with MAX()
       and a HAVING clause used inside a view. (Bug #26781725)

     * Metadata locking for definition changes to tables
       underlying a view could be inconsistent with metadata
       locking for other statements on the tables. (Bug

     * In MySQL 8.0, view column names are restricted to 64
       characters. A MySQL 5.7 view with longer column names was
       marked as invalid during an upgrade to 8.0 was marked
       invalid. Now such views produce an error during the
       upgrade and must be altered to have legal column names
       before the upgrade will succeed. (Bug #26743291, Bug

     * Concurrent calls to GET_LOCK() could cause deadlock, even
       with a wait time of 0. (Bug #26739438, Bug #87620)

     * FROM_UNIXTIME() did not always work correctly with LAG().
       (Bug #26739028)

     * Following an INSERT statement with BLOB values in the ON
       DUPLICATE KEY UPDATE clause that failed with a constraint
       violation, a similar statement with no reason to return
       an error could cause a server exit. (Bug #26734162)

     * The Performance Schema now stores rewritten rather than
       raw SQL statement text when available. (Bug #26732229)

     * Re-executing a prepared statement that used window
       functions could cause a server exit. (Bug #26730020)

     * An in-place upgrade to MySQL 8.0 caused a server exit if
       tables contained columns with a pre-5.0 DECIMAL data
       type. This data type is not supported, so upgrades now
       detect such columns and warn that in-place upgrade cannot
       be done. Affected tables must be upgraded by dumping and
       restoring them. (Bug #26727481)

     * A comparison operator used to order keys in a data
       dictionary cache hash map incorrectly determined that two
       storage-engine private IDs used by different storage
       engines were equal. (Bug #26723442)

     * Values in the XID_GTRID column of the Performance Schema
       events_transactions_current table were displayed
       incorrectly for XA transactions. (Bug #26710081, Bug

     * Incorrect results or a server exit could result when
       SHA2() was passed a user-defined variable in some
       character sets. (Bug #26704451)

     * Incorrect NULL handling by LAG() and LEAD() could cause a
       server exit. (Bug #26703246, Bug #26703156)

     * mysqlpump no longer includes the SQL_NO_CACHE modifier in
       statements because that modifier is now deprecated and
       results in deprecation warnings. (Bug #26694675)

     * If an error occurred while setting up the temporary table
       for duplicate weedout in a semi-join (for example,
       because the disk was full), the server did not terminate
       gracefully with an appropriate error message.
       Now in the event that the temporary table is not
       successfully created, the query is aborted. (Bug

     * The server did not always clean up correctly after
       executing an IN subquery that used a hash semi-join. (Bug

     * Building with the -DWITHOUT_SERVER=ON CMake option failed
       due to attempting to link the
       authentication_ldap_sasl_client client-side plugin
       against the embedded server library. (Bug #26665217)

     * During data directory creation or upgrade from MySQL 5.7
       to 8.0, server startup would fail due to a Performance
       Schema initialization failure if the server was started
       in read_only mode. Additionally, Information Schema
       metadata was not updated at startup, and Performance
       Schema and Information Schema version information was
       stored without verifying that schema tables were created.
       The versioning scheme used for the data dictionary and
       Information Schema system views is now consistent with
       the Performance Schema versioning scheme. (Bug #26636238,
       Bug #87436)

     * The CREATE_OPTIONS column in the
       INFORMATION_SCHEMA.TABLES table did not show correct
       information. (Bug #26634507)

     * Incorrect results could be returned for queries that used
       an outer join and a derived table referenced a const
       value from an inner table of the outer join. (Bug

     * AFTER UPDATE triggers were not invoked for INSERT ... ON
       DUPLICATE KEY UPDATE when the value to be updated and the
       new value were the same. (Bug #26626277, Bug #87371)

     * Assignment of anonymous roles to the mandatory_roles
       system variable was incorrectly permitted. Additionally,
       assigning a value to mandatory_roles now requires the
       ROLE_ADMIN privilege, in addition to the
       SYSTEM_VARIABLES_ADMIN or SUPER privilege normally
       required to set a global system variable. (Bug #26576989)

     * The server fell back to using the built-in error messages
       if the lc_messages_dir value was invalid at server
       startup, but not if lc_messages or lc_time_names were
       invalid. Now the server uses the built-in messages if any
       of those variables are invalid at startup. (Bug

     * SET DEFAULT ROLE ALL did not include roles named in the
       mandatory_roles system variable. (Bug #26571995)

     * On Windows, CMake did not automatically add x64 toolchain
       support for some Visual Studio versions. (Bug #26566360)

     * Problems could occur when a derived table with an ORDER
       BY clause was merged into an outer query, and when the
       columns from the ORDER BY were not also referenced in the
       outer query. (Bug #26542829)

     * Parallel inserts of schema SDI into the SDI B-tree could
       raise an assertion when creating tables in the same
       schema in parallel. (Bug #26539665, Bug #87225)

     * Changing the UMASK and UMASK_DIR environment variables
       from their default values had no effect on database
       directory and table file access. (Bug #26529942)

     * For debug builds, incorrect nullability assessment of
       derived table column references could cause CONCAT() to
       raise an assertion. (Bug #26524721)

     * A server exit could result from simultaneous attempts by
       multiple threads to register and deregister metadata
       Performance Schema objects, or to acquire and release
       metadata locks. (Bug #26502135)

     * MSI packages for Windows failed to detect when Microsoft
       Visual C++ 2010 Redistributable Package was installed.
       (Bug #26501092, Bug #87139)

     * Queries that used window functions for tables that
       contained a BLOB column could cause a server exit. (Bug

     * Persisted variables belonging to plugins were not always
       handled properly at server startup. (Bug #26495619)

     * A server exit could occur for queries that used DISINCT
       and ORDER BY ... LIMIT and were executed using range
       access and a temporary table for the ORDER BY. (Bug

     * LDAP authentication plugins could fail if their
       associated system variables were set to invalid values.
       (Bug #26474964)

     * The Linux RPM spec file for RHEL6 and higher is updated
       with comments that recommend installing the
       redhat-rpm-config package to add convenience macros that
       make rebuilding the RPM package easier. Thanks to Simon
       Mudd for the patch. (Bug #26474153, Bug #87098)

     * If the error log was misconfigured and the server could
       not start, no output describing the problem was produced.
       (Bug #26447825, Bug #87087)

     * When a materialized semi-join operation was evaluated
       more than once, and one of the tables in the
       materialization was a const table (that is, with join
       type JT_CONST), invalid data was accessed during the
       second materialization when referencing the const table.
       (Bug #26436185)

     * Password-expiration options did not work correctly for
       authentication plugins that use external authentication
       methods. (Bug #26435766)

     * Adding an ORDER BY to a query that included an outer join
       and a subquery caused a constant value defined for a
       column in the subquery to be incorrectly promoted to a
       constant value in the case when the subquery returns 0
       rows. (Bug #26432173)

     * For the autocommit system variable, the Performance
       Schema variables_info table always reported the
       VARIABLE_SOURCE column as COMPILED. (Bug #26428017)

     * For debug builds, INSERT IGNORE statements that tried to
       insert NULL into a GEOMETRY NOT NULL column raised an
       assertion because there is no valid value to convert the
       NULL to. This is now handled as a nonignorable
       ER_BAD_NULL_ERROR_NOT_IGNORED error. (Bug #26412713)

     * SET PERSIST_ONLY changed the VARIABLE_SOURCE column of
       the Performance Schema variables_info table when it
       should not have. (Bug #26395134)

     * The server failed to check the maximum path length for
       partition names. (Bug #26390632)

     * Problems occurred when a window with buffering followed
       an equi-join on a unique index, due to the fact that the
       window modified the input record with the assumption
       that, the next time control passes back to the join, a
       new record was read to the input record. This problem is
       addressed by reinstating the input record in such cases.
       (Bug #26389508)

     * Identifiers containing a mixt of backslashes and
       backticks could be parsed incorrectly. (Bug #26372491)

     * audit_log plugin THD objects could be created with
       incorrect thread ID information, leading to assertion
       failure. (Bug #26362452)

     * The HISTOGRAM column in the column_statistics data
       dictionary table used a key named charset-id to indicate
       collation numbers. This key has been renamed to
       collation-id. (Bug #26330090, Bug #86794)

     * Starting the server with the --skip-name-resolve option
       could cause localhost in account entries to match
       non-localhost hosts. (Bug #26328274, Bug #26202411, Bug

     * Installing and uninstalling Performance Schema example
       plugins concurrently with deletes from tables associated
       with those plugins could cause a server exit. (Bug

     * When HASH_SCAN was specified as one of the values for the
       slave_rows_search_algorithms system variable, which is
       the default from MySQL 8.0.2, and row-based replication
       was in effect, updates to a table containing virtual
       generated fields could raise an assertion. The issue was
       caused by an error when generating string representations
       of the virtual generated fields in order to create hashes
       for use in searches. To remove the issue, MySQL no longer
       creates hashes for virtual generated fields. (Bug

     * The server permitted SHOW CREATE TABLE on nontable files
       created for full-text searching. (Bug #26271244)

     * For debug builds, CREATE OR REPLACE VIEW for an existing
       view raised an assertion for column names greater than 64
       characters. Now an appropriate error is reported. (Bug

     * SET PERSIST could be ineffective due to sorting variables
       written to mysqld-auto.cnf. Variables are now written in
       the order persisted. (Bug #26259671)

     * Attempting a partial backup with mysqlpump on a
       GTID-enabled server failed and produced an error message
       suggesting incorrectly that this was not possible. (It is
       possible using the --set-gtid-purged option.) (Bug

       for static but not dynamic privileges. REVOKE ALL ...
       FROM CURRENT_USER() revoked static but not dynamic
       privileges. (Bug #26191109, Bug #25658967)

     * Error logging could attempt to log freed messages,
       resulting in a server exit. (Bug #26188656, Bug #86562)

     * A HAVING condition was optimized away for an alias on an
       aggregate column where there was no GROUP BY clause. (Bug

     * ST_Crosses() could return an incorrect result when at
       least one parameter is a geometry collection and multiple
       elements of the geometry collection must be taken into
       account in order to determine whether the geometries
       cross. (Bug #26188208, Bug #86559)

     * MBROverlaps() incorrectly returned false for two crossing
       perpendicular lines. (Bug #26188118, Bug #86558)

     * ALTER USER user DEFAULT ROLE ALL produced an error. (Bug

     * mysqldump exited abnormally for large --where option
       values. (Bug #26171967, Bug #86496)

     * A query using a window function with a window which
       partitioned or ordered on the result of an aggregate
       function where this evaluated as NULL returned incorrect
       results. (Bug #26164633)

     * The Performance Schema could leak memory due to
       nondeletion of file instances created for ALTER TABLE
       operations that used the table-copy algorithm. (Bug
       #26152751, Bug #86482)

     * Failed creation of a temporary table using REPLACE could
       under some circumstances result in an assertion in a
       later statement. (Bug #26126789, Bug #86422)

     * mysqlpump did not properly parse TABLESPACE clauses in
       the result from SHOW CREATE TABLE statements it executed
       to determine table structure. (Bug #26116415)

     * The binary file for the udf_example user-defined function
       was omitted from binary distributions. (Bug #26115002)

     * Long SET PERSIST statements could cause a server exit.
       (Bug #26100122)

     * An incorrect formula was used to calculate maximum length
       of result strings for a few string functions: QUOTE(),
       AES_DECRYPT(), and WEIGHT_STRING(). This could affect,
       for example, the length of character columns created for
       CREATE TABLE ... AS SELECT ... QUOTE(). (Bug #26049942,
       Bug #86305)

     * Schema creation and removal operations could fail due to
       checking for schema directories under the data directory
       rather than checking the data dictionary. (Bug #26043994,
       Bug #86282)

     * SHOW PLUGINS did not handle plugins that were
       terminating, resulting in a server exit. The statement
       now displays the status for such plugins as DELETING.
       (Bug #26029765)

     * Some statements could cause a buffer overflow in the
       digest code. Thanks to Laurynas Biveinis and Roel van de
       Paar for the patch. (Bug #26021187)

     * Previously, when the Performance Schema failed to
       initialize, it wrote a nonspecific init failed warning to
       the error log. Now it prints more specific messages about
       which memory allocation failed. (Bug #25996291)

     * Incorrect results could occur on a table with a unique
       index when the optimizer chose a loose index scan even
       though the unique index had no index extensions. (Bug
       #25989915, Bug #86165, Bug #26532061, Bug #87207)
       References: This issue is a regression of: Bug #21749123,
       Bug #78244.

     * For XA COMMIT, precommit handling could set an error in
       the diagnostics area that was not reported correctly on
       the calling side, causing an assertion to be raised. (Bug
       #25978684, Bug #86142)

     * The MIN_VALUE column of the Performance Schema
       variables_info table displayed incorrect values on 32-bit
       big-endian platforms. (Bug #25967079)

     * A memory leak occurred when the optimizer excluded a
       subquery associated with a temporary table. (Bug

     * An assertion could be raised for updates when a view or
       derived table considered read only had nested references
       not seen as read only. (Bug #25832861, Bug #85796)

     * Certificate and key files automatically generated by the
       server could have an incorrect access mode. (Bug

       tables, if evaluated using Index Condition Pushdown,
       could push down internal data dictionary functions,
       resulting in an assertion being raised. (Bug #25820175,
       Bug #85765)

     * ST_AsText() could read freed memory. (Bug #25818451)

     * CREATE USER IF NOT EXISTS was not written to the binary
       log if the user existed. This could result in
       inconsistent replication behavior if the user did not
       exist on slave servers. A similar issue occurred for
       ALTER USER IF EXISTS. To avoid inconsistencies, these
       statements now are written to the binary log. (Bug
       #25813089, Bug #85733)

     * An invalid utf8 input string caused a heap buffer
       overflow error. (Bug #25811623, Bug #25946444)

     * A race condition made it possible to cause a server exit
       by persisting variables from multiple sessions
       simultaneously. (Bug #25768813)

     * Plugins can create or drop INFORMATION_SCHEMA tables, but
       views that reference INFORMATION_SCHEMA tables were not
       validated when plugins were unloaded or unloaded. (Bug
       #25761992, Bug #85579)

     * mysql wrote some password-related statements to the
       .mysql_history file. (Bug #25750609)

     * Incorrect handling of internal memory buffers could cause
       a server exit. (Bug #25737271)

     * On a read-only server with GTIDs enabled, a DROP
       TEMPORARY TABLE IF EXISTS statement relating to a
       nonexistent or filtered table could write an unnecessary
       transaction to the binary log and create an unnecessary
       GTID. In this situation, the missing temporary table was
       previously assumed to be transactional, leading to the
       statement being split. Now, MySQL checks that the
       temporary table exists and that its DROP TEMPORARY TABLE
       statement is recorded in the binary log. If this is not
       the case, no GTID is created. Thanks to Laurynas Biveinis
       for the patch. (Bug #25656992, Bug #85258)

     * The MeCab full-text parser plugin failed to load on
       Windows. (Bug #25633175)

     * The SET_TIME column of the Performance Schema
       variables_info table was initialized incorrectly. (Bug

     * Executing a stored procedure containing a statement that
       created a table from the contents of certain SELECT
       statements could result in a memory leak. (Bug #25586773)

     * The Performance Schema failed to check the maximum host
       length for client connections. (Bug #25510805)

     * For spatial functions, some set operations produced a
       result with SRID 0 when given arguments in a different
       SRID. (Bug #25510403)

     * Large --ssl-cipher values could cause client programs to
       exit. (Bug #25483593)

     * A missing argument-count check during preparation of a
       stored procedure call could result in a server exit. (Bug
       #25398451, Bug #84512)

     * Temporary tables used in processing a recursive common
       table expression with UNION DISTINCT and a great many
       columns now use the MEMORY engine instead of InnoDB. (Bug

     * If the MySQL root user account was renamed, a query that
       accessed an INFORMATION_SCHEMA view returned an error
       stating that the user specified as the definer does not
       exist. To avoid this error, a new system user account,
       'mysql.infoschema'@'localhost', is now the DEFINER for
       INFORMATION_SCHEMA views. (Bug #25185947, Bug #84027)

     * When an UPDATE required a temporary table having a
       primary key larger than 1024 bytes and that table was
       created using InnoDB, the server could exit. (Bug

     * SET DEFAULT ROLE was not transactional like other
       account-management statements. (Bug #25122897)

     * mysqlpump included the gtid_executed table in dumps of
       the mysql system database, causing the gtid_executed
       position to be lost upon server restart after the dump
       was reloaded. mysqlpump no longer dumps the gtid_executed
       table. (Bug #25109007)

     * For geometry calculations, invalid input parameters could
       lead to an incorrect result buffer and cause an assertion
       to be raised or a server exit. (Bug #25062396)

     * IFNULL(decimal, int) could lose a digit after the decimal
       point when used in a query that included GROUP BY and was
       executed using a temporary table. (Bug #25051195, Bug

     * For some queries, such as those involving UNION, column
       width for GROUP_CONCAT() could be calculated incorrectly,
       leading to incorrect application of group_concat_max_len.
       (Bug #25050090, Bug #83667)

     * Audit logging of events for the Performance Schema
       global_variables table was improved so as to not report
       events for rows materialized but not reported to the SQL
       layer. (Bug #24970428)

     * ST_Buffer() could return an invalid result or raise an
       error for some inputs that should have produced a valid
       output geometry. (Bug #24947868, Bug #26735293, Bug

     * For builds with AddressSanitizer or Undefined Behavior
       Sanitizer enabled, division by zero could occur during
       Performance Schema timer initialization. (Bug #24785784)

     * Operations that rely heavily on the metadata locking
       (MDL) subsystem caused a performance degradation.
       Traversal of MDL ticket lists was time consuming in cases
       where there were large number of MDL tickets. (Bug
       #24734971, Bug #83143)

     * When binlog_format is ROW or (from MySQL 8.0.4) MIXED,
       operations on temporary tables are not logged.
       Previously, the exception to this rule was that when the
       connection was terminated at the end of the session, the
       statement DROP TEMPORARY TABLE IF EXISTS was logged for
       any temporary tables that had been opened in the session.
       For row-based replication, this behavior caused an
       unnecessary write to the binary log, and added a
       transaction sequence number for the GTID where these were
       Now, when a temporary table is created in a session, the
       binary logging format is tracked. The DROP TEMPORARY
       TABLE IF EXISTS statement is only logged at the end of
       the session if statement-based format was in effect when
       the temporary table was created, so the CREATE TEMPORARY
       TABLE statement was logged. If row-based or mixed-format
       binary logging was in use when the table was created, the
       DROP TEMPORARY TABLE IF EXISTS statement is not logged.
       Thanks to Laurynas Biveinis for the patch. (Bug
       #24670909, Bug #83003)

       operations could result in deadlock. (Bug #24510948, Bug

     * Under some conditions, the audit_log plugin could
       recursively lock a mutex, resulting in an unresponsive
       server. (Bug #24437533)

     * In some cases, the optimizer chose a loose index scan
       (QUICK_GROUP_MIN_MAX_SELECT) for a GROUP BY query even
       when there was a predicate with a disjunction. This is
       fixed by not performing a range scan when the condition
       in the WHERE clause results in more than one disjoint
       range tree. (Bug #24423143)

     * Incorrect results could occur when the optimizer chose an
       index on a generated column to fetch values. (Bug

     * Debug symbol packages are now included for all apt
       platforms (previously, they were only available on Debian
       9). (Bug #24008883)

     * With SQL_MODE='', UNIX_TIMESTAMP(COUNT(1)) returned NULL
       instead of 0 as expected. (Bug #23529242)

     * When deleting rows from a table that had an indexed
       virtual BLOB column with a NOT NULL constraint, and the
       generated column expression evaluated to NULL in one of
       the rows that were being deleted, conversion of the NULL
       to its NOT NULL equivalent was not performed correctly.
       (Bug #23321196)
       References: See also: Bug #23037025, Bug #21345972.

     * Setting the MYSQL_GROUP_SUFFIX environment variable had
       no effect. (Bug #23072792)

     * A missing check for error handling during generated
       column evaluation could result in a server exit. (Bug

     * To check whether a table was empty, ALTER TABLE performed
       a table scan, which is inefficient. (Bug #22688065)

     * Failure to acquire tablespace metadata locks for ALTER
       TABLE when a LOCK TABLES was active could cause an
       assertion to be raised. (Bug #22486020, Bug #79820)

     * Constant propagation is no longer performed when a
       constant expression contains a reference to the column it
       is meant to replace. (Bug #20964700)

     * Queries with many left joins were slow if join buffering
       was used (for example, using the block nested loop
       algorithm). (Bug #18898433, Bug #72854)

     * In some cases, the row estimate used by the server to
       determine whether to use sampling could be inaccurate.
       This was because the histogram process assumed that the
       estimate for the number of rows in the table was current,
       although it was not updated by (for example) INSERT or
       DELETE statements. Now the histogram process requests an
       updated count of rows. (Bug #88710, Bug #27197709)

     * Long-running regular expression matches could not be
       killed. (Bug #88676, Bug #27183583)

     * An optimizer SET_VAR hint (see Variable-Setting Hint
       setting cte_max_recursion_depth was ignored.
       (Bug #88594, Bug #27153338)

     * When handling range frames, if the first row for a range
       frame was found, its position was not stored. This could
       later cause retrieval of the row from the frame buffer to
       fail. (Bug #88568, Bug #27149369)

     * The server did not handle triggers activated by LOAD DATA
       correctly when --skip-log-bin was enabled. (Bug #88516,
       Bug #27128534)
       References: This issue is a regression of: Bug #27041382.

     * Stored procedures performing XA transactions and acting
       on views were not executed correctly. (Bug #88326, Bug

     * When a table contained a column whose length was zero,
       the optimizer could in some cases allocate a record
       buffer that was too small to hold the columns read by the
       query. (Bug #88283, Bug #27041288)

     * A trigger containing invalid syntax, followed by an
       INSERT that did not specify a column list, attempted to
       insert a new row regardless. (Bug #88274, Bug #27041382)

     * Window functions did not always produce correct results
       with LAST_VALUE() and frames having multiple ORDER BY
       expressions. (Bug #88186, Bug #27010574)

     * A fix for a previous issue caused the aggregated data
       type to be set to VARCHAR whenever the result type was
       string and the column size was larger than 255 characters
       (maximum length for CHAR). This caused problems for data
       types such as JSON whose result type is a string, but
       which support field values longer than 255 characters.
       Now in such cases the data type is set explicitly to
       VARCHAR when an aggregated column is of type CHAR or
       BINARY (both represented internally as strings) but its
       size exceeds the maximum for CHAR. (Bug #88073, Bug
       References: This issue is a regression of: Bug #83895,
       Bug #25123839.

     * A prepared statement containing an ORDER BY list that
       referred to a parameter was not always handled correctly.
       (Bug #87863, Bug #26867652)

     * DENSE_RANK() did not work correctly for the first row in
       a partition when buffering was in use, due to premature
       initialization of the cache comparator for ORDER BY. (Bug
       #87760, Bug #26802696)

     * The optimizer chose a composite index for ref access
       where only the first part of the key could be used. The
       composite key was suitable but was seen as a higher cost.
       This was because, when choosing between ref access and
       range access on the same index, we prefer range if
       certain criteria are fulfilled, one of these being to
       choose to avoid ref-access if it has an overly-optimistic
       or unrealistically low cost as can happen when
       records_per_key is very low. This was done even if the
       estimate of the number of rows for range access was more
       reliable than the estimate for ref access. (Bug #87613,
       Bug #26727773)
       References: See also: Bug #23259872.

     * When a stored function was used with a table column value
       as an argument in a WHERE predicate, its internal
       not_null_tables property was falsely set to a nonempty
       value. If this predicate was applied to an outer join
       operation and one of the arguments was from an inner
       table of the outer join, the predicate was sometimes used
       (incorrectly) to convert the outer join to an inner join.
       According to the SQL standard, only functions that have
       the RETURNS NULL ON NULL INPUT property should behave in
       that manner. Since MySQL does not currently implement
       this property, stored functions are changed such that
       they no longer implement the RETURNS NULL ON NULL INPUT
       behavior. (Bug #86922, Bug #26389402)

     * A view or derived table contained incorrect data when
       defined using a SELECT that performed aggregation of a
       column, and whose result was filtered with HAVING. (Bug
       #86840, Bug #26360114)

     * The server handled triggers and generated columns
       incorrectly. (Bug #86637, Bug #26251621)

     * A query that grouped results on a subquery which returned
       a BLOB (or a type based on BLOB such as JSON) sometimes
       failed to find the group boundaries, and so returned
       incorrect results. (Bug #78787, Bug #21974696)

MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql

Reply via email to