[If you just recived an email with 8.0.3-rc in the title, please ignore that. Sorry for the confusion]
* 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 #27193853) * 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 #27136492) * 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 #27121663) * Performance Schema queries that used indexes on OBJECT_TYPE columns could return incorrect results. (Bug #27121500) * 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 #27082862) * 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 #27030339) * 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 #26975882) * 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 #88040) * 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 #26881946) 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 #26867488) * 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 #26798989) * 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 #26770836) * 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 #87650) * 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 #87559) * 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 #26679983) * The server did not always clean up correctly after executing an IN subquery that used a hash semi-join. (Bug #26679495) * 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 #26627181) * 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 #26576922) * 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 #26496880) * 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 #26483909) * 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 #86546) * Installing and uninstalling Performance Schema example plugins concurrently with deletes from tables associated with those plugins could cause a server exit. (Bug #26281359) * 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 #26280724) * 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 #26266789) * 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 #26199978) * GRANT GRANT OPTION ON *.* TO user granted GRANT OPTION 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 #26188578) * 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 #26174169) * 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 #25951134) * 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 #25832856) * Queries on the INFORMATION_SCHEMA TABLES and STATISTICS 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 #25608115) * 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 #25190109) * 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 #25153670) * 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 #83699) * 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 #25662426) * 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 enabled. 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) * Concurrent INSERT, ALTER TABLE, and DROP DATABASE operations could result in deadlock. (Bug #24510948, Bug #82704) * 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 #24345509) * 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 #23021693) * 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 Syntax (http://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html#optimizer-hints-set-var)) 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 #27058931) * 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 #26960106) 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