[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