In some cases, calling
audit_log_read(audit_log_read_bookmark() )led to an Out of memory error. (Bug #35957453)
-
Microsoft Windows: The server-side
authentication_ldap_saslplugin which performs SASL-based LDAP authentication is now supported on Windows platforms. This means that Windows client programs can now use GSSAPI with Kerberos for authentication using theauthentication_ldap_sasl_clientplugin.See SASL-Based LDAP Authentication, for more information. (WL #14056)
Microsoft Windows: MySQL did not compile correctly using Visual Studio 2022. (Bug #35967676)
Improved the
-DWITH_ZLIB=systemcheck. (Bug #35968195)The minimum version of Clang required for compiling MySQL was raised from Clang 10 to Clang 12. (Bug #35868054)
On macOS, the OpenTelemetry component would not compile with the system
protobuflibrary and instead required the bundled version by using the-DWITH_PROTOBUF=bundledCMake option. (Bug #35821812)Removed compiler warnings relating to code signatures when using XCode 14 or later. (Bug #35818055)
On Windows, enabled the
__cplusplusmacro when compiling with Visual Studio. (Bug #35808500)-
MySQL now bundles the Boost C++ libraries and has removed support for using local or external sources. Now only the bundled Boost libraries are used when compiling MySQL.
This change also removes the CMake build options
WITH_BOOST,DOWNLOAD_BOOST, andDOWNLOAD_BOOST_TIMEOUT. (Bug #35805629) -
Removed references to unsupported platforms, such as SUSE 12, EL6, and Ubuntu 16/18.
Additional changes: added
WITH_ZLIBto theWITH_SYSTEM_LIBSCMake option, which was removed from it in MySQL 8.0.30, and setWITH_FIDOto 'none' if all authentication plugins are disabled. (Bug #35795161)References: See also: Bug #34015600.
Changed the default standard C++ language version needed to compile MySQL from C++17 to C++20. (Bug #35781622)
Added alternate OpenSSL system package support on EL8 by passing
openssl3-fipsto-DWITH_SSLCMake option, which already supportedopenssl3. Authentication plugins such as LDAP and Kerberos are disabled since they do not support these alternative versions of OpenSSL. (Bug #35638881)-
On Linux, added mold (version 2 and higher) linker support. This adds a new
-DWITH_LD=mold|lldoption; by default, this is empty, which causes the standard linker to be used. This option is not supported on Enterprise Linux, which must use theldlinker.This change also removes the
-DUSE_LD_LLDCMake option in favor of passing inlldto the new option. (Bug #34099162) Enabled "-Wdocumentation" in MYSQL_MAINTAINER_MODE when building with Clang, and corrected the inaccurate documentation comments it revealed. (Bug #31037561)
-
Improved the cycle timer for the s390x architecture.
Our thanks to Jonathan Albrecht for the contribution. (Bug #112845, Bug #35949958)
-
For compiling on Linux, changed the
no-error=deprecated-declarationsflag tono-deprecated-declarationsfor the OpenSSL 3 library.Our thanks to karry zhang for the contribution. (Bug #112209, Bug #35755328)
-
The MySQL Enterprise Data Masking and De-Identification component now includes the ability to flush the data on the secondary or replica into memory. This can be done in either of the ways described here:
A flush can be performed manually, using the
masking_dictionaries_flush()function which is added in this release.The component can be configured to flush the memory periodically, leveraging the Scheduler component, by setting the new
component_masking.dictionaries_flush_interval_secondssystem variable to an appropriate value.
For more information, see the descriptions of these items as well as MySQL Enterprise Data Masking and De-Identification. (WL #15738)
-
MySQL Enterprise Edition now supports collecting server metric data in the OpenTelemetry format using the
component_telemetrycomponent. This data is then forwarded to a configurable endpoint where it can be used by any OpenTelemetry-compatible system.NoteTelemetry metrics are supported by MySQL Enterprise Edition on Linux platforms only.
See Telemetry. (WL #15200)
Microsoft Windows: On Windows, the MySQL Configurator option to 'Update the Start menu link' did not function. (Bug #35848493)
Microsoft Windows: On Windows, MySQL Configurator can now perform in-place upgrades. For example, MySQL Server 8.3.0 can replace an existing MySQL Server 8.2.0 installation that includes updating and renaming the data directory. (WL #15882)
-
InnoDB: The
--innodband--skip-innodbserver options were deprecated in MySQL 5.6 and have had no effect since that time. These options have now been removed.NoteThe
InnoDBstorage engine is always enabled, and it is not possible to disable it.(WL #10909)
InnoDB: Removed the
InnoDBmemcached plugin, which was deprecated in MySQL 8.0.22. (WL #15116)-
Replication: A number of server options and variables relating to MySQL Replication which were deprecated in previous versions of MySQL, have been removed from MySQL 8.3. Attempting to use any of these now causes the server to raise a syntax error. The effected options and variables are listed here:
--slave-rows-search-algorithms: The algorithm used by the replication applier to look up table rows when applying updates or deletes is now alwaysHASH_SCAN,INDEX_SCAN, and is no longer configurable by the user.log_bin_use_v1_events: This allowed source servers running MySQL 5.7 and newer to replicate to earlier versions of MySQL which are no longer supported or maintained.--relay-log-info-file,--relay-log-info-repository,--master-info-file,--master-info-repository: The use of files for the applier metadata repository and the connection metadata repository has been superseded by crash-safe tables, and is no longer supported. See Replication Metadata Repositories.transaction_write_set_extractiongroup_replication_ip_whitelist: Usegroup_replication_ip_allowlistinstead.group_replication_primary_member: No longer needed; check theMEMBER_ROLEcolumn of the Performance Schemareplication_group_memberstable instead.
(WL #11007, WL #12899, WL #12927, WL #13161, WL #13959, WL #13951, WL #15861)
-
Replication: When global transaction identifiers (GTIDs) are used for replication, transactions that have already been applied are automatically ignored, which means that
IGNORE_SERVER_IDSis not compatible with GTID mode; the use of this option together with GTID-based replication was deprecated in MySQL 8.0, and is no longer allowed in MySQL 8.3. Ifgtid_modeisON,CHANGE REPLICATION SOURCE TOwith a non-emptyIGNORE_SERVER_IDSlist is now rejected with an error. Likewise, if any existing replication channel was created with a list of server IDs to be ignored,SET gtid_mode=ONis also rejected. Before starting GTID-based replication, check for and clear any ignored server ID lists on the servers involved; you can do this by checking the output fromSHOW REPLICA STATUS. In such cases, you can clear the list by issuingCHANGE REPLICATION SOURCE TOwith an empty list of server IDs, like this:CHANGE REPLICATION SOURCE TO IGNORE_SERVER_IDS = ();For more information, see CHANGE REPLICATION SOURCE TO Statement, and Restrictions on Replication with GTIDs. (WL #11005)
-
Group Replication: Group Replication recovery no longer uses
View_change_log_eventfor marking changes in group membership in the binary log; instead, when all members of a group are MySQL version 8.3.0 or later, members share compressed recovery metadata, and no such event is logged when a new member joins the group. The recovery metadata includes the GCS view ID,GTID_SETof certified transactions, and certification information.As part of this work, the
group_replication_view_change_uuidsystem variable is now deprecated, and you should expect its removal in a future version of MySQL. No replacement or alternative for this variable is planned. (WL #14595) -
API: The following deprecated C API functions have been removed:
mysql_kill(): Usemysql_real_query()ormysql_query()to execute aKILLstatement instead.-
mysql_list_fields(): Usemysql_real_query()ormysql_query()to executeSELECT * FROMinstead. (This is roughly equivalent to executing the statement in the mysql client after starting it with thetableLIMIT 0--column-type-infooption.)The
char *defmember theMYSQL_FIELDstructure was used by this function only, and has also been removed. mysql_list_processes(): Usemysql_real_query()ormysql_query()to execute aSHOW PROCESSLISTstatement instead.-
mysql_refresh(): Usemysql_real_query()ormysql_query()to execute aFLUSHstatement instead.Due to the removal of this function, the mysqladmin flush-threads command is also removed.
mysql_reload(): Usemysql_real_query()ormysql_query()to execute aFLUSH PRIVILEGESstatement instead.mysql_shutdown(): Usemysql_real_query()ormysql_query()to execute aSHUTDOWNstatement instead.mysql_ssl_set(): Usemysql_options()with the appropriate options to specify certificate and key files, encryption ciphers, and so on.
mysql_shutdown()was deprecated in MySQL 8.0;mysql_set_ssl()was deprecated in MySQL 8.0.35 and MySQL 8.2.0; the remainder of the functions listed were deprecated in MySQL 5.7.11.Due to these changes, the MySQL C API library version is raised from 22.1 to 23.0. (Bug #36029117, WL #10911, WL #11092, WL #13448)
The compiler now emits a deprecation warning for the
mysql_stmt_bind_param()C API function, which was deprecated in MySQL 8.2.0 and superseded bymysql_stmt_bind_named_param(). (Bug #35819974)The
--character-set-client-handshakeand--old-style-user-limitsserver options were formerly used for compatibility with very old versions of MySQL which are no longer supported or maintained. Since they no longer serve any useful purpose, both options have been removed. (WL #13221, WL #13229)The
FLUSH HOSTSstatement, deprecated in MySQL 8.0.23, has been removed. To clear the host cache, truncate the Performance Schemahost_cachetable or use mysqladmin flush-hosts instead. (WL #14330)
-
This release extends the format of global transaction identifiers (GTIDs) used in MySQL Replication and Group Replication with tags to enable identification of groups of transactions. This enhancement makes it possible to assign a unique name to the GTIDs of a specific group of transactions. For example, transactions containing data operations can easily be distinguished from those arising from administrative operations simply by comparing their GTIDs.
The new GTID format is
UUID:<TAG>:NUMBER, in which <TAG> is an arbitrary string up to 8 characters long. This is enabled by setting the value of thegtid_nextsystem variable toAUTOMATIC:<TAG>. This tag persists for all transactions originating in the current session (unless changed usingSET gtid_next), and is applied at commit time for such transactions, or, when using Group Replication, at certification time. It is also possible to setgtid_nextto<UUID>:<TAG>:NUMBERto set the UUID of a single transaction to an arbitrary value, along with assigning it a custom tag. In both cases, the user is responsible for making sure that the tag is unique to a given replication topology.The original
UUID:NUMBERformat for GTIDs continues to be supported unchanged, as implemented in previous versions of MySQL; changes to existing replication setups using GTIDs are not required.Setting
gtid_nexttoAUTOMATIC:<TAG>or<UUID>:<TAG>:NUMBERrequires a newTRANSACTION_GTID_TAGprivilege which is added in this release; this is true both on the originating server as well as for thePRIVILEGE_CHECKS_APPLIERfor the replica applier thread. This also means that an administrator can now restrict the use ofSET @gtid_next=AUTOMATIC:<TAG>orSET @gtid_next=<UUID>:<TAG>:NUMBERto a desired set of MySQL users or roles so that that only those users related to a given data or operational domain can commit new transactions with assigned tags.Interaction with upgrades: When upgrading from a previous version of MySQL to MySQL 8.3, the
TRANSACTION_GTID_TAGprivilege is granted automatically to any user accounts or roles which already have theBINLOG_ADMINprivilege.The built-in functions
GTID_SUBSET(),GTID_SUBTRACT(), andWAIT_FOR_EXECUTED_GTID_SET()are compatible with tagged GTIDs.For more information, see Changing GTID Mode on Online Servers. See also the descriptions of the
gtid_nextsystem variable and theTRANSACTION_GTID_TAGprivilege. (WL #15294)
When running
OPTIMIZE TABLEon a table with aFULLTEXTindex, the index was not fully optimized at the expected time, and thus an extra pass was required. (Bug #35502793)-
This release implements the following two status variables for tracking the use of the deprecated
INFORMATION_SCHEMA.PROCESSLISTtable:Deprecated_use_i_s_processlist_countprovides a count of the number of references to thePROCESSLISTtable in queries since the server was last started.Deprecated_use_i_s_processlist_last_timestampstores the time thePROCESSLISTtable was last accessed. This is a timestamp value (number of microseconds since the Unix Epoch).
(WL #16085)
Data-masking components now support specifying a dedicated schema to store the related internal
masking_dictionariestable. Previously, themysqlsystem schema provided the only storage option. The newcomponent_masking.masking_databaseread-only variable enables setting and persisting an alternative schema name at server startup. (WL #15733)
The hashing algorithm employed yielded poor performance when using a
HASHfield to check for uniqueness. (Bug #109548, Bug #34959356)
-
Important Change: The GnuPG build key (
A8D3785C) used to sign MySQL downloadable packages has been updated. The previous GnuPG build key (3A79BD29) expired on 2023-12-14. For information about verifying the integrity and authenticity of MySQL downloadable packages using GnuPG signature checking, or to obtain a copy of our public GnuPG build key, see Signature Checking Using GnuPG.Due to the GnuPG key update, systems configured to use
repo.mysql.commay report a signature verification error when upgrading to MySQL 8.0.36 and higher or to MySQL 8.3.0 and higher usingaptoryum. Use one of the following methods to resolve this issue:Manually reinstall the MySQL APT or YUM repository setup package from https://dev.mysql.com/downloads/.
Download the MySQL GnuPG public key and add it your system GPG keyring.
-
Executing
SELECT * from performance_schema.data_lockson a server under heavy load could cause MySQL to consume too much memory and close unexpectedly.As of this release, memory used executing such a query is now instrumented with
memory/performance_schema/data_container, enabling you to observe memory consumption. (Bug #35240825) -
Executing
SELECT * from performance_schema.data_lockson a server under heavy load could cause a deadlock in InnoDB. (Bug #35068461)References: See also: Bug #35240825.
-
When executing a stored program, the Performance Schema instrumentation caused some unnecessary overhead.
As of this release, all stored procedure micro instructions (
statement/sp/%), exceptstatement/sp/stmt, are disabled by default. (Bug #27934653) The performance of the Performance Schema statement instrumentation has been improved. Specifically, collecting
MESSAGE_TEXTdata is now more efficient. (Bug #112621, Bug #35916912)Under certain circumstances, under load, the Performance Schema could return the same row twice, despite having a unique key defined. This issue could occur for query digests, user names, host names, and account names (user@host). (Bug #110555, Bug #35239372)
Removed a potential issue with
performance_schema.table_handlesfound through code analysis, but never reported by users. (Bug #108501, Bug #34606682)
-
Beginning with this release, the behavior of the
AUTHENTICATION_PAM_LOGenvironment variable used in debugging the PAM authentication plugin is changed as follows:Setting
AUTHENTICATION_PAM_LOGto an arbitrary value (except as noted in the next item) no longer includes passwords in its diagnostic messages.To include passwords in the diagnostic messages, set
AUTHENTICATION_PAM_LOG=PAM_LOG_WITH_SECRET_INFO.
For more information, see PAM Authentication Debugging. (Bug #74313, Bug #20042010)
-
Added additional thread pool connection information to the MySQL Performance Schema, as follows:
Added a
tp_connectionstable, with information about each thread pool connection.Added the following columns to the
tp_thread_statetable:TIME_OF_ATTACH,MARKED_STALLED,STATE,EVENT_COUNT,ACCUMULATED_EVENT_TIME,EXEC_COUNT, andACCUMULATED_EXEC_TIMEAdded the following columns to the
tp_thread_group_statetable:EFFECTIVE_MAX_TRANSACTIONS_LIMIT,NUM_QUERY_THREADS,TIME_OF_LAST_THREAD_CREATION,NUM_CONNECT_HANDLER_THREAD_IN_SLEEP,THREADS_BOUND_TO_TRANSACTION,QUERY_THREADS_COUNT, andTIME_OF_EARLIEST_CON_EXPIRE.
For more information about these tables, see Performance Schema Thread Pool Tables. For information about the Thread Pool plugin, see MySQL Enterprise Thread Pool. (WL #15515)
Important Change; Replication: The
binlog_transaction_dependency_trackingserver system variable was deprecated in MySQL 8.2.0. In preparation for the eventual removal of this variable, its default value is nowWRITESET. There are no plans to replace this variable or its functionality, which is expected later to be made internal to the server. (WL #15861)Important Change: For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.12. Issues fixed in OpenSSL version 3.0.12 are described at https://www.openssl.org/news/cl30.txt. (Bug #36033684)
-
Performance; NDB Cluster: The
NDBbinary log injector uses arena allocation. In some cases, when handling schema changes and keeping track of current state of the binary log, the arena for this was forced by changing thread local pointers, thus attempting to try and catch all allocations performed during epoch processing. At the end of the epoch, those pointers were reset, arena memory was released, and the arena structures discarded; this released the memory, but also required setting it up again for the next epoch. The thread local pointer changes also introduced the risk of memory being allocated wrongly when activating functionality in different subsystems. In this release, we make the following improvements to this functionality:Changes to thread local pointers are removed, and replaced by explicit arguments to provide the arena used for allocation during the epoch.
Reuse of the arena for next epoch, thus avoiding the need to set it up again.
These changes are internal only but should provide a noticeable improvememnt by saving on memory release and re-allocation over successive epochs. (WL #15002)
-
Group Replication:
group_replication_set_as_primary()now waits for DDL and DCL statements to complete before a new primary is elected. This includes these statements:ALTER DATABASE,ALTER FUNCTION,ALTER INSTANCE,ALTER PROCEDURE,ALTER SERVER,ALTER TABLESPACE,ALTER USER,ALTER VIEW,CREATE DATABASE,CREATE FUNCTION,CREATE PROCEDURE,CREATE ROLE,CREATE SERVER,CREATE SPATIAL REFERENCE SYSTEM,CREATE TABLESPACE,CREATE TRIGGER,CREATE USER,CREATE VIEW,DROP DATABASE,DROP FUNCTION,DROP PROCEDURE,DROP ROLE,DROP SERVER,DROP SPATIAL REFERENCE SYSTEM,DROP TABLESPACE,DROP TRIGGER,DROP USER,DROP VIEW,GRANT,RENAME TABLE, andREVOKE.These are in addition to those statements added in MySQL 8.1 or otherwise already supported in this regard. For more information, including a listing of all such statements supported in MySQL 8.3, see the description of the
group_replication_set_as_primary()function, in the MySQL 8.3 Manual. (WL #15752) Replaced some of the bit functions in
include/my_bit.handsql/join_optimizer/bit_utils.hwith standard library functions such asstd::popcount()andstd::has_single_bit()that were added in C++20. Functions replaced includeis_single_bit(),my_clear_highest_bit(),my_bit_log2(),my_round_up_to_next_power(),my_bit(), andmy_count_bits(), among others. (Bug #35813111)-
Added the
explain_json_format_versionsystem variable to determine the version of the JSON output format used byEXPLAIN FORMAT=JSONstatements.1(the default) causes Version 1 to be used; this is the same JSON output format used for all such statements in previous versions of MySQL. Setting this variable to2causes the server to use the Version 2 format, also introduced in this release, forEXPLAIN FORMAT=JSONoutput. The Version 2 format is based on access paths, and is intended to provide better compatibility with future versions of the MySQL Optimizer.For more information and examples, see Obtaining Execution Plan Information. (WL #15684)
-
Important Change; Replication: When
binlog_transaction_dependency_trackingwas set toWRITESETorWRITESET_SESSION, whilebinlog_formatwasMIXED, dependencies were not tracked for statement parts of a transaction, and were not properly calculated, leading to collisions betweens transactions on MTA replicas.Because using the writeset information for conflict detection in this way can lead to false negatives, we now limit the usage of writesets for conflict checks to row-based logging only (
binlog_format=ROW). (Bug #35931702) InnoDB: The InnoDB table statistics were not updated by bulk loaded statements. (Bug #35889669)
InnoDB: LHS and RHS comparison values were added to their associated error handlers. (Bug #35814266)
InnoDB: Improved recv_apply_hashed_log_recs() to better handle the DB_CORRUPT error code. (Bug #35595808)
InnoDB: The hash function used by the adaptive hash index (AHI) was improved to increase performance. (Bug #35449386)
InnoDB: If change buffer entries are present during startup, a disabled
innodb_validate_tablespace_pathsoption will no longer be enforced and instead the MySQL server will proceed to validate all tablespaces. Otherwise, secondary indexes could end up corrupted. (Bug #35208990)InnoDB: During concurrent DDL and DML operations, DDL could fail if the online log grew too large. Buffer handling was improved to prevent this issue. (Bug #35115601)
InnoDB: When clearing an AHI index from all buffer pool pages, the block state would potentially change to BUF_BLOCK_MEMORY before acquiring the block mutex thus causing an unexpected halt. (Bug #35037114)
-
InnoDB: The
Innodb_row_lock_current_waitsvariable could show a non-zero value when there were no row locks.Our thanks to Bin Wang for the contribution. (Bug #112532, Bug #35849707)
-
InnoDB: Removed redundant code related to handling FIL_PAGE_LSN during recovery.
Our thanks to Alexi Xing for the contribution. (Bug #108731, Bug #34687854)
Replication: It was possible in some cases when an error occurred while applying an event for the error reported to apply to the previous event rather than to the current one. (Bug #35945223)
Replication: Enabling
binlog_transaction_compressionon the source suppressedER_RPL_MTA_STATISTICSmessages on the replica. (Bug #35923771)Replication: An issue with calculating the current number of bytes used for
Log_eventevents in Performance Schema memory instrumentation made it appear as though thesql/replica_sqlthread on the replica grew endlessly and never decreased in size. (Bug #35546877)Replication: Stopping replication while replicating
CREATE TABLE AS SELECTcaused the server to exit. (Bug #33934013)Group Replication: The
memory/group_rpl/Gcs_message_data::m_bufferkey in the Performance Schemasetup_instrumentstable sometimes reported negatives values when running in single-primary mode. (Bug #35940509)-
Group Replication: Following a major outage, when all instances were reachable, rebooting the cluster hung and failed rejoining instances.
This happened in such cases because the old secondaries retained old credentials to connect to the nodes, leading to a partial connection, in which, when a second server tried to rejoin the group, it was able to contact the primary and send an
add_node()command to it, but could not be contacted in turn by the primary. The solution, is to validate that, when receiving anadd_node(), we have established bi-directional communication with the new node. (Bug #35763950)References: See also: Bug #34898318.
Group Replication: Removed a potential memory leak in
xcom_tcp_server_startup(). (Bug #35594709)Group Replication: The monitor I/O thread for a managed replication channel (channel with asynchronous connection failover mechanism enabled) might fail for any of several reasons for which the error log entry lacked any root cause and reported only the following: [Warning] [MY-013684] [Repl] The Monitor IO thread failed to detect if the source belongs to the group majority on the source (host:127.0.0.1 port:3310 network_namespace:) for channel 'read_replica_replication'. (Bug #35082638)
Group Replication: A lock instituted by
Transaction_monitor_thread::start()inplugin/group_replication/src/group_actions/group_actions_transaction_controller.ccwas never explicitly released. (Bug #35064211)Group Replication: The timeout set by
group_replication_set_as_primary()did not terminate DDL statements. (Bug #35042876)Group Replication: A forced
START GROUP_REPLICATIONwhile a replication channel was in an error state could lead to an unplanned server exit. (Bug #34724344)Group Replication: Removed a possible memory leak in
plugin/group_replication/src/certifier.cc. (Bug #110518, Bug #35226747)macOS: The
secure_file_privsystem variable did not always work correctly on Mac OS. (Bug #30274493)Microsoft Windows: Improved exception handing to ensure that the output is correct in debug mode. (Bug #35944853)
-
JSON: Added missing checks for error handling to
NULLIF(),COALESCE(), and the shift(
>>) operator. (Bug #35513196)References: See also: Bug #31358416.
JSON:
JOINandGROUP BYhandled someJSONcolumn values differently. (Bug #101048, Bug #31969607)For building Enterprise Linux 8 RPMs, the build scripts now point to a newer strip command (under
/opt/rh/gcc-toolset-12), and they now check that the corresponding dwz tool is available. (Bug #36086236)-
BIO_get_mem_data()used an incorrect argument type.Our thanks to Samuel Chiang for the contribution. (Bug #35950004)
-
Removed an assertion failure at
CreateIteratorFromAccessPath()inaccess_path.cc. (Bug #35944739)References: This issue is a regression of: Bug #32788576.
During shutdown,
InnoDBpurging of threads can sometimes (depending on the volume of data) take a considerable amount of time to complete its work; this could leave users with the impression that the shutdown process had hung. This fix adds adds an externally visiblesystemdnotification indicating that this step is in progress. (Bug #35902058)In some cases, calling a loadable function installed by an improperly initialized plugin caused an unplanned shutdown. (Bug #35889261)
When the
MYSQL_FIREWALLplugin was configured to use a custom schema, but failed to initialize properly during the server startup, subsequent errors and failures could occur. (Bug #35853298)-
Some nested queries with
GROUP BYwere not handled correctly. (Bug #35846402, Bug #35945822)References: This issue is a regression of: Bug #32918400.
-
The access path for
dbug_dumpin debug mode used the wrong value.Our thanks to Tianfeng Li for the contribution. (Bug #35835858)
-
Equality propagation replaced a non-nullable (primary key) column inside a
CAST()with a nullable column without changing the nullability of theCASTexpression. (Bug #35829972)References: See also: Bug #34898903.
MySQL could not be built using
-DPROTOBUF_BUILD_SHARED_LIBS=OFF. (Bug #35827217)mysqld
-Dprinted some of its error logging information tostdout. (Bug #35810857, Bug #35830459)Removed an assert in
HashJoinIterator::Init(), inhash_join_iterator.cc. (Bug #35789589)Removed an assertion seen when a table value constructor with an
ORDER BYclause was used as anINorEXISTSsubquery. (Bug #35785452)In limited cases, passing data to the
MD5()encryption function could halt the server. (Bug #35764496)Some subselects from views were not always handled correctly. (Bug #35738548)
While performing an operation such as the bulk renaming of many tables, simultaneously executing a data definition statement similar to
CREATE TABLE ... SELECTcould stop the server unexpectedly. (Bug #35735937)Improved handler state resource allocation. (Bug #35713711)
-
UPDATE HISTOGRAMdid not behave as expected in all cases.UPDATE HISTOGRAM did not behave as expected in all cases. (Bug #35710404)
EXPLAIN ANALYZEdid not always produce the expected result. (Bug #35710383)-
An error occurred during subquery resolution. (Bug #35710373)
References: This issue is a regression of: Bug #35184353.
Some row subqueries were not always handled correctly. (Bug #35710218)
Refreshing of used table information is now postponed to the start of the next execution, just after tables have been opened, and we know that all table objects are in a proper state. (Bug #35710213)
Some
HAVINGqueries did not produce expected results. (Bug #35710183)-
Removed an assertion in
hash_join_iterator.cc. (Bug #35703114)References: This issue is a regression of: Bug #34940000.
Removed an assert in
composite_iterators.cc. (Bug #35686098)Some recursive CTEs did not function as expected. (Bug #35654240)
The combination of
INSTALL COMPONENTandSET GLOBALwith a subquery could cause the server to exit. (Bug #35647759)Some queries using
OVER (PARTITION ...)were not always executed successfully. (Bug #35627798)Some subqueries with
ROLLUPwere not always handled correctly. (Bug #35621842, Bug #35804794)When performing
EXPLAIN FORMAT=TREEfor certain queries, the cost of reading the first row for anAppendaccess path was lower than for the first child input access path, which should not be possible. (Bug #35590128)Removed an assertion in
IsBitSet(), insql/join_optimizer/join_optimizer.cc. (Bug #35590108)Removed the
CPACK_COMPONENT_GROUP_INFO_DISPLAY_NAMEconfiguration option from the Windows installation MSI interface. Now theINFO_BINandINFO_SRCfiles are always installed. (Bug #35529968)When attempting a subquery-to-derived transformation, an
ER_FIELD_IN_GROUPING_NOT_GROUP_BYerror was not thrown, even when a field in the projection list was neither part of theGROUP BY, nor was functionally dependent on one. (Bug #35508108)Some queries using windowing functions were not always handled correctly. (Bug #35471471)
In debug builds, a case-altered column name could cause the server to exit. (Bug #35449266)
MySQL Server installation packages contained two copies of the
INFO_SRCfile. (Bug #35400142)-
Setting a user variable inside the argument of a window function, which in turn was evaluated using the window frame buffer, led to an assert. Setting of user variables inside expressions is already deprecated; this fix merely avoids the assert. (Bug #35390341, Bug #36008133)
References: This issue is a regression of: Bug #32644631, Bug #32802301.
Removed an assert in
Item_typecast_signed::val_int(). (Bug #35049440)Improved the output from my_print_stacktrace(), which prints the stack trace when MySQL terminates unexpectedly. (Bug #34904177, Bug #36027494)
The error message parser in
utilities/comp_err.ccdid not handle escaped apostrophe characters correctly. (Bug #34637697)After privileges had been granted to a role, revoking from the role a privilege which had not been granted to it explicitly appeared to succeed, and no error or warning was returned. (Bug #34063709)
Some
SELECT DISTINCTqueries were not always handled correctly. (Bug #33725447)Removed an assertion failure in
sql/field.cc. (Bug #112503, Bug #35846221)Removed an assertion in
sql/sql_resolver.cc. (Bug #112498, Bug #35846192)Sme queries having the form
SELECT AVG(...) OVER (PARTITION BY ...)were not always handled correctly. (Bug #112460, Bug #35710179, Bug #35845413)Upgrading MySQL using an official MySQL Yum or SUSE repository always enables the MySQL service. Now it enables the service only after installing, and preserves (and does not edit) the existing value while upgrading. (Bug #112382, Bug #35823558)
-
MEM_ROOT::AllocBlock()did not satisfy the conditionminimum_length > wanted_length, due to a mismatch between block size andmininum_length. A successful return (false) fromForceNewBlock()is expected to have a new block supportingminimum_length, but this assumption failed whenmininum_lengthwas larger; thusAllocBlock()did not conform to its contract.This fix is based on a contribution from Kaiwang Chen. (Bug #112304, Bug #35793743)
The same query returned different results using the
NO_BNLoptimizer hint. (Bug #112296, Bug #35788971)In debug builds, using the
NTH_VALUE()window function with an empty logical range produced an assertion error. (Bug #111562, Bug #35537311)Ordering a nested block where the
ORDER BYcontained a window function raised an assert insql/sql_executor.cc. (Bug #111306, Bug #34856256, Bug #35471522)-
Several functions did not have a default data-type assignment for their arguments, which could affect prepared statements by raising an assertion error in debug builds. These default types now are assigned:
(Bug #110677, Bug #35287798)
A
VALUESstatement in a correlated lateral or (other) dependent subquery yielded an incorrect result. (Bug #109252, Bug #110076, Bug #34852090, Bug #35087820)If the argument to a window function contained a subquery, the access path of that subquery was printed twice by
EXPLAIN FORMAT=TREE. We fix this by ensuring that we ignore duplicate paths in such cases. (Bug #103609, Bug #32855925)In some cases, selecting from a view leaked a small amount of memory. (Bug #103133, Bug #32764586)
A
WHEREcondition using theIN()operator with a table value constructor returned all rows. An example of an affected query would beSELECT * FROM t1 WHERE a IN (VALUES ROW(5), ROW(55)). (Bug #98268, Bug #30775369)The
--waitcommand-line option did not function with the mysql client. (Bug #31422, Bug #11747227)