For general information about upgrades, downgrades, platform support, etc., please visit https://dev.mysql.com/doc/relnotes/mysql/8.0/en/.
This is a milestone release, for use at your own risk. Upgrades between milestone releases (or from a milestone release to a GA release) are not supported. Significant development changes take place in milestone releases and you may encounter compatibility issues, such as data format changes that require attention in addition to the usual procedure of running mysql_upgrade. For example, you may find it necessary to dump your data with mysqldump before the upgrade and reload it afterward. (Making a backup before the upgrade is a prudent precaution in any case.)
This release makes several important changes in Unicode
character set support. In particular, the default character
set has changed from latin1 to
utf8mb4.
-
Incompatible Change: Components and plugins now can define privileges dynamically (at runtime), which enables them to create privileges specifically associated with the capabilities they implement.
Implementation of dynamic privileges enables DBAs to begin migrating away from the
SUPERprivilege. In the past,SUPERhas been associated with a wide and growing variety of operations, not all related to each other. Many operations covered bySUPERnow are also associated with a dynamic privilege of more limited scope, and that privilege is registered by the component or plugin that implements the operation. Each such operation that previously required theSUPERprivilege can be permitted to an account by granting the associated dynamic privilege rather thanSUPER. For example, a user who must be able to modify global system variables can be grantedSYSTEM_VARIABLES_ADMINrather thanSUPER.This change improves security by enabling DBAs to avoid granting
SUPERand tailor user privileges more closely to the operations permitted.SUPERis now deprecated and will be removed in a future MySQL version.Dynamic privileges apply only at the global level. The server stores information about current assignments of dynamic privileges to user accounts in
mysql.global_grants, a new table in themysqlsystem database.For more information, see Static Versus Dynamic Privileges. That discussion includes instructions for migrating accounts away from
SUPERto dynamic privileges.Incompatibility:
SHOW GRANTSno longer displaysALL PRIVILEGESin its global-privileges output because the meaning ofALL PRIVILEGESat the global level varies depending on which dynamic privileges are defined. Instead,SHOW GRANTSexplicitly lists each granted global privilege. For details, see SHOW GRANTS Statement. Applications that processSHOW GRANTSoutput should be adjusted accordingly.If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes into the
mysqlsystem database. (WL #8131)
The C API implemented by
libmysqlclientnow includes a client interface for reading a stream of replication events from a MySQL server binary log. For more information, see C API Binary Log Interface (WL #7672)
-
Important Change: The default character set has changed from
latin1toutf8mb4. These system variables are affected:The default value of the
character_set_serverandcharacter_set_databasesystem variables has changed fromlatin1toutf8mb4.The default value of the
collation_serverandcollation_databasesystem variables has changed fromlatin1_swedish_citoutf8mb4_0900_ai_ci.
As a result, the default character set and collation for new objects differ from previously unless an explicit character set and collation are specified. This includes databases and objects within them, such as tables, views, and stored programs. One way to preserve the previous defaults is to start the server with these lines in the
my.cnffile:[mysqld] character_set_server=latin1 collation_server=latin1_swedish_ci(WL #7554)
-
Performance of UCA 9.0.0-based collations (for example,
utf8mb4_0900_ai_ci) was improved. These collations are now faster than any other UCA collations.Additionally, the
max_length_for_sort_datasystem variable default value has been increased from 1024 to 4096. (Bug #24823885, Bug #83319) The default collation for the
utf8mb4character set has changed fromutf8mb4_general_citoutf8mb4_0900_ai_ci;utf8mb4_general_cidoes not handle characters outside the Basic Multilingual Plane (BMP) correctly. (Bug #24742157)-
The pad attribute for Unicode 9.0.0 collations was changed from
PAD SPACEtoNO PAD. Consequently, these collations now treat spaces at the end of strings as significant, like any other character. The affected collations have names that contain the string_0900_.Comparisons of nonbinary strings (
CHAR,VARCHAR, andTEXTstrings) that have a 9.0.0 (NO PAD) collation differ fromPAD SPACEcollations with respect to trailing spaces. For example,'a'and'a 'compare as different strings, not the same string. Example:mysql> SET NAMES 'latin1' COLLATE 'latin1_swedish_ci'; mysql> SELECT 'a' = 'a '; +------------+ | 'a' = 'a ' | +------------+ | 1 | +------------+ mysql> SET NAMES 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci'; mysql> SELECT 'a' = 'a '; +------------+ | 'a' = 'a ' | +------------+ | 0 | +------------+See also Trailing Space Handling in Comparisons.
The
INFORMATION_SCHEMACOLLATIONStable now has aPAD_ATTRIBUTEcolumn that indicates the pad attribute for each collation.A problem with the
latin1_decollation involving early weight string truncation has been corrected. The only likely effect is forWEIGHT_STRING()function results. (WL #10354) -
Complementing earlier work in MySQL 8.0.0 to add case-insensitive and accent-insensitive collations for the
utf8mb4Unicode character set, new case-sensitive and accent-sensitive collations have been added. The general collation is namedutf8mb4_0900_as_cs, and there are language-specific collations with characteristics similar toutf8mb4_0900_as_csexcept that language-specific rules take precedence where applicable. The language-specific collations are indicated by ISO 639-1 language codes in the collation name, as shown in the following table. In two cases the language code has an additional item that denotes a variant (German phone book order, Traditional Spanish).Noteutf8mb4_ja_0900_as_csis the first Japanese language-specific collation available for Unicode in MySQL.Table 2 utf8mb4 UCA 9.0.0 Language-Specific Collations
Language Collation Croatian utf8mb4_hr_0900_as_csCzech utf8mb4_cs_0900_as_csDanish utf8mb4_da_0900_as_csEsperanto utf8mb4_eo_0900_as_csEstonian utf8mb4_et_0900_as_csGerman phone book order utf8mb4_de_pb_0900_as_csHungarian utf8mb4_hu_0900_as_csIcelandic utf8mb4_is_0900_as_csJapanese utf8mb4_ja_0900_as_csLatvian utf8mb4_lv_0900_as_csLithuanian utf8mb4_lt_0900_as_csPolish utf8mb4_pl_0900_as_csClassical Latin utf8mb4_la_0900_as_csRomanian utf8mb4_ro_0900_as_csSlovak utf8mb4_sk_0900_as_csSlovenian utf8mb4_sl_0900_as_csModern Spanish utf8mb4_es_0900_as_csTraditional Spanish utf8mb4_es_trad_0900_as_csSwedish utf8mb4_sv_0900_as_csTurkish utf8mb4_tr_0900_as_csVietnamese utf8mb4_vi_0900_as_csutf8mb4_0900_as_csalso works as an accent-sensitive, case-sensitive collation for the languages in the following table.Table 3 Languages for Which utf8mb4_0900_as_cs is Suitable
Language Name Language Code German (dictionary order) de English en French (locale fr_FR) fr Irish Gaelic ga Indonesian id Italian it Luxembourgian lb Malay ms Dutch nl Portuguese pt Swahili sw Zulu zu utf8mb4_0900_as_csis suitable for French French (localefr_FR) but not for Canadian French (localefr_CA). For Canadian French,utf8mb4_0900_ai_ciis suitable. The reason for the difference betweenai_ciandas_cscollations is that Canadian French has a different order of accented characters than French French.utf8mb4_da_0900_as_csalso works as an accent-sensitive, case-sensitive collation for the languages in the following table.Table 4 Languages for Which utf8mb4_da_0900_as_cs is Suitable
Language Name Language Code Norwegian no Norwegian Bokmål nb Norwegian Nynorsk nn The nonlanguage-specific
utf8mb4_0900_as_csand language-specificutf8mb4_Unicode collations each have these characteristics:LANG_0900_as_csThe collation is based on Unicode Collation Algorithm (UCA) 9.0.0 and Common Locale Data Repository (CLDR) v30, is accent sensitive, and case sensitive. These characteristics are indicated by
_0900,_as, and_csin the collation name. Exception:utf8mb4_la_0900_as_csis not based on CLDR because Classical Latin is not defined in CLDR.The collation works for all characters in the range [U+0, U+10FFFF].
If the collation is not language specific, it sorts all characters, including supplemental characters, in default order (described following). If the collation is language specific, it sorts characters of the language correctly according to language-specific rules, and characters not in the language in default order.
-
By default, the collation sorts characters having a code point listed in the DUCET table (Default Unicode Collation Element Table) according to the weight value assigned in the table. The collation sorts characters not having a code point listed in the DUCET table using their implicit weight value, which is constructed according to the UCA.
The collation sorts on all three DUCET weight levels, including the tertiary level. This compares with accent-insensitive, case-insensitive collations, which sort only on the primary and secondary levels.
For non-language-specific collations, characters in contraction sequences are treated as separate characters. For language-specific collations, contractions might change character sorting order.
For more information, see Unicode Character Sets. (WL #9109, WL #9751)
-
Incompatible Change: The
my_booltype is no longer used in MySQL source code. Any third-party code that used this type to represent C boolean variables should use theboolorintC type instead.NoteThe change from
my_booltoboolmeans that themysql.hheader file now requires a C++ or C99 compiler to compile.(Bug #25597667)
InnoDB: A LOB page deletion function failed to delete LOB pages. (Bug #24480254)
Windows builds now use the default runtime libraries (builds use the
/MDflag). (Bug #25611609)CMakesupport was added for compiling with Developer Studio 12.6. (Bug #25384295)The rapidjson library included in MySQL distributions was upgraded to version 1.1.0. (Bug #24947436, Bug #83515)
The minimum version of the Boost library for server builds is now 1.63.0. (Bug #24579061, Bug #82834, Bug #25126144, Bug #83905)
For GCC versions higher than 4.4,
-fno-expensive-optimizationswas replaced with-ffp-contract=off, which has the effect of enabling more optimizations. Thanks to Alexey Kopytov for the patch. (Bug #24571672, Bug #82760)-
For building MySQL 8.0, the minimum required version of CMake is now 3.2.3 on Windows, 3.4.0 on Solaris, and 2.8.12 otherwise. (Bug #24481181, Bug #82628)
References: See also: Bug #24687701.
Work was done to clean up the source code base, including: Removing unneeded CMake checks; removing unused macros from source files; reorganizing header files to reduce the number of dependencies and make them more modular, removing function declarations without definitions, replacing locally written functions with equivalent functions from industry-standard libraries.
In source distributions, several utilities previously in the
extradirectory have been moved to the newutilitiesdirectory. (Bug #25416084)Two new CMake options are available for debugging.
LINK_RANDOMIZEindicates whether to randomize the order of symbols in the mysqld binary (defaultOFF), andLINK_RANDOMIZE_SEEDspecifies a seed value forLINK_RANDOMIZE. (Bug #25336715)MySQL failed to compile if
-DENABLE_DEBUG_SYNC=OFFAND-DWITH_DEBUG=ONwere both given. TheENABLE_DEBUG_SYNCoption has been removed and enablingWITH_DEBUGenables Debug Sync. (Bug #18374703)-
These changes were made with respect to persisted system variables:
A new statement,
RESET PERSIST, enables removal of variable settings that were persisted withSET PERSISTto themysqld-auto.cnffile that stores persisted global system variable settings.Using
SET PERSIST(or@@PERSIST.) to set a global variable toDEFAULTor to the variable literal default value previously also added a setting for the variable to themysqld-auto.cnffile if was is not present, or removed it frommysqld-auto.cnfif it was present. Now the assignment always adds a setting for the variable to themysqld-auto.cnffile; to remove the setting from the file, useRESET PERSIST.A new Performance Schema table,
persisted_variables, provides an SQL interface to themysqld-auto.cnffile, enabling the file contents to be inspected at runtime usingSELECTstatements.The Performance Schema
variables_infotable has new columns showing when and by which user each system variable was most recently set.
For more information, see Persisted System Variables, and RESET PERSIST Statement.
If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes into the Performance Schema. (WL #9720, WL #9763)
References: See also: Bug #24522064.
The default value of the
query_cache_sizesystem variable has been reduced from 1M to 0. Consequently no query cache buffer is allocated by default. (WL #9817)
MySQL Server now includes a plugin library that enables administrators to introduce an increasing delay in server response to clients after a certain number of consecutive failed connection attempts. This capability provides a deterrent that slows down brute force attacks that attempt to access MySQL user accounts. For more information, see Connection Control Plugins. (WL #8885)
-
SQL-layer code and the storage engine API were extended to provide data dictionary support for:
Storing information about auxiliary columns and keys that
InnoDBadds to tables implicitly, storage engine-private data and object identifiers for tables and tablespaces, andInnoDBfull-text search auxiliary tables and other similar, implicitly created objects.Combining data dictionary updates, storage engine changes, and binary log writes for DDL operations into atomic transactions.
A behavior change for
DROP TABLEoccurs if any named tables do not exist. Previously, the statement returned an error indicating which tables did not exist and it was unable to drop, but also dropped the tables that did exist. Now the statement still indicates which tables did not exist, but fails with an error and no changes are made.For more information, see Atomic Data Definition Statement Support, and WL#7743. (WL #7743)
-
These
INFORMATION_SCHEMAtables have been reimplemented as views on data dictionary tables:EVENTS PARAMETERS ROUTINES TRIGGERSQueries on those tables are now more efficient because they obtain information from data dictionary tables rather than by other, slower means. For example, the server no longer must create a temporary table for each query of the
INFORMATION_SCHEMAtable.Improvements for those tables also apply to
SHOWstatements that display information corresponding to theINFORMATION_SCHEMAtables. For example,SHOW TRIGGERSdisplays the same information as theTRIGGERStable.If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes. (WL #9494)
Incompatible Change; InnoDB; Partitioning: The
ALTER TABLE ... UPGRADE PARTITIONINGstatement is no longer supported.The deprecated
PROCEDURE ANALYSE()syntax has been removed. (WL #4745)-
The deprecated
libmysqldembedded server library has been removed, along with:The mysql_config
--libmysqld-libs,--embedded-libs, and--embeddedoptionsThe CMake
WITH_EMBEDDED_SERVER,WITH_EMBEDDED_SHARED_LIBRARY, andINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIRoptionsThe (undocumented) mysql
--server-argoptionThe mysqltest
--embedded-server,--server-arg, and--server-fileoptionsThe mysqltest_embedded and mysql_client_test_embedded test programs
(WL #9721, WL #9722, WL #9816)
The deprecated
--temp-poolserver option has been removed. (WL #8396)The deprecated replace utility has been removed. If you wish to continue using this utility, be sure to retain a copy from an installed version of MySQL before upgrading to the current version. (WL #9874)
-
The parser no longer considers
\Nas a synonym forNULLin SQL statements. UseNULLinstead.This change does not affect text file import or export operations performed with
LOAD DATAorSELECT ... INTO OUTFILE, for whichNULLcontinues to be represented by\N. See LOAD DATA Statement. (WL #7247) Support for DTrace has been removed. (WL #9581)
-
InnoDB: MySQL now supports descending indexes:
DESCin an index definition is no longer ignored but causes storage of key values in descending order. Previously, indexes could be scanned in reverse order but at a performance penalty. A descending index can be scanned in forward order, which is more efficient. Descending indexes also make it possible for the optimizer to use multiple-column indexes when the most efficient scan order mixes ascending order for some columns and descending order for others. For more information, see Descending Indexes.NotePreviously,
GROUP BYimplicitly sorted by default (that is, in the absence ofASCorDESCdesignators forGROUP BYcolumns), but relying on implicitGROUP BYsorting was deprecated.GROUP BYno longer sorts by default, so query results may differ from previous MySQL versions. To produce a given sort order, use explicitASCorDESCdesignators forGROUP BYcolumns or provide anORDER BYclause.(WL #1074, WL #7737)
Optimizer trace output now includes more information about
filesortoperations, such as key and payload size and why addon fields are not packed. (Bug #25246184, Bug #84180)Previously, invisible indexes were supported only for the
InnoDBstorage engine. Invisible indexes are now storage engine neutral (supported for any engine). (Bug #23541244)-
A
GROUPING()function has been introduced for use inGROUP BYqueries that include aWITH ROLLUPmodifier. This function enables you to distinguishNULLvalues for super-aggregate rows in the query result fromNULLvalues in regular grouped rows. For more information, see Miscellaneous Functions, and GROUP BY Modifiers. Thanks to Zhe Dong for a patch that was partially used to implement this feature.NoteGROUPINGnow is a reserved word and cannot be used as an identifier without identifier quoting.(Bug #11754449, Bug #46053, Bug #11745963, Bug #21728, WL #1979)
-
The optimizer now supports
INDEX_MERGEandNO_INDEX_MERGEhints to affect use of the Index Merge access method. Examples:SELECT /*+ INDEX_MERGE(t1 f1, f2, f3) */ f2 FROM t1 WHERE f1 = 'o' AND f2 = f3 AND f3 <= 4; SELECT /*+ NO_INDEX_MERGE(t1 f2, f3) */ f1 FROM t1 WHERE (f2 = 5 OR f3 = 'c') AND (f1 = 4 OR f4 = 'f');For more information, see Index Merge Optimization, and Optimizer Hints. (WL #9167)
-
The
server_costandengine_costoptimizer cost model tables in themysqlsystem database now include adefault_valuecolumn that contains the default value for each cost table estimate. This column is a read-only generated column that retains its value even if the associated cost estimate is changed. For more information, see The Optimizer Cost Model.If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes into the
mysqlsystem database. (WL #10128) In the optimizer cost model
engine_costtable, the cost for memory access was decreased relative to the cost for disk access. An implication of this change is that the execution plan may change between two runs of the same query. For example, at server startup before data has been read into the buffer pool, you may get a different plan than after the query has been run because then the data will be in memory. (WL #8737)-
MySQL now supports common table expressions, both nonrecursive and recursive. Common table expressions enable use of named temporary result sets, implemented by permitting a
WITHclause precedingSELECTstatements and certain other statements. For more information, see WITH (Common Table Expressions).NoteRECURSIVEnow is a reserved word and cannot be used as an identifier without identifier quoting.(WL #883, WL #3634)
The optimizer now supports hints that enable specifying the order in which to join tables. For more information, see Optimizer Hints. (WL #9158)
Microsoft Windows: Reminder: MySQL 8.0 requires the Microsoft Visual C++ 2015 Redistributable Package to run on Windows platforms. Users should make sure the package has been installed on the system before starting the server. The package is available at the Microsoft Download Center.
Changes in RPM package structure require a larger set of packages to be removed to install MySQL Server cleanly. (Bug #25603087)
To avoid potential race conditions, Debian packages now use the GNU install utility rather than a combination of mkdir, touch, and chown. (Bug #25258829)
New Debian/Ubuntu packages named
server-coreandclient-coreare now available. These packages contain binaries only, without configuration or service scripts, directory setup, man pages, and so forth. They are installed automatically with the standard packages, but when installed by themselves do not result in a functioning MySQL setup. They may be of interest for user which wish to customize their own installation setup. (Bug #25146364)scripts/mysql_security_commands.sqlandsupport-files/mysql.server-sys5.share no longer used and have been removed from MySQL distributions. (Bug #24756400, Bug #24756442)RPM packages now are built with
-DWITH_NUMA=ONfor platforms with NUMA support: OEL higher than EL5, Fedora, SLES, Docker. (Bug #24689078)The
my-default.cnf.shfile (used to produce a defaultmy-default.cnformy-default.inifile) is no longer included in source distributions andmy-default.cnfandmy-default.iniare no longer included in or installed by distribution packages. (Bug #22525354)The unused and undocumented archive_reader and archive_test utilities have been removed from MySQL source distributions. (Bug #12818207, Bug #62014)
-
The Performance Schema maintains statement event summary tables that contain information about minimum, maximum, and average statement latency. Those tables permit high-level assessment of system performance. To permit assessment at a more fine-grained level, the Performance Schema now also collects histogram data for statement latencies. These histograms provide additional insight into latency distributions and are available in these tables:
events_statements_histogram_by_digest: Statement histograms per schema and digest valueevents_statements_histogram_global: Statement histogram summarized globally
For more information, see Statement Histogram Summary Tables.
In addition, the
events_statements_summary_by_digesttable now has columns that provide percentile information about statement latencies. For more information, see Statement Summary Tables.If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes into the Performance Schema. (WL #5384)
System and status variable information is no longer maintained in the
INFORMATION_SCHEMA. These tables have been removed:GLOBAL_VARIABLES,SESSION_VARIABLES,GLOBAL_STATUS,SESSION_STATUS. Use the corresponding Performance Schema tables instead. See Performance Schema System Variable Tables, and Performance Schema Status Variable Tables. In addition, theshow_compatibility_56system variable has been removed. It was used in the transition period during which system and status variable information inINFORMATION_SCHEMAtables was moved to Performance Schema tables, and is no longer needed. These status variables have been removed:Slave_heartbeat_period,Slave_last_heartbeat,Slave_received_heartbeats,Slave_retried_transactions,Slave_running. The information they provided is available in Performance Schema tables; see Migrating to Performance Schema System and Status Variable Tables. (WL #8057)-
The deprecated
INFORMATION_SCHEMAINNODB_LOCKSandINNODB_LOCK_WAITStables have been removed. To obtainInnoDBdata lock information, use the Performance Schemadata_locksanddata_lock_waitstables instead. Alternatively, use thesysschemainnodb_lock_waitsandx$innodb_lock_waitsviews, which have been reimplemented to use the new Performance Schema tables rather than the removedINFORMATION_SCHEMAtables.The Performance Schema tables expose what data locks exist, which transaction holds each lock, and which transaction lock requests are blocked by other locks. For
InnoDB, thedata_lockstable reports all data locks, in contrast to theINNODB_LOCKStable, which reported only waited-for data locks, For more information, see The data_locks Table, and The data_lock_waits Table. For information about mapping old table columns to new table columns, see The INFORMATION_SCHEMA INNODB_LOCKS Table, and The INFORMATION_SCHEMA INNODB_LOCK_WAITS Table.The tables differ in the privileges required: The
INFORMATION_SCHEMAtables require the globalPROCESSprivilege. The Performance Schema tables require the usual Performance Schema privilege ofSELECTon the table to be selected from.The
sysschemainnodb_lock_waitsandx$innodb_lock_waitsviews can be used without change, with the exception that thelocked_tablecolumn containing combined schema/table name values has been removed and replaced withlocked_table_schemaandlocked_table_namecolumns that contain separate schema and table name values. In addition, these views now containlocked_table_partitionandlocked_table_subpartitioncolumns. For more information, see The innodb_lock_waits and x$innodb_lock_waits Views,If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes into the Performance Schema and the
sysschema. (WL #9275, WL #6657)
MySQL Server 8.0 includes a component-based infrastructure for improving server extensibility; see MySQL Components. However, MySQL plugins use an interface that predates the component interface. A new plugin service,
plugin_registry_service, enables plugins to access the component registry and its services. (WL #4989)
Incompatible Change: For
STANDALONEandWINbuilds, the defaultsecure_file_privvalue has changed from the empty string toNULL. This is a secure-by-default setting because it disables import and export operations. To permit those operations, setsecure_file_privto the path name of the directory to use for those operations. (Bug #24679907, Bug #24695274, Bug #24707666, WL #6782)-
Incompatible Change: These changes were made to mysqld_safe:
Unsafe use of rm and chown in mysqld_safe could result in privilege escalation. chown now can be used only when the target directory is
/var/log. An incompatible change is that if the directory for the Unix socket file is missing, it is no longer created; instead, an error occurs. Due to these changes, /bin/bash is required to run mysqld_safe on Solaris. /bin/sh is still used on other Unix/Linux platforms.The
--lediroption now is accepted only on the command line, not in option files.mysqld_safe ignores the current working directory.
Other related changes:
Initialization scripts that invoke mysqld_safe pass
--basedirexplicitly.Initialization scripts create the error log file only if the base directory is
/var/logor/var/lib.Unused systemd files for SLES were removed.
(Bug #24483092, Bug #25088048, Bug #25378439, Bug #25378565)
References: See also: Bug #24464380, Bug #24388753, Bug #24619033, Bug #82920.
yaSSL was upgraded to version 2.4.2. This upgrade corrects issues with: Potential AES side channel leaks; DSA padding for unusual sizes; the
SSL_CTX_load_verify_locations()OpenSSL compatibility function failing to handle long path directory names. (Bug #24512715, Bug #24740291)-
OpenSSL is ending support for version 1.0.1 in December 2016; see https://www.openssl.org/policies/releasestrat.html. Consequently, MySQL Commercial Server builds now use version 1.0.2 rather than version 1.0.1, and the linked OpenSSL library for the MySQL Commercial Server has been updated from version 1.0.1 to version 1.0.2j. For a description of issues fixed in this version, see https://www.openssl.org/news/vulnerabilities.html.
This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (WL #9136)
-
Incompatible Change: Previously,
ST_Distance()supported only Cartesian spatial reference systems (SRSs).ST_Distance()now detects geometry arguments in a geographic SRS and returns the geodetic distance on the ellipsoid in meters. The only permitted geographic argument types arePointandPoint, orPointandMultiPoint(in any argument order). Calculations for projected SRSs and SRID 0 remain the same. For more information, see Spatial Relation Functions That Use Object Shapes.NoteIf spatial data contains SRID values that refer to a geographic spatial reference system, existing queries using these functions will return different results, compared to previous MySQL versions.
(WL #9347)
-
Incompatible Change: These functions previously accepted either WKB strings or geometry arguments. Geometry arguments are no longer permitted and produce an error.
For information about migrating queries that refer to those functions away from using geometry arguments to using WKB arguments, see Functions That Create Geometry Values from WKB Values. (WL #10166)
-
Incompatible Change: These functions now interpret latitude and longitude coordinates as in the order specified by the spatial reference system. The functions also accept an optional argument to override the default axis order.
For more information, see Functions That Create Geometry Values from WKT Values, and Functions That Create Geometry Values from WKB Values.
NoteIf spatial data contains SRID values that refer to a geographic spatial reference system, existing queries using these functions will return different results, compared to previous MySQL versions.
(WL #9434, WL #9435)
-
Incompatible Change: These functions now return latitude and longitude coordinates in the order specified by the spatial reference system that applies to the geometry value argument. The functions also accept an optional argument to override the default axis order.
For more information, see Geometry Format Conversion Functions.
NoteIf spatial data contains SRID values that refer to a geographic spatial reference system, existing queries using these functions will return different results, compared to previous MySQL versions.
(WL #9432, WL #9433)
-
The
st_spatial_reference_systemsdata dictionary table that stores information about spatial reference systems other than SRID 0 has been upgraded from EPSG Dataset 8.7 to 9.0. Also, the table contents are now exposed through theINFORMATION_SCHEMAST_SPATIAL_REFERENCE_SYSTEMStable, which is implemented as a view on the data dictionary For more information, see The INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS Table.MySQL now has an
INFORMATION_SCHEMAST_GEOMETRY_COLUMNStable that provides information about table columns that store spatial data. The new table is implemented as a view on the existingINFORMATION_SCHEMACOLUMNStable. For more information, see The INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS Table.If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these
INFORMATION_SCHEMAchanges. (Bug #25337054, Bug #84384, WL #9348, WL #8582) A new spatial function,
ST_SwapXY(), accepts a geometry argument and swaps the X and Y values of each coordinate pair within the geometry. For more information, see Geometry Format Conversion Functions. (WL #9436)
-
Derived table syntax now permits a list of explicit column names following the table name, to override the default column names taken from the select list. For example, the column names for this derived table come from its select list:
mysql> SELECT * FROM (SELECT 1, 2, 3, 4) AS dt; +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+To provide column names, follow the derived table name with a parenthesized list of column names:
mysql> SELECT * FROM (SELECT 1, 2, 3, 4) AS dt (a, b, c, d); +---+---+---+---+ | a | b | c | d | +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+(WL #883)
mysql-test-run.pl now has a
--charset-for-testdb=option for specifying the default character set for thecharset_nametestdatabase. The default value islatin1. (Bug #25494068, Bug #84806)mysql-test-run.pl now has an
--only-big-testsoption, which causes only big tests to run. Normal (non-big) tests are skipped. If both--big-testand--only-big-testsare given,--only-big-testsis ignored. (Bug #25182306)mysql-test-run.pl has a new
--discoveroption. When given, mysql-test-run.pl attempts to preloaddiscover, the Developer Studio Memory Error Discovery Tool when starting mysqld. Reports fromdiscovermay be found inlog/mysqld.%p.txtunder the directory given by--vardir. This option is supported only on SPARC-M7 systems. (Bug #25048971)mysqltest now supports an
exprcommand that enables an expression to be evaluated and assigned to a variable. For details, see the command description in the MySQL Server Doxygen documentation, available at https://dev.mysql.com/doc/index-other.html. (Bug #24806741)mysqltest now supports a
force-cpdircommand that copies a source directory to a destination directory recursively (that is, it copies subdirectories). (Bug #24806681)mysql-test-run.pl has a new
--summary-reportoption. When given, mysql-test-run.pl generates a plain text version of the test summary only and writes it to the file named as the option argument. The file is suitable for sending by email. (Bug #24512357, Bug #82708)mysql-test-run.pl could not be run with --valgrind-option=--tool=custom_tool, for values of
custom_toolsuch as massif or helgrind, because it added the options for memcheck that might not be understood by other tools. Also, the mysql-test-run.pl--callgrindoption did not work because it supplied an invalid--baseoption to callgrind. Thanks to Daniel Black for the patch on which the fixes were based. (Bug #23713613, Bug #82039)-
The mysqltest
connect()function now permitsSOCKETandTCPvalues for theoptionsargument, to specify using the socket-file and TCP/IP connection protocols.In addition, transport protocols now must match the current system. Previously, passing
PIPEorSHMon non-Windows systems caused the default (socket-file) transport protocol to be used. Now this causes an error, and, similarly, passingSOCKETon Windows systems causes an error. (Bug #21046241) mysql-test-run.pl now supports a
--bootstrapoption that enables mysqld options to be designated as bootstrap options. Whenmysql-test-run.plfinds--bootstrapoptions in amaster.optfile, it removes and reinitializes the data directory and restarts the server with the new option settings. (Bug #18184868)
The
MYSQLX_TCP_PORTCMake option was ignored. (Bug #25493867, Bug #84804)The protobuf compiler emitted “unused import” warnings for mysqlx.proto. (Bug #25444009, Bug #84641)
Connections were released which were not initialized when validation occurred. (Bug #25392280)
The
Mysqlx_notice_warning_sentandMysqlx_notice_other_sentstatus variable values did not increment as expected. (Bug #25289949, Bug #84258, Bug #25290001, Bug #84260)The manual definition of the
MYSQL_DYNAMIC_PLUGINmacro was redundant. (Bug #25162590, Bug #83988)IPv6 connectivity support defined a new system variable
mysqlx_bind_addresswith the default value of '0.0.0.0', but the default value should have been '*' so that connections to X Plugin may be made using an IPv6 address, an IPv4 address, or a hostname. (Bug #25047909, Bug #83688)-
The
stmtfield was marked asrequiredin the message:message Mysqlx.Crud.ModifyView { required Collection collection = 1; optional string definer = 2; optional ViewAlgorithm algorithm = 3; optional ViewSqlSecurity security = 4; optional ViewCheckOption check = 5; repeated string column = 6; required Mysqlx.Crud.Find stmt = 7; }(Bug #24968735, Bug #83595)
For a table created with
CREATE TABLE foo (doc JSON), the statementlist_objectsincorrectly reported the table as a collection. (Bug #24963952)-
Sending
Expect.Opento a connected socket before authentication led to the following error messages:... Plugin mysqlx reported: '10: Invalid message 24 received during client initialization' ... Plugin mysqlx reported: '10: ERROR reading from socket Bad file descriptor (9) 2'(Bug #24940144, Bug #83494)
On Linux, MySQL Shell in JavaScript and Python interactive mode hid collections if the lettercase in the collection name was not uniform. (Bug #24848125)
If multiple user accounts exist that match the authenticating user, the X Plugin would attempt to authenticate all matching accounts instead of the best matching account. (Bug #24847537)
Boost classes with corresponding functionality in C++ 11 were moved or wrapped. (Bug #24680856)
When two X Plugin instances were started on the same port, the resulting error message was split over two lines and contained duplicate information. (Bug #24679018, Bug #83008)
The
performance_schema.threadstable did not showprocessliststatistics for the X Plugin. (Bug #24638038)If the client sent an unknown message type to the server, the server would send back an error message and then disconnect the client. (Bug #24611754, Bug #82868)
When the client sent a zero length message, the X Plugin did not send a response. For a subsequent message the client received an error
E_X_BAD_MESSAGEand was disconnected, depending on the header content. (Bug #24595459, Bug #82862)X Plugin displayed its version to any connected user, including those not authenticated. (Bug #24562707, Bug #82784)
X Plugin generated an incorrect query when a duplicate field name existed in an
Updatestatement. (Bug #24510083)The statement
list_objectsreturned incorrect information for some views insysdatabase. (Bug #24472325)X Plugin was trying to send result sets to a client, even where the connection had been closed. The plugin now stops execution of a stored procedure if the connection is reset. (Bug #24440344)
Attempting to list objects using the
list_objectsstatement without explicitly setting the database name resulted in the collection being incorrectly classified as a table. (Bug #23205895, Bug #81248)X Plugin now supports the
sha256_passwordplugin. (WL #9271)
Incompatible Change: Previously, for
INSERT ... SELECT ... ON DUPLICATE KEY UPDATEstatements for which theUPDATEreferred toSELECTcolumns, the results could be incorrect if theSELECTwas aUNION. Now such statements are prohibited and produce an error. To work around this restriction, write theUNIONas a derived table so that its rows can be treated as a single-table result set, which is permitted. See INSERT ... ON DUPLICATE KEY UPDATE Statement. (WL #5094)InnoDB: By default,
InnoDBreads uncommitted data when calculating statistics. In the case of an uncommitted transaction that deletes rows from a table,InnoDBexcludes records that are delete-marked when calculating row estimates and index statistics, which can lead to non-optimal execution plans for other transactions that are operating on the table concurrently using a transaction isolation level other thanREAD UNCOMMITTED. To avoid this scenario, a new configuration option,innodb_stats_include_delete_marked, can be enabled to ensure thatInnoDBincludes delete-marked records when calculating persistent optimizer statistics. (Bug #23333990)InnoDB: Geometry parsing and bounding box computational code for R-trees was moved from
InnoDBto the server. (WL #9439)-
InnoDB:
InnoDBnow supportsNOWAITandSKIP LOCKEDoptions withSELECT ... FOR SHAREandSELECT ... FOR UPDATElocking read statements.NOWAITcauses the statement to return immediately if a requested row is locked by another transaction.SKIP LOCKEDremoves locked rows from the result set. See Locking Read Concurrency with NOWAIT and SKIP LOCKED.SELECT ... FOR SHAREreplacesSELECT ... LOCK IN SHARE MODE, butLOCK IN SHARE MODEremains available for backward compatibility. The statements are equivalent. However,FOR SHAREsupportsNOWAIT,SKIP LOCKED, andOFoptions. See SELECT Statement.tbl_nameOFapplies locking queries to named tables.tbl_nameNoteOFnow is a reserved word and cannot be used as an identifier without identifier quoting.SELECT ... FOR SHAREandSELECT ... FOR UPDATEstatements now require theSELECTprivilege and at least one of theDELETE,LOCK TABLES, orUPDATEprivileges. Previously, only theSELECTprivilege was required. (WL #8919, WL #3597) InnoDB: The
InnoDBdata-at-rest encryption feature now supports encryption of redo log and undo log data, controlled by theinnodb_redo_log_encryptandinnodb_undo_log_encryptconfiguration options. See Redo Log Encryption, and Undo Log Encryption. (WL #9290, WL #9289)-
InnoDB:
InnoDBinternal temporary tables that are stored on disk now support multiple cursor positions, permitting single writer and multiple reader access within the same thread. The purpose of this enhancement is to provide support for recursive and non-recursive common table expressions (CTEs).Additionally, consistent-read access to
InnoDBon-disk internal temporary tables is replaced by a dirty-read scheme, and row counts forInnoDBon-disk internal temporary tables now use row count statistics instead of slower table scans. (WL #9248) InnoDB:
InnoDBnow compresses large objects into a sequence of smallerzlibstreams for tables that useROW_FORMAT=COMPRESSED. Previously, large object data was compressed into a singlezlibstream. (WL #9263)-
Replication: When a negative or fractional timeout parameter was supplied to
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), the server behaved in unexpected ways. With this fix:A fractional timeout value is read as-is, with no round-off.
A negative timeout value is rejected with an error if the server is on a strict SQL mode; if the server is not on a strict SQL mode, the value makes the function return NULL immediately without any waiting and then issue a warning.
(Bug #24976304, Bug #83537)
Replication: Work has been done to reduce contention between receiver (I/O) and applier (SQL) replication threads. This ensures slaves keep up with a higher insert load on their master. (Bug #78246, Bug #21753696, WL #8599)
Replication: Added the
binlog_expire_logs_secondssystem variable, which sets an interval in seconds for purging of the binary log. The effects of this variable andexpire_logs_daysare cumulative, making it possible to set a period such as 1.5 days. To completely disable automatic binary log purging, set both variables equal to 0, which is the default value for both of them. (Bug #71697, Bug #18260088, WL #9237)-
Replication: Performance schema tables have been added to monitor replication lags and queues. The
replication_connection_statustable has updated information on the last transaction queued in the relay log, as well as the transaction currently being queued in the relay log. Thereplication_applier_status_by_coordinatortable has updated information on the last transaction written to the buffer of a worker, as well as the transaction currently being processed by the coordinator. Thereplication_applier_status_by_workertable has updated information on the last transaction applied by the worker, as well as on the transaction currently being applied. The information presented in each of these tables contains the transaction's GTID, commit timestamps, processing stage timestamp, and the timestamp of the completion.In the
replication_applier_status_by_workertable, theLAST_SEEN_TRANSACTIONcolumn is replaced by theAPPLYING_TRANSACTIONcolumn. (WL #7374) Replication: The new binlog_expire_logs_seconds variable is a global server variable in addition to the existing expire_logs_days variable. The purpose is to facilitate finer grained retention policies of binary logs than the current day granularity. (WL #9237)
Replication: Correct recovery of DDL statements or transactions by binary log implements support for correct recovery of DDL transactions based on the binary log data. In the context of the new data-dictionary it becomes possible to make metadata changes and write them to the binary log as a single transaction by using the 2-phase commit protocol. (WL #9175)
Replication: Multi-source replication now supports per-channel replication filters. This makes it possible to filter out the execution of selected replicated data from a specific channel. Until now replication filters have been global, and only applicable to all channels. (WL #7361)
Replication: Row-based replication now uses extended table metadata in the binary log. The extended metadata serves two major purposes: slaves use the metadata to transfer data smoothly when its table structure is different from master's, and external software can use the metadata to decode row events and store the data into external databases. (WL #4618)
Replication: An infrastructure for GTID based delayed replication and replication lag monitoring has been added to enable you to properly monitor replication lag. Two new timestamps that are associated with each transaction (not each event or statement) in the binary log have been introduced. The original_commit_timestamp is in microseconds since the epoch when the transaction was committed on the original master, and the immediate_commit_timestamp is in microseconds since the epoch when the transaction was committed on the immediate master. (WL #7319)
Replication: The
RESET MASTERstatement has been extended to allow specification of a binary log file number. TheRESET MASTER TOstatement accepts an argument which specifies the index of the new binary log file to use. The purpose is to simplify failover procedures by replacing theFLUSH BINARY LOGSandPURGE BINARY LOGS TOstatements with a singleRESET MASTERstatement. (WL #9110)Replication: The process used for how delay is defined and calculated for delayed replication have been improved. This relies on a new timestamp in the binary log, the immediate_commit_timestamp, which is the number of microseconds since epoch when the transaction was written to the binary log of the immediate master. This means that the delay is no longer computed per-event, it is now applied per-transaction. (WL #7318)
-
Replication: It is now possible to specify whether information written into the binary log enables replication slaves to parallelize based on commit timestamps, or on transaction write sets.
Using write sets has a the potential for greater parallelism than using commit timestamps since it does not depend on the commit history. When applying binary logs in this fashion on a replication slave, it may be able to leverage capabilities of the underlying computing hardware (such as CPU cores) and thus speed up this process.
The interface for choosing the source of parallelization is implemented as a new server system variable
binlog_transaction_dependency_trackingwhich can take any one of the valuesCOMMIT_ORDER,WRITESET, orWRITESET_SESSION.COMMIT_ORDER(the default) causes parallelization information to be logged using commit timestamps;WRITESETcauses this information to be logged using write sets in such a way that any transactions not updating the same row can be parallelized; andWRITESET_SESSIONacts in the same fashion asWRITESET, except that updates originating with the same session cannot be reordered. The size of the row hash history that is kept in memory for tracking transaction dependencies can be set usingbinlog_transaction_dependency_history_size, also introduced in this release. (WL #9556, WL #10750) Group Replication: View change events from a group can now be replicated to an external multithreaded slave (MTS) of type
DATABASE. (Bug #25170698, Bug #84008)Group Replication: Group Replication now supports
SAVEPOINTSQL transactions. (WL #9837, WL #10520)-
JSON: Added the JSON utility function
JSON_PRETTY(), which prints an existingJSONvalue, or any string that can successfully be parsed as a JSON document, in a format that can be easily read by humans. Each JSON object member or array value is displayed on a separate line of the output; each child object or array is intended 2 spaces with respect to its parent.Examples:
mysql> SELECT JSON_PRETTY('123'); +--------------------+ | JSON_PRETTY('123') | +--------------------+ | 123 | +--------------------+ mysql> SELECT JSON_PRETTY("[1,3,5]"); +------------------------+ | JSON_PRETTY("[1,3,5]") | +------------------------+ | [ 1, 3, 5 ] | +------------------------+ mysql> SELECT JSON_PRETTY('{"a":"10","b":"15","x":"25"}'); +---------------------------------------------+ | JSON_PRETTY('{"a":"10","b":"15","x":"25"}') | +---------------------------------------------+ | { "a": "10", "b": "15", "x": "25" } | +---------------------------------------------+(WL #9191)
-
JSON: Previously, when sorting
JSONvalues in a query usingORDER BY, each value was represented by a part having a fixed length in the sort key, each such part requiring 1K of memory. In many cases this usage was excessive—for example, an integer scalar value requires only a relatively very few bytes, so that the remainder of the 1K (90% or more) was taken up by padding.Variable length parts for JSON sort keys have been introduced to address this issue, with each key part now taking up only the space that is needed to store the value. This has the following benefits for performance:
Because sort buffer space is used more effectively, filesorts need not flush to disk as early or often, which means that more data can be sorted in memory.
Shorter keys can be compared more quickly than longer ones, providing a noticeable improvement in performance for in-memory sorts as well as sorts requiring disk usage.
(WL #8741)
The
WEIGHT_STRING()debugging function no longer supports theLEVELclause. (Bug #25469683, Bug #84723)For Developer Studio 12.5, 32-bit builds are now disabled unless the
FORCE_UNSUPPORTED_COMPILERoption is given. (Bug #25267157, Bug #84230)Several foreign key constraint checks that were storage engine agnostic were being done inside
InnoDB. These are now done at the SQL layer. (Bug #25252847)Some GIS out-of-bounds checking was simplified. Thanks to Daniel Black for the contribution. (Bug #25202470, Bug #84062)
The set of compiler flags used for Developer Studio 12.5 was improved. (Bug #25148549, Bug #83955)
CMake now uses
CMAKE_POLICYofCMP0022 NEWrather thanCMP0022 OLD. (Bug #25090147, Bug #83804)-
If MySQL was configured to build with the
-Wno-erroroption, mysql_config produced incorrect output for its--cflagsoption.The set of compiler options that mysql_config and pkg-config produce now is determined by whitelisting rather than blacklisting. (Bug #25040566, Bug #22898475, Bug #80662)
The performance of UTF-8 binary collations was improved. (Bug #24788778, Bug #83247, Bug #25076862)
The systemd service file for mysqld now includes a
Documentationvalue in the[Unit]section to provide a link to the systemd documentation in the MySQL Reference Manual. (Bug #24735762)Unit testing now uses Google Mock 1.8. (Bug #24572381, Bug #82823)
-
The unimplemented and nonstandard
WITH CUBEclause forGROUP BYis no longer supported.NoteCUBEnow is a reserved word and cannot be used as an identifier without identifier quoting.(Bug #24572048, Bug #82821)
These outdated build scripts were removed from MySQL source distributions:
BUILD/SETUP.sh,BUILD/autorun.sh,BUILD/cmake_configure.sh,BUILD/compile-dist, andcmake/configure.pl. (Bug #24512933)The removal of the
mysql_shutdown()C API function in MySQL 8.0.0 has been reverted. It is still to be removed in a future MySQL version, but that removal has been deferred. (Bug #24496976, Bug #82681, WL #9014)Consistency and maintainability of Debian/Ubuntu packaging maintainer scripts was improved. (Bug #23588977)
In-place
ALTER TABLEoperations are now possible for column modifications of tables containing generated columns that depend on columns with aDEFAULTvalue if the modified columns are not involved in the generated column expressions. For example, changing theNULLproperty of a separate column can be done in place without a table rebuild. (Bug #22987899, Bug #80832)For dumps of the
mysqlsystem database, mysqldump no longer generates DDL statements for theinnodb_index_statsandinnodb_table_statstables. Such statements fail at dump reload time because those tables are not user accessible. (Bug #22655287)If mysqld is invoked with
--daemonize,stdoutandstderrare redirected to/dev/nullif connected to a terminal type device, so that mysqld can behave as a true daemon. (Bug #21627629)mysql_secure_installation is more strict about what it considers valid yes and no responses. (Bug #13344753, Bug #62925)
MySQL client and utility programs reported their own program-specific version number when invoked with the
--versionoption, and the version strings did not follow a consistent format. Now these programs print the MySQL version number (same as mysqld) in a consistent format. (Bug #11763201, Bug #55885)A new
mysqldumpoption,--network-timeout, enables large tables to be dumped by settingmax-allowed-packetto its maximum value and network read and write timeouts to a large value. This option is enabled by default. To disable it, use--skip-network-timeout. (Bug #11754493, Bug #46103)-
Added two JSON aggregation functions
JSON_ARRAYAGG()andJSON_OBJECTAGG(). TheJSON_ARRAYAGG()function takes a column or column expression as an argument, and aggregates the result set as a singleJSONarray, as shown here:mysql> SELECT col FROM t1; +--------------------------------------+ | col | +--------------------------------------+ | {"key1": "value1", "key2": "value2"} | | {"keyA": "valueA", "keyB": "valueB"} | +--------------------------------------+ 2 rows in set (0.00 sec) mysql> SELECT JSON_ARRAYAGG(col) FROM t1; +------------------------------------------------------------------------------+ | JSON_ARRAYAGG(col) | +------------------------------------------------------------------------------+ | [{"key1": "value1", "key2": "value2"}, {"keyA": "valueA", "keyB": "valueB"}] | +------------------------------------------------------------------------------+ 1 row in set (0.00 sec)The order of the array elements is unspecified.
JSON_OBJECTAGG()takes two columns or expressions which it interprets as a key and a value, respectively; it returns the result as a singleJSONobject, as shown here:mysql> SELECT id, col FROM t1; +------+--------------------------------------+ | id | col | +------+--------------------------------------+ | 1 | {"key1": "value1", "key2": "value2"} | | 2 | {"keyA": "valueA", "keyB": "valueB"} | +------+--------------------------------------+ 2 rows in set (0.00 sec) mysql> SELECT JSON_OBJECTAGG(id, col) FROM t1; +----------------------------------------------------------------------------------------+ | JSON_OBJECTAGG(id, col) | +----------------------------------------------------------------------------------------+ | {"1": {"key1": "value1", "key2": "value2"}, "2": {"keyA": "valueA", "keyB": "valueB"}} | +----------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)A
NULLkey causes an error; duplicate keys are ignored.For more information, see Aggregate Functions. (Bug #78117, Bug #21647417, WL #7987)
MySQL now supports an
IMPORT TABLEstatement that importsMyISAMtables based on information contained in.SDI(serialized dictionary information) metadata files. This statement is useful for exporting “raw” table files from one server and importing them into another, and provides a faster alternative to dumping tables as a file of SQL statements using mysqldump and processing the dump file using mysql. For more information, see IMPORT TABLE Statement. (WL #7524)
-
Incompatible Change: The stored definition of a view for which an explicit column name list was provided could be invalid. For example, for this statement:
CREATE VIEW v1 (name2) AS SELECT 1 AS name1 UNION SELECT 2 ORDER BY name1;The stored definition looked like this, which is invalid:
CREATE VIEW v1 AS SELECT 1 AS name2 UNION SELECT 2 AS 2 ORDER BY name1;Now column names within the stored definition are not replaced by the column name list:
CREATE VIEW v1 (name2) AS SELECT 1 AS name1 UNION SELECT 2 AS 2 ORDER BY name1;An incompatibility resulting from this change is that the
CREATE VIEWstatement can no longer be recreated solely from theINFORMATION_SCHEMAVIEWStable, because theVIEW_DEFINITIONvalue does not show the column name list. Instead, you must also consult theCOLUMNStable to get the column name list. Alternatively (and more simply), useSHOW CREATE VIEW. (Bug #23265335, Bug #81377) InnoDB; Microsoft Windows: On a MySQL 64-bit build on Windows, a file I/O retry result was misinterpreted due to a missing cast necessary for the correct operation of the retry path, resulting in a failing assertion and operating system error. (Bug #24711351)
InnoDB: In debug builds, a call that initialized latch debugging raised an assertion due to a race condition. (Bug #25700405)
InnoDB: The restriction that required the first undo tablespace to use space ID 1 was removed. The first undo tablespace may now be assigned a space ID other than 1. Space ID values for undo tablespaces are still assigned in a consecutive sequence. (Bug #25551311)
-
InnoDB: A
DROP TABLEoperation raised an assertion on a server with aninnodb_force_recoverysetting of 5 or 6.DROP TABLEis no longer permitted with theseinnodb_force_recoverysettings. (Bug #25385590)References: This issue is a regression of: Bug #19779113.
InnoDB: Compiling the server without the Performance Schema caused a build failure. (Bug #25348787)
InnoDB: During read-ahead, the wrong page size was used to calculate the tablespace size. (Bug #25330449)
InnoDB: Compiling on Fedora 25 using
DWITH_LZ4=systemresulted in a build failure due to a deprecatedLZ4_COMPRESS_LIMITEDOUTPUTfunction. (Bug #25297593)InnoDB: Disabling macros such as
UNIV_PFS_MUTEX,UNIV_PFS_RWLOCK, andUNIV_PFS_THREADcaused compilation errors. (Bug #25251082)InnoDB: A NULL virtual column field name in a virtual index caused a server exit during a field name comparison that occurs while populating virtual columns affected by a foreign key constraint. (Bug #25222337)
InnoDB: The file handle type name for
InnoDBfile I/O Performance Schema instrumentation was changed fromos_pfs_file_ttopfs_os_file_t. (Bug #25220118)InnoDB: Transactions with subqueries on
INFORMATION_SCHEMAtables could block concurrent DDL operations. (Bug #25200952)InnoDB: During a range comparison, a secondary index field number was passed instead of clustered index field number, eventually causing the retrieval of an incorrect field. (Bug #25175249)
InnoDB: A server exit on restart was caused by missing
my_thread_init()andmy_thread_exit()functions for background threads that initialize thest_my_thread_varstructure. (Bug #25167032)InnoDB: A memcached read operation with a non-default read batch size configuration resulted in a server exit. (Bug #25147515)
InnoDB: The
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTStable reportedNULLfor a foreign key constraint name (UNIQUE_CONSTRAINT_NAME) after restarting the server. (Bug #25126722)InnoDB: A gap lock was taken unnecessarily during foreign key validation while using the
READ COMMITTEDisolation level. (Bug #25082593)InnoDB: Loading
InnoDBtables required more memory in MySQL 5.7 due primarily to the addition of in-memory structure members introduced with temporary table optimizations. The in-memory structure members, only used for temporary tables, are now only allocated as needed. (Bug #25080442)InnoDB: After a
TRUNCATE TABLEoperation on a table with aFULLTEXTindex, space size was incorrectly calculated resulting in an invalid read. (Bug #25053705)InnoDB: A prepared XA transaction was rolled back by a high priority transaction. The high priority transaction should wait if the blocking transaction is in a prepared state. (Bug #25032066)
InnoDB:
InnoDBpassed an invalid argument tosyscall(SYS_futex). (Bug #24923840, Bug #83375)InnoDB: After redo log recovery, the node size of an undo tablespace object could sporadically be zero, eventually causing an error. Additionally, the undo tablespace object was incorrectly placed on the LRU list, and the header page of the undo tablespace could be present the buffer cache when the tablespace object is freed, causing a file-open failure on the first page read. (Bug #24916359)
InnoDB: During a checkpoint, all
MLOG_FILE_NAMEredo log records were written in a single mini-transaction (mtr), causing a log parsing buffer overflow. (Bug #24793413, Bug #83245)InnoDB: The GCC
mach_parse_compressedfunction should load one to five bytes depending on the value of the first byte. Due to a GCC bug, GCC 5 and 6 emit code to load four bytes before the first byte value is checked (GCC Bug #77673). A workaround prevents this behavior. Thanks to Laurynas Biveinis for the patch. (Bug #24707869, Bug #83073)InnoDB: Code related to tablespace type functions was improved to address issues with naming consistency, function distribution, and function usage. (Bug #24706739, Bug #83092)
InnoDB: A mechanism was added to debug builds to ensure that keys for
InnoDBPerformance Schema instrumentation are registered with Performance Schema. The mechanism causes startup to fail on debug builds if the number of Performance Schema keys does not match the number of registered Performance Schema keys. (Bug #24686908)InnoDB: A race condition while updating table statistics could result in an estimated row count of 1 and an incorrect query execution plan. (Bug #24666839, Bug #82968)
InnoDB: Due to a
glibcbug, short-lived detached threads could exit before the caller had returned frompthread_create(), causing a server exit. Thanks to Laurynas Biveinis for the patch. (Bug #24605956, Bug #82886)InnoDB: An error in code related to table statistics raised an assertion in the
dict0stats.ccsource file. (Bug #24585978)InnoDB: The list of module base names representing modules in the
InnoDBcode base that allocate memory usingut_mallocorut_newwas incomplete. The list is used by the Performance Schema for reporting ofInnoDBmemory allocation event data. (Bug #24571816)InnoDB: Some
InnoDBrw-lock and mutex keys were not registered for use with the Performance Schema. (Bug #24571597)InnoDB: After increasing the value of
innodb_undo_logsand restarting the server, the number of active undo tablespaces was not increased when assigning undo tablespaces to newly allocated rollback segments. (Bug #24488141)InnoDB: The unused
MLOG_UNDO_HDR_DISCARDredo log record type and related functions were removed. (Bug #24482001)-
InnoDB: An assertion was raised when the purge thread started due to the server not recognizing a tablespace ID as an undo tablespace ID. (Bug #24479773)
References: This issue is a regression of: Bug #23517560.
InnoDB:
InnoDBincorrectly reported an error about missing encryption when restoring pages from the doublewrite buffer during recovery. (Bug #24471076)-
InnoDB:
InnoDBreported an incorrect estimate for the number of pages in the buffer pool for a table. The number of pages was not decremented correctly when pages were removed. (Bug #24464147)References: This issue is a regression of: Bug #21747906.
-
InnoDB: The following code changes related to undo tablespace management were implemented:
-
An in-memory array for temporary tablespace rollback segments was added, freeing 32 slots in the
TRX_SYSpage for use by redo-enabled rollback segments.As a result of this change, you no longer need to consider temporary tablespace rollback segments when setting the
innodb_rollback_segmentsconfiguration option during configuration of separate undo tablespaces. Code comments related to undo logs and rollback segments were revised.
Fixed arrays that list rollback segments and undo tablespaces were replaced by dynamic size arrays.
The function that initializes undo tablespaces was refactored.
A class was added for managing just-in-time creation of undo and undo file names.
(Bug #24462978)
-
InnoDB: A cached undo segment was not removed from the rollback segment history during a slow shutdown. (Bug #24450908)
InnoDB: An error during a table-rebuilding operation on a table with only a generated clustered index (
GEN_CLUST_INDEX) raised and assertion due to an error called with an invalid key name. (Bug #24444831)InnoDB: MySQL did not build with GCC 6.1.1. (Bug #24438752)
InnoDB: Rotating the tablespace encryption master key while the server is in read-only mode raised an assertion instead of displaying an error message. (Bug #24404091)
InnoDB: On a table without an explicitly defined primary key,
InnoDBdid not replace the implicit clustered index (GEN_CLUST_INDEX) when a unique key was defined on aNOT NULLcolumn. (Bug #24397406)InnoDB:
handler::keys_to_use_for_scanning()was removed from the handler API. The function was no longer used. TheHA_READ_ORDERindex flag provides the same information for each index. (Bug #24364448)-
InnoDB: Page cleaner threads asserted due to a regression related to the adaptive hash index feature. (Bug #24346574)
References: This issue is a regression of: Bug #21407023.
InnoDB:
InnoDBfailed to free memory used by the full-text optimizer thread. (Bug #24331265)InnoDB: During recovery,
InnoDBattempted to fetch LOB pages using a null reference. (Bug #23615208)InnoDB: When adding a new index, the server dropped an internally defined foreign key index and attempted to use a secondary index defined on a virtual generated column as the foreign key index, causing a server exit.
InnoDBnow permits a foreign key constraint to reference a secondary index defined on a virtual generated column. (Bug #23533396)InnoDB: An
INFORMATION_SCHEMA.FILESquery resulted in a server exit due to a race condition with a concurrent tablespace creation operation. (Bug #23477214, Bug #81614)InnoDB: A concurrent DML operation during an in-place
ALTER TABLEoperation that rebuilt the table did not update a virtual index, resulting in a mismatch between the virtual index and clustered index. (Bug #23219499)InnoDB: A
TRUNCATE TABLEoperation held thedict_sysmutex while scanning for and removing pages from the buffer pool, causing concurrent DDL operations to stall. The mutex is now released during the scan and acquired again when the scan is completed. (Bug #23070734, Bug #80060)InnoDB: Inserting GIS data into an R-tree raised an assertion due to a missing page number field that was encountered when storing the B-tree cursor. (Bug #23044098, Bug #80939)
InnoDB: Writing to an
InnoDBinternal temporary table did not increment theHandler_writecounter. (Bug #23024178)InnoDB: Changes to the
InnoDBrecovery process in MySQL 5.7 could require up to three scans of the redo log during recovery. To reduce the number of scans, the first and second scans were merged. With this change, there is only one scan unless the redo log record hash table that is populated by the scan reaches its memory threshold. In this case, a second scan is initiated that performs a simultaneous scan and apply. (Bug #22963951, Bug #80788)InnoDB: A table-copying online
ALTER TABLEoperation on aROW_FORMAT=REDUNDANTtable with indexed virtual columns raised an assertion. (Bug #22018745)InnoDB: After a server restart, concurrent
INSERToperations a table with an auto-increment primary key resulted in a duplicate entry error. The current auto-increment value was not changed afterauto_increment_incrementandauto_increment_offsetsettings were modified. (Bug #20989615, Bug #76872)InnoDB: Performance Schema instrumentation for
InnoDBfile I/O was disabled on Windows. (Bug #14025581)InnoDB: An automatically generated foreign key constraint identifier that exceeded the 64 character limit appeared truncated in the
INFORMATION_SCHEMA.TABLE_CONSTRAINTSCONSTRAINT_NAMEcolumn. Automatically generated foreign key constraint identifiers can no longer exceed the 64 character limit. (Bug #11745347, Bug #13942)InnoDB: The
row_search_mvcc()function unnecessarily traversed the entire table for a range query, which occurred when the record was not in the transaction read view. (Bug #84202, Bug #23481444, Bug #25251375)Packaging: The my_create_minidump function in the mysys library called the Windows API function MiniDumpWriteDump with an incorrect value (NULL) for the ExceptionParam parameter. This resulted in exception information being omitted from the minidump file. (Bug #24505650, Bug #82695)
Partitioning: For a partitioned table, dropping a partition dropped triggers for the table as well. (Bug #24449174)
Partitioning: Updating a row of a table that had partitioning on a generated column could raise an assertion failure for debug builds, and return incorrect results in nondebug builds. (Bug #22574695, Bug #80080)
Replication: MySQL 8.0.1 adds the original commit timestamp related statements, but mysqlbinlog was wrongly reporting that these statements have been present since MySQL 8.0.0 because they were written to the log with the incorrect version number
80000. The fix changes the version to80001in mysqlbinlog dumps. (Bug #25710507)Replication: Lock contention impeded binary relay performance during processing of the relay log file on the slave. (Bug #25321231, Bug #77778)
Replication: A failed node that was removed from the cluster could be expelled upon rejoining the cluster. (Bug #25311008)
Replication: When using a multithreaded slave, applier errors displayed worker ID data that was inconsistent with data externalized in Performance Schema replication tables. (Bug #25231367)
Replication: Compiling MySQL 5.7.17 failed with a variable length array error. (Bug #25163241, Bug #83994)
Replication: In row-based replication, a message that incorrectly displayed field lengths was returned when replicating from a table with a
utf8mb3column to a table of the same definition where the column was defined with autf8mb4character set. (Bug #25135304, Bug #83918)Replication: If the binary log on a master server was rotated and a full disk condition occurred on the partition where the binary log file was being stored, the server could stop unexpectedly. The fix adds a check for the existence of the binary log when the dump thread switches to next binary log file. If the binary log is disabled, all binary logs up to the current active log are transmitted to slave and an error is returned to the receiver thread. (Bug #25076007)
Replication: The GTID transaction skipping mechanism that silently skips a GTID transaction that was previously executed did not work properly for XA transactions. (Bug #25041920)
Replication: If a relay log index file named relay log files that did not exist,
RESET SLAVE ALLsometimes did not fully clean up properly. (Bug #24901077)Replication: When the MTS slave applier stopped because of an (injected) error, it reported no useful information for troubleshooting. (Bug #24822686)
Replication:
FLUSH BINARY LOGScould become slow with data replicated from many servers. (Bug #24806259, Bug #83270)-
Replication: When using XA transactions, if a lock wait timeout or deadlock occurred for the applier (SQL) thread on a replication slave, the automatic retry did not work. The cause was that while the SQL thread would do a rollback, it would not roll the XA transaction back. This meant that when the transaction was retried, the first event was
XA STARTwhich was invalid as the XA transaction was already in progress, leading to anXAER_RMFAILerror. (Bug #24764800)References: See also: Bug #83588, Bug #24923091, Bug #24966941.
Replication: A partially failed
CREATE USER,RENAME USER, orALTER USERstatement was not correctly consuming an auto-generated or specified GTID when binary logging was disabled. (Bug #24693798)Replication:
Binlog_sender, which writes events from the binary log to a packet buffer and then sends the packet to the slave, did not reduce the size of the send buffer as expected. (Bug #24643036)Replication: The group commit update of GTIDs has been refactored to improve performance on workloads with many small transactions. (Bug #24398760)
Replication: If the
relay_logoption was not specified in a configuration file, therelay_log_basenamevariable was being internally constructed on the fly usinghostnamebut therelay_log_basenamevariable was not set. When a slave tried to access this uninitialized variable it resulted in an unexpected halt of the server. (Bug #24352667)Replication: When using a multithreaded slave (
slave_parallel_workersgreater than 0) the value ofSeconds_Behind_Masterwas incorrect when rotating a relay log. (Bug #23532304)Replication: An
XA PREPAREstatement that failed during the intermediate steps could lead to an inconsistentXAtransaction state, whereID= -1 but thebinloggedflag was set totrue. This caused asserts while executingXA COMMITandXA ROLLBACKqueries. (Bug #22915670)Replication: The server prevented several replication-related administrative statements from working if the
read_onlysystem variable was enabled. (Bug #22857926, Bug #25363745, Bug #25326058, Bug #84350, Bug #84437)Replication:
CHANGE MASTER TOfor a channel that did not exist could raise an assertion. (Bug #22255698)Replication: The delay specified by the
binlog_group_commit_sync_delaysystem variable was applied to too many binary log commit groups. (Bug #21420180)Replication: The number of generated unwanted fseeks into the binary log file being replicated to a slave has been reduced. (Bug #83226, Bug #24763579)
Replication: The fix for Bug #81657 was not correctly merged into MySQL 8.0. Thanks to Laurynas Biveinis for alerting us. (Bug #83124, Bug #24715790)
Replication: The
rpl.rpl_binlog_errorstest was failing sporadically on Windows. (Bug #82302, Bug #24330138)Replication: When
binlog_group_commit_sync_delaywas set to a value between 1 and 9, ifbinlog_group_commit_sync_no_delay_countwas set to a value greater than 1, and the number of transaction commits was less thanbinlog_group_commit_sync_no_delay_count, these commits hung forever if no more commits were received; and ifbinlog_group_commit_sync_no_delay_countwas set to 0, all transaction commits hung forever. (Bug #80652, Bug #22891628)Replication: Concurrent
CREATE TRIGGERandDROP TRIGGERstatements were not being binary logged in the correct order, causing slaves to fail. (Bug #77095, Bug #21114768)Group Replication; Microsoft Windows: Removed unnecessary warnings raised when the Group Replication plugin was compiled on Windows platforms. (Bug #25119288)
Group Replication; Microsoft Windows: Building Group Replication support on Windows now requires CMake version 2.8.12 or later. (Bug #24964522)
Group Replication: The
MEMBER_STATEof a group replication member did not change fromERRORtoOFFLINEwhen theSTOP GROUP_REPLICATIONcommand was executed when the error wasER_GROUP_REPLICATION_CONFIGURATION. (Bug #25674926)Group Replication: With flow control enabled, reaching a minimum flow control quota of 1 caused Group Replication not to stop throttling when the reason for throttling was no longer in effect. (Bug #25461354)
Group Replication: Using an unresolvable host name in
group_replication_group_seedscausedSTART GROUP_REPLICATIONto fail. This fix ensures that host names ingroup_replication_group_seedsare validated when starting Group Replication and that the list contains at least one valid address. Invalid addresses are ignored. (Bug #25460324, Bug #84674)Group Replication: The
_gr_useraccount created by Group Replication plugin installation was not reliably removed when the plugin was uninstalled. (Bug #25298987)Group Replication: When starting Group Replication on an offline node, it was possible for the node to be configured for replication, but but be unable to recover. (Bug #25256910)
Group Replication: Group Replication GCS did not discard messages from an inactive member of the group. (Bug #25134074)
Group Replication: An attempt by the Group Replication plugin to contact the server that was no longer possible led to an assertion. (Bug #25071492)
Group Replication: After executing restarts on the group replication applier SQL thread, the plugin could no longer detect failure of the thread. (Bug #24969065)
Group Replication: Enabling the group replication plugin caused the
performance_schema_max_mutex_classesdefault value of 200 to be exceeded. As a result, some group replication mutex instruments did not appear in theperformance_schema.setup_instrumentstable. (Bug #24746530)Group Replication: For servers built with yaSSL, using group replication with encrypted connections could result in timeout failures waiting for view delivery. (Bug #23592214)
Microsoft Windows: On Windows,
SHOW TABLES FROMhung ifdb_namedb_namewas given in uppercase. (Bug #24800048, Bug #83262)Microsoft Windows: 32-bit builds are no longer supported on Windows, but
CMakefailed to detect when a 32-built build would be attempted, resulting in compilation errors later. NowCMakedetects 32-bit build attempts and produces an appropriate error message. (Bug #24487483, Bug #82645)Solaris: When the
WITH_INNODB_MEMCACHEDCMake option is enabled, memcached now can be built on Solaris 11 and 12 using the Developer Studio 12.5 compiler. (Bug #24504155, Bug #82692)Solaris: Library search path handling on Solaris was incorrect. (Bug #24487934, Bug #82646)
Solaris: The minimum required version of Solaris is now Solaris 11 update 3, due to a dependency on system runtime libraries.
-
Solaris: On Solaris, MySQL is now built with Developer Studio 12.5 instead of gcc. The binaries require the Developer Studio C/C++ runtime libraries to be installed. See here for how to install only the libraries:
https://docs.oracle.com/cd/E60778_01/html/E60743/gozsu.html JSON: When a
JSONvalue consisted of a large sub-document wrapped in many levels of JSON arrays, objects, or both, serialization of theJSONvalue sometimes required an excessive amount time to complete. (Bug #23031146)JSON: When a
NULLvalue existed in aJSONcolumn, the result from a query usingGROUP_CONCAT()together with theORDER BYclause was not always correct. (Bug #22992666)JSON: The internal
rapid_json_handlerused its own data structures to represent a partially-built DOM; these had to be converted into aJson_domgraph before returning the result. Now this handler builds the graph directly, which reduces the amount of work required to build it, and thus to parse a JSON document. (Bug #22900110)JSON: The internal function
Item_func_case::val_json()did not always set the null value flag as expected when aCASEexpression evaluated toNULL, leading to an assertion in debug builds of the server. (Bug #22887227)JSON: The
SUM()function truncated decimal values extracted from JSON documents, producing an integer result. (Bug #84935, Bug #25530204)-
JSON: A JSON document that contained a double value slightly greater than the maximum value that can be represented by a double silently replaced it with zero instead of rejecting the value and raising an error. Such values are now handled correctly in MySQL JSON documents.
The underlying issue was traced to a problem with RapidJSON, which has been reported to that library's developers as Issue #849. (Bug #84891, Bug #25518504)
JSON: The
JSON_SEARCH()andJSON_CONTAINS_PATH()functions did not work when theone_or_allargument was specified using UTF-16 encoding. For both of these functions, this argument is now converted toutfmb4if need be before its value is checked. (Bug #84880, Bug #22516960)JSON: The
JSON_UNQUOTE()function did not work with strings that used UTF-16 encoding. Now these strings are converted toutfmb4internally before being processed. (Bug #84878, Bug #25516881)-
JSON: Updating the same
JSONcolumn in a single statement could cause incorrect values to be written into the table. This occurred when the second update overwrote the column value with a subset of itself. An example of such a statement is shown here:UPDATE t SET col = JSON_ARRAY(value), col = col->'$[0]';(Bug #84694, Bug #25461627)
-
JSON: The functions
JSON_QUOTE()andJSON_UNQUOTE()did not work correctly with multibyte character sets such asutf8mb4. (Bug #84680, Bug #25455065)References: See also: Bug #77234, Bug #21193273.
JSON: The error message for Error 3152
ER_JSON_USED_AS_KEYhas been changed from JSON column '%s' cannot be used in key specification to the less confusing and more accurate JSON column '%s' supports indexing only via generated columns on a specified JSON path. (Bug #81364, Bug #23274244)-
JSON: Internal tests for MySQL JSON functionality ran out of stack space on some platforms when run against a debug-enabled server. Because timely checks were not made for stack usage, the server did not detect this situation, leading to a server exit.
The fix for this issue is twofold:
Stack overrun checks are now made before attempting to serialize a nested array or object, so that the operation fails gracefully when processing deeply nested JSON documents, rather than causing an exit.
Serialization of JSON documents has been reorganized so that it requires less use of the stack when compiled without optimization.
(Bug #81083, Bug #23106330, Bug #26399306)
BIN()could produce incorrect truncation with multibyte character sets when used withinUNION. (Bug #27511490, Bug #89581)MySQL did not compile with GCC 7. (Bug #25643811, Bug #26825211)
The (undocumented)
WINDOWS_RUNTIME_MDCMake option has been removed. (Bug #25611359)If
--skip-innodbor one of its variants was used, a spurious warning aboutavoid_temporal_upgradewas generated. (Bug #25573578)-
mysqld_safe failed to restart the server if a
file was present. (Bug #25572504)PID_FILE.shutdownReferences: This issue is a regression of: Bug #11751149.
For Debian/Ubuntu packages, user-defined collation files could be overwritten during MySQL upgrades. Charset files are now marked as conffiles so that user customizations generate a prompt during upgrades whether to overwrite them. (Bug #25525628, Bug #84761)
For
CREATE TABLEstatements that specified the table name with a database qualifier and included aDATA DIRECTORYorINDEX DIRECTORYoption, an error occurred if there was no default database. (Bug #25514146, Bug #84861)referenced_table_schemaandreferenced_table_namefield values in themysql.foreign_keysdata dictionary table were not stored in lowercase whenlower_case_table_nameswas enabled. (Bug #25495714)Starting the server with
performance_schema_digests_size=1caused an abnormal exit. (Bug #25492129, Bug #84786)For clients linked against yaSSL, connections became invalid when a read timeout occurred, rather than retrying the read. (Bug #25444075)
MySQL compilation in different directories produced different builds to leakage of absolute paths into debug information and
__FILE__. (Bug #25436469, Bug #84608, Bug #25859274, Bug #85855)Calculations for UCA 9.0.0 collations were inefficient for tailoring rules containing contraction characters. (Bug #25426632, Bug #84577, Bug #25426632, Bug #84577)
A negative internal connection timeout value caused the connection to go idle and abort. A negative value now causes the connection to block indefinitely in the absence of I/O. (Bug #25408557)
A mutex Performance Schema name was too long and produced a warning at server startup. (Bug #25406915)
MySQL failed to compile on some platforms with
-DWITH_LIBWRAP=ON. CMake support now checks whethertcpd.hhas proper function prototypes. (Bug #25395543, Bug #84495)An index defined on a data dictionary table column exceeded the maximum index key length when the instance was initiated with
innodb_page_size=4k. (Bug #25384527)mysqld_safe did not check whether the directory named by the
--basediroption existed. (Bug #25365194)Configuring CMake with
-G ninjaresulted in build output that was inappropriate for build platforms other than Xcode or Visual Studio. (Bug #25358460)mysqld_safe failed if the error log file named by the
--log-erroroption was a FIFO. (Bug #25356221, Bug #84427)For prepared statements, an alias within a subquery or derived table might cause incorrect behavior during statement execution if another alias depended on it. (Bug #25343335, Bug #84398, Bug #25171608)
mysqld_safe could fail if the
--datadiroption value ended with a/character. (Bug #25319457)A recent change to mysqld_safe caused the mysql.server script to be unable to start it if the base directory was specified as an absolute path that differed from the compiled-in default absolute path. (Bug #25319392, Bug #84263)
The
CONNECTION_CONTROLplugin failed to compile if the Performance Schema was disabled. (Bug #25308357, Bug #84304)Passwords did not expire correctly for accounts created using MySQL Workbench. (Bug #25299309)
For System V init scripts for RPMs, the
[mysqld]option-file section was being ignored for some options, such aspid-file. (Bug #25287707, Bug #84172)Init scripts failed to launch mysqld_safe if a non-default base directory was used. (Bug #25261472, Bug #84219)
CMakenow detects whether a GCC 5.3.0 loop optimization bug occurs and attempts a workaround if so. (Bug #25253540)mysqld_safe --no-defaults did not work (inadvertent consequence of an earlier bug fix). (Bug #25244898, Bug #84173)
Semicolon (
;) characters within or between statements could cause distinct digests to be generated from identical statements. (Bug #25244533, Bug #83253)Components could not register services without referring to their private implementation. A
SERVICE_IMPLEMENTATION(macro now enables this to be avoided. (Bug #25238906)component,service)Certain stored functions, if used in a query
WHEREclause, could be handled using Index Condition Pushdown (which should not happen), resulting in a server exit. (Bug #25196653, Bug #25174454)For
ai_cicollations based on Unicode Collation Algorithm 9.0.0, accented characters that compare equal were treated as different byLIKEcomparisons. (Bug #25167284, Bug #83999)For a client linked against
libmysqlclient, invalid memory access could occur during use of prepared statements. (Bug #25164932)Some Linux startup scripts did not process the
datadirsetting correctly. (Bug #25159791)If a character set is specified for a column of a partitioned table, a segmentation fault could occur while upgrading. (Bug #25153261)
LOAD DATAfailed to accept multibyte characters that followed an escape sequence. (Bug #25147988, Bug #83950, Bug #25865525)-
The fix for Bug #25088048 caused the command used by mysqld_safe to start the MySQL server to no longer include the mysqld path. (Bug #25144379)
References: This issue is a regression of: Bug #25088048.
For UCA collations,
LIKEcomparisons against a pattern that ended with the escape character returned incorrect results. (Bug #25140629, Bug #83930)The default character set and collation were used instead of the character set and collation defined in
db.optfile when upgrading the schema from MySQL 5.7 to MySQL 8.0. (Bug #25139901)Instead of updating the data dictionary cache at the end of DDL statements using separate function calls, the data dictionary cache is now updated as part of transaction commit. (Bug #25095798, Bug #83818)
CREATE TABLEnow requires theFILEprivilege ifDATA DIRECTORYorINDEX DIRECTORYis specified explicitly as a table or partition option.ALTER TABLErequires theFILEprivilege if either option is specified explicitly as a partition option (it ignores them if specified as table options). (Bug #25092566)There were some differences between ICU order and MySQL Unicode collations for Hungarian contractions and ligatures. MySQL now follows ICU order. (Bug #25090543)
The data dictionary failed to initialize and start when using a binary collation. The query string generated to create the data dictionary schema did not add quotes to the binary collation name. (Bug #25054104, Bug #83706)
Executing a stored procedure containing a query that accessed a view could allocate memory that was not freed until the session ended. (Bug #25053286)
Compilation on FreeBSD 11 failed attempting to check
MAP_NORESERVE, which is no longer defined. (Bug #25048128, Bug #83689)mysql-test-run.pl now checks whether the
TSAN_OPTIONSenvironment variable is set. If so, the value is taken as the path name of a file containing ThreadSanitizer suppressions (errors to be ignored during test runs). Additionally, the--sanitizeoption now causes mysql-test-run.pl to scan the server error logs for ThreadSanizer messages. (Bug #24970905, Bug #83601)After starting the server with a nonzero
--lower-case-table-namessetting, an assertion was raised whenUSE INFORMATION_SCHEMA;was the first instruction from the first client. (Bug #24963580)For case-insensitive Unicode collations, the various space characters did not hash to the same value, resulting in incorrect comparisons between them. (Bug #24956750, Bug #83549)
Dictionary clients now track uncommitted dictionary objects that are being modified by DDL statements, making uncommitted changes by the same session visible to a dictionary client without affecting the dictionary object cache prior to commit time. (Bug #24956365, Bug #83548)
Simultaneous dictionary object cache misses were not handled correctly. An object retrieved by one thread could be evicted from the cache before a waiting thread attempted to access it. (Bug #24949179)
CMakenow avoids configuring the-fexpensive-optimizationsoption for GCC versions for which the option triggers faulty shift-or optimizations. (Bug #24947597, Bug #83517)CMakesupport was added for compiling using the-std=c++03option under Developer Studio 12.5. This is now used rather thanstlportby default. (Bug #24947136, Bug #83512, Bug #25229424)NCHARandNATIONAL CHARare synonyms, butCAST(succeeded, whereasexprAS NCHAR)CAST(did not. Now both work. (Bug #24934161)exprAS NATIONAL CHAR)OEL RPM packages now better detect which platforms have multilib support (for which 32-bit and 64-bit libraries can be installed). Thanks to Alexey Kopytov for the patch. (Bug #24925181, Bug #83457)
OEL RPM packages now better detect which platforms do not have multilib support (for which 32-bit and 64-bit libraries can be installed). Thanks to Alexey Kopytov for the patch. (Bug #24916428, Bug #83428)
The
LOCATE()function returnedNULLif thesubstrorstrargument wasNULL, but not if theposargument wasNULL. Now it returnsNULLif any argument isNULL. (Bug #24911350, Bug #83427)Bit operations could cause a server exit to occur if argument nullability was mishandled. (Bug #24910958, Bug #24930038, Bug #24930829)
The Block Nested Loop algorithm could allocate too much memory during query execution. (Bug #24909223)
Information about building MySQL 5.6 compatibility libraries in the MySQL 5.7 and higher
.specfile is needed only for buildinglibmysqlclientandlibmysqld. Information about building theInnoDBmemcached plugin was removed. (Bug #24908345, Bug #83409)Incorrect updating of view metadata could raise an assertion. (Bug #24834622)
Initialization of the
keyring_okvplugin failed if theSTANDBY_SERVERsetting was missing from theokvclient.oraconfiguration file, effectively making this a mandatory setting.STANDBY_SERVERis now optional. (Bug #24816271)Data dictionary objects acquired by
Dictionary_client::acquire_uncached()are now owned by the current auto-releaser instead of the caller. Also, acquisition ofTABLE_SHAREview objects is performed byacquire() andclone() instead ofacquire_uncached(). (Bug #24813358, Bug #83296)Privilege checking could be incorrect for a derived table used within a multiple-table
UPDATEinvoked within a stored procedure or view object, for the second or subsequent execution of the object, if the derived table was merged into the outer query. (Bug #24810564)The
Created_tmp_tablesstatus variable was incremented in some cases when no temporary table was created. (Bug #24808970, Bug #83287)An in-place upgrade from MySQL 5.7 to MySQL 8.0 failed if parsing of a stored routine body failed while migrating the routine. Now a warning is reported and the routine is created without parsing its body. Also, warnings are now reported when dependency resolution fails for a view during view migration. (Bug #24805140, Bug #83275)
For compilation, mysql_upgrade is dependent on the dynamically generated
sql_commands_system_tables_data_fix.hfile, but a missing dependency could cause that file not to be generated. (Bug #24802377, Bug #83272)A race condition between transactions accessing the access-control list (ACL) cache and use of the ACL cache to populate
INFORMATION_SCHEMAtables could cause a server exit. (Bug #24786029)For debug builds,
EXPLAINorDESCRIBEfor a table with a database or table name longer than the maximum permitted length raised an assertion rather than displaying an appropriate error. (Bug #24751177, Bug #83114)The implementation of several
INFORMATION_SCHEMAtables as views on data dictionary tables introduced a number of native SQL functions intended only for internal use by the server, but they could be invoked by users. Those functions now produce an error if invoked by users. (Bug #24749248, Bug #83189)CASE,COALESCE(),IF()andIFNULL()could merge a mix of signed and unsigned arguments incorrectly and produce an incorrect result type. (Bug #24733658, Bug #83148)Connections from a client to a server with SSL enabled succeeded even if
--ssl-modehad a value ofVERIFY_CAorVERIFY_IDENTITYand the client did not provide a CA certificate. (Bug #24732452, Bug #23189252, Bug #25397416, Bug #84508)Manual creation of a directory in the data directory resulted in
USEsucceeding even though the directory was not registered as a database in the data dictionary. (Bug #24732194, Bug #83140)dir_nameIf
InnoDBstatistics were incorrect,FOUND_ROWS()could return 1 even when the previousSELECTreturned no rows. (Bug #24714857, Bug #83110)ALTER TABLEon a temporary table could raise an assertion if a nontemporary table with the same name existed. (Bug #24713918, Bug #83117)CMake now sets
-DWITH_NUMA=ONfor Debian platforms where possible. (Bug #24689101)To better provide atomic file creation, Debian packaging scripts now use the coreutils install command rather than touch, chmod, and chown. (Bug #24688682)
-
Enabling the
DISABLE_SHAREDCMake option caused compilation failure. (Bug #24687701, Bug #83039)References: This issue is a regression of: Bug #24481181.
The
BIN(),OCT(), andHEX()functions could mishandle values of theBITdata type. (Bug #24686658, Bug #83031)For debug builds, an invalid
utf8character in the comment of aCREATE EVENTorALTER EVENTstatement raised an assertion. This now produces anER_INVALID_CHARACTER_STRINGerror. (Bug #24679962)The encoding for the
utf8character set permitted characters between U+D800 and U+DFFF as valid, though they are reserved for surrogate pairs and do not directly represent characters. They are now considered invalid. (Bug #24672415)A query could produce incorrect results if the
WHEREclause contained a dependent subquery, the table had a secondary index on the columns in the select list followed by the columns in the subquery, andGROUP BYorDISTINCTpermitted the query to use a Loose Index Scan. (Bug #24671968, Bug #83005)After a
RENAME TABLEoperation on a table with a foreign key, the generated constraint name was not updated inTABLE_CONSTRAINTS. (Bug #24666169)-
On macOS,
CMakeAddressSanitizer support did not work. (Bug #24661626, Bug #82976)References: This issue is a regression of: Bug #23759968.
Compilation failed on macOS 10.11 with Xcode 8.0. (Bug #24661523, Bug #82975)
Index hints applied to invisible indexes produced no error. (Bug #24660093, Bug #82960)
In some cases,
INFORMATION_SCHEMA.KEY_COLUMN_USAGEdid not report data for all foreign key constraints. (Bug #24655803, Bug #82961)REPLACE()on large strings could be slow and unkillable. (Bug #24652792)The
DebugPrintTestandDebugPrintDeathTestunit tests did not handle divide-by-zero testing properly on the Aarch64 platform. Thanks to Alexey Kopytov for the patch. (Bug #24624555, Bug #82889)Compilation on FreeBSD using GCC 6 did not work. (Bug #24619561, Bug #82922)
-
Changes made to mysqld_safe in recent MySQL releases require the
--ledir,--mysqld,--mysqld-versionoptions to be specified on the command line; they can no longer be specified in option files. This could cause failure of init scripts that invoke mysqld_safe. Such scripts now pass the value of theMYSQLD_OPTSenvironment variable as the first command-line argument to mysqld_safe, with the value set to such command line-only mysqld_safe option values as may be required. On platforms that use systemd, theMYSQLD_OPTSvalue can be set in/etc/sysconfig/mysqldwith a line such as this:MYSQLD_OPTS=" --ledir=/mysqld_ledir --mysqld=my_wrapper "The value of
MYSQLD_OPTScan also include mysqld options for mysqld_safe to pass to mysqld. (Bug #24619033, Bug #82920)References: This issue is a regression of: Bug #24464380, Bug #24483092, Bug #25088048, Bug #25378439, Bug #25378565.
SET PERSIST innodb_buffer_pool_size =stored the original value ofvalueinnodb_buffer_pool_sizetomysqld-auto.cnf, not the new value. (Bug #24613005, Bug #82905)For SLES packages, a typo in the installation script postamble prevented some cleanup from occurring. (Bug #24605300, Bug #82389)
Some messages written by the server to the error log while upgrading the data directory were missing the standard timestamp and process ID information. (Bug #24600054, Bug #82874)
It was possible for the session values of the
Last_query_costandLast_query_partial_plansstatus variables to be accessed before they had been initialized. (Bug #24596263)Warnings occurring during
CREATE TABLE ... SELECTcould cause a server exit. (Bug #24595992)For
LOAD DATAused to insert data into an updateable view, the check to verify whether a column is actually updatable was missing. (Bug #24595937)The server could dereference a null pointer when a deterministic function returning
LONGTEXTwas used in a subquery. (Bug #24595581)A view altered with
ALTER VIEWmight be dropped if the statement failed with an error. (Bug #24594140)Conversion of
JSONdocuments to string could be slow if the document was large and contained many signed integers. (Bug #24586888)The data dictionary can contain entries for temporary tables (names beginning with
#sql). These tables were exposed toINFORMATION_SCHEMAqueries and throughSHOWstatements. This could cause mysqldump and mysqlpump to fail when they attempted to dump such tables. Temporary tables are now hidden toINFORMATION_SCHEMAqueries andSHOWstatements. (Bug #24580599, Bug #24571427)-
When a view was defined, the character set of the definition was not considered. If this differed from the default character set, table names used in the view might not be recognized, causing the view to be marked invalid.
For debug builds, an assertion could be raised if an error occurred while parsing an
ALTER VIEWstatement and the diagnostics area was empty. (Bug #24580586) For
LOAD DATAstatements, input data with too many column values produced only a warning, rather than an error as in MySQL 5.6. An error now occurs. (Bug #24577194, Bug #82830)Using
SET PERSISTwith theglobal_logsystem variable was ineffective. (Bug #24569624, Bug #82807)In the Performance Schema
variables_infotable, theVARIABLE_SOURCEcolumn was not set properly for some boolean options specified in option files without a variable. (Bug #24567960)The
.mylogin.cnfoption file is intended for use by client programs, but the server was reading it as well. The server no longer reads it. (Bug #24557925)Use of
boost::chronowas replaced withstd::chronobecause the former was causing link errors. (Bug #24556808, Bug #82781)The X Plugin was built with compilation options different from other plugins. (Bug #24555770, Bug #82777)
When populating the
variables_by_threadtable, the Performance Schema could attempt to access session variables of other threads that were being deinitialized. (Bug #24555658)Users without proper privileges could load and unload server components. (Bug #24528148)
Concurrent execution of
INSTALL COMPONENTandUNINSTALL COMPONENTstatements could cause a server exit. (Bug #24527148)On Debian/Ubuntu platforms, the systemd startup script for MySQL ignored
datadirsettings in/etc/mysql/my.cnf. (Bug #24517024, Bug #82709)With a
LOCK TABLESstatement in effect, DML statements on a table that had triggers could cause a server exit. (Bug #24506766)Parallel slave threads running account-management statements could fail due to a race condition in handling privilege cache locks. (Bug #24503606)
Executing
ALTER TABLEon a table that has triggers concurrently with other DDL operations could result in a corrupted data dictionary. (Bug #24497803)If mysqladmin shutdown encountered an error determining the server process ID file, it displayed an error message that did not clearly indicate the error was nonfatal. It now indicates that execution continues. (Bug #24496214)
For the
null_auditplugin, setting thenull_audit_event_recordsystem variable improperly could cause a server exit. This variable should be set only from within thenull_auditplugin, so it is now read only. (Bug #24493829, Bug #82670)In certain contexts, an expression such as
IF(col_name > 5000, (1 / col_name), 5000)could get a type ofDECIMAL(6,4), which would truncate results. (Bug #24492965, Bug #82668)The data structure used for
ZEROFILLcolumns could experience memory corruption, leading eventually to a server exit. (Bug #24489302)Operation of the mysql-multi.server.sh script was based on
my.cnfin the data directory. That option file is no longer used, so mysql-multi.server.sh has been removed. (Bug #24487870)A query could produce incorrect results if
MIN()orMAX()in a subquery referred to an indexed column. (Bug #24484060, Bug #82638, Bug #24657798, Bug #82965)SHOW TRIGGERSoutput order could differ on Linux and Windows. (Bug #24482919, Bug #82637)mysqld_safe attempted to read
my.cnfin the data directory, although that is no longer a standard option file location. (Bug #24482156)After running mysql_upgrade, executing an
INSTALL COMPONENTstatement could cause a server exit. (Bug #24453571)A regular expression pattern match into a large string could result in a server exit due to memory allocation failure or integer overflow. (Bug #24449076, Bug #24449090)
Starting the server with a MySQL 5.7 data directory resulted in failure due to absence of the
default_rolesandrole_edgessystem tables. (Bug #24447771)An incorrect error was reported for
CREATE TABLEstatements with a large value for theCONNECTIONtable option. The value is now limited to 1024 bytes. (Bug #24437124)An assertion could be raised if an
ER_LOCK_WAIT_TIMEOUTerror occurred during execution ofSHOW CREATE TRIGGER. (Bug #24420809, Bug #82483)Constant folding could produce incorrect results for large unsigned integers. (Bug #24401273, Bug #82425)
Use of very long subpartition names could result in a server exit. Now partition or subpartition names larger than 64 characters produce an
ER_TOO_LONG_IDENTerror. (Bug #24400628, Bug #82429)The
Gis_wkb_vector<Gis_point>copy constructor was not explicitly instantiated, causing build problems for the Intel compiler. (Bug #24397833, Bug #82358)Privilege escalation was possible by exploiting the way
REPAIR TABLEused temporary files. (Bug #24388746)A race condition between
UNINSTALL PLUGINandSHOW PLUGINScould result in a server exit. (Bug #24344026)With
ROWmode binary logging, component installation raised an assertion. (Bug #24343582)A potential memory leak related to roles was fixed. (Bug #24337928)
-
Subqueries that were converted to semijoins and programmatically generated an
INFORMATION_SCHEMAtable could incorrectly treat theINFORMATION_SCHEMAtable as empty.A workaround for this problem prior to the bug fix:
SET optimizer_switch='semijoin=off';(Bug #24287772, Bug #82214) mysqldumpslow failed to parse timestamps in the slow query log; it had not been updated to track a change in log timestamp format. (Bug #24007040)
The AppArmor profile installed by Ubuntu packages was missing an entry permitting
libnumato read a/syshierarchy path, resulting in server startup failure. (Bug #23854929)The optimizer could incorrectly treat
RAND()as a constant for queries subjected to semijoin transformation. (Bug #23854015)For debug builds, unequal-length binary operands for bit operators could raise an assertion. (Bug #23853628)
If a transaction rollback request rolled back only a statement and not the whole transaction, any attempt at attaching another operation to the transaction raised an assertion. (Bug #23753319, Bug #82143)
STRCMP()for arguments with theutf8mb4_unicode_cicollation could return results different fromORDER BY.STRCMP()has been corrected. (Bug #23752284, Bug #82132)-
Complete logical backups made with mysqlpump could not be restored if GTIDs were enabled.
To enable control over GTID information written to the dump file, mysqlpump now has a
--set-gtid-purgedoption that indicates whether to add aSET@@GLOBAL.gtid_purgedstatement to the output. (Bug #23748432) Infinite recursion could occur if the
audit_logplugin signalled an error while handling an error. (Bug #23717558, Bug #82052)Messages written by the
audit_logplugin to the error log regardingMYSQL_AUDIT_CONNECTevent failures now print the underlying error cause as well to aid debugging. (Bug #23710632)-
MySQL now uses
readdir()rather thanreaddir_r(). The latter has been deprecated sinceglibc2.24 and caused debug builds of MySQL and builds using GCC 6.1 to fail.Additionally, several problems resulting in GCC 6.1 compiler warnings were corrected. (Bug #23708395, Bug #24437737, Bug #82515, Bug #24459890, Bug #82583, Bug #25103242)
FORCE INDEXwas ineffective forSELECT COUNT(*)queries. (Bug #23596760, Bug #81854)During startup, the server creates a lock file for the Unix socket file (for example,
mysql.sock.lockas a lock file formysql.sock). If the server failed to write the process ID to the lock file, it failed to remove that file, which could cause subsequent server startups to fail until the file was removed manually. (Bug #23582603, Bug #81838)For debug builds, queries executed using
Item_func_spatial_collection::val_str()could raise an assertion. (Bug #23573720)For audit log events in the connection class, the
connection_typevalue was available only for connect events. The value is now available in connect, disconnect, and change-user events. (Bug #23541550)The
audit_logpluginaudit_log_filter_remove_filter()function caused a server exit if given aNULLargument. (Bug #23522793)Attempts to configure MySQL without the
FEDERATEDstorage engine failed (the CMake-DWITH_FEDERATED_STORAGE_ENGINE=0option did not work). (Bug #23508203, Bug #81665)On Solaris,
gettimeofday()could return an invalid value and cause a server shutdown. (Bug #23499695)The
keyring_fileplugin could attempt to write keys to its storage file when the file did not exist. To ensure that keys are flushed only when the correct storage file exists,keyring_filenow stores a SHA-256 checksum of the keyring in the file. Before updating the file, the plugin verifies that it contains the expected checksum. (Bug #23498254)A union query resulting in tuples larger than
max_join_sizecould result in a server exit. (Bug #23303485)Grant tables with incorrect structure may cause problems in user management operations. As a consequence of the fix for this, for any operation that modifies a grant table, the server now checks whether the table has the expected structure and produces an error if not. mysql_upgrade must be run to update the tables to the expected structure. (Bug #23295423, Bug #25095876, Bug #25448037)
ST_ExteriorRing()could cause a server exit due to being passed an invalid WKB string believed to be valid. (Bug #23280574)For debug builds, failure to prepare a branch of an XA transaction could lead to a server exit. (Bug #23264552, Bug #81375)
The optimizer could choose
refaccess on a secondary index rather thanrangeaccess on the primary key, even when the cost was higher. (Bug #23259872, Bug #81341)An instance of the disk-full error message contained the wrong error code. (Bug #23247332, Bug #81346)
For a query with
ORDER BYandLIMIT, an optimizer trace did not record the optimizer's switch to a different index. (Bug #23227428, Bug #81250)Improper handling of a lock used by the
version_tokensplugin and functions could result in a server exit if one of the functions was called whileversion_tokenswas being uninstalled. (Bug #23210850)Certain errors in DML statements executed within stored programs could be mishandled and result in a server exit. (Bug #23209989)
The
QUOTE()function could allocate excessive memory. A limit ofmax_allowed_packetbytes is now imposed and returnsNULLwith a warning for attempts to allocate more. (Bug #23195404)For some deeply nested expressions, the optimizer failed to detect stack overflow, resulting in a server exit. (Bug #23135667)
For sessions created through the X Plugin, incorrect thread attachment/detachment could cause a server exit. (Bug #23057045)
When attempting to locate the data directory, mysqld_safe incorrectly considered
$MY_BASEDIR_VERSION/varas one of the possible locations. (Bug #23013510, Bug #80866)For some generated columns, character set conversion of the column definition for table rebuilds could change column values. (Bug #22991924)
The OS X DMG installer did not properly set up keyring plugin installation. (Bug #22991650)
If a query performed a
GROUP BYon a column of a derived table and the select list contained an expression mixing an aggregate function and the group column, an error was raised if theONLY_FULL_GROUP_BYSQL mode was enabled. (Bug #22924183, Bug #80726)A binary (in-place) upgrade from MySQL 5.6 to 5.7 followed by a data export performed using mysqlpump resulted in an
Invalid default value forerror for attempts to reload the dump file. (Bug #22919028, Bug #80706)date_columnA failed cast of a long float to integer could cause a server exit. (Bug #22907691)
On Unix and Unix-like systems, the error log file resulting from specifying
--log-errorwithout an option value was incorrectly created in the directory of the PID file if the--pid-fileoption was also given. (Bug #22900354)The
main.log_tables-bigtest case could be unstable on highly loaded hosts. Thanks to Laurynas Biveinis for the patch. (Bug #22874167, Bug #80607)SQL statements executed through the X Plugin were not instrumented in the Performance Schema. (Bug #22859462)
The
rpl.rpl_key_rotationtest case did not synchronize properly with the master server. Thanks to Laurynas Biveinis for the patch. (Bug #22838596, Bug #80531)-
DROP INDEXoperations could fail due to inconsistent handling of index prefix lengths forTEXT-type columns (TINYTEXTand so forth).A consequence of this fix is more restrictive behavior for
CREATE TABLEandCREATE INDEXstatements for which a specified index prefix exceeds the maximum column data type size:For a nonunique index, either an error occurs (if strict SQL mode is enabled), or the index length is reduced to lie within the maximum column data type size and a warning is produced (if strict mode is not enabled).
For a unique index, an error occurs regardless of SQL mode because reducing the index length might enable insertion of nonunique entries that do not meet the specified uniqueness requirement.
(Bug #22740093, Bug #80392)
Metadata locking on stored routine names was performed on a case-sensitive basis, but routine names are not case sensitive. (Bug #22700385)
Queries that used an aggregate function with
DISTINCTcould produce incorrect results. (Bug #22686994, Bug #80310)-
The
innodb_numa_interleavesystem variable was erroneously available on some systems that were not NUMA-enabled. Thanks to Tomislav Plavcic for the patch.CMake now sets the default
WITH_NUMAvalue based on whether the current platform hasNUMAsupport. For platforms without NUMA support, CMake behaves as follows:With no NUMA option (the normal case), CMake continues normally, producing only this warning: NUMA library missing or required version not available
With
-DWITH_NUMA=ON, CMake aborts with this error: NUMA library missing or required version not available
(Bug #22678436, Bug #80288)
Certain SQL queries involving complex
WHEREconditions could cause warnings, memory corruption, or a server exit. (Bug #22671573)When taking the server offline, a race condition within the Performance Schema could lead to a server exit. (Bug #22551677)
On macOS, if a table with an associated trigger was renamed to a new name containing both lowercase and uppercase characters,
DROP TRIGGERfor the trigger resulted in anER_NO_SUCH_TABLEerror for the table. (Bug #22512899, Bug #79873)In the
MYSQL_FIELDC API structure, theorg_tablevalue for derived tables was*, which could cause failure for queries that depend on this value. Theorg_tablevalue for views and derived tables now is set as follows: If the column is selected from a view,org_tablenames the view. If the column is selected from a derived table,org_tablenames the base table. If a derived table wraps a view,org_tablestill names the base table. If the column is an expression,org_tableis the empty string. (Bug #22364401, Bug #79641)For RPM packages, the default
error-loglocation in the deployed/etc/my.cnffile differed from the location in the installed logrotate script, causing logrotate to fail. (Bug #22322685)The Performance Schema
events_statements_summary_by_digesttable could contain multiple rows for the same statement digest and schema combination, rather than the expected single (unique) row. (Bug #22320066, Bug #79533)For Performance Schema system and status variable tables, variable values expressed in a character set different from
utf8could be truncated or incorrect. (Bug #22313205)For debug builds, altering a table partitioning expression using an expression attribute with an invalid UTF-8 name caused an assertion to be raised. (Bug #22152229)
After performing inserts in a table containing an
AUTO_INCREMENTcolumn and then performing aSELECToperation, theLAST_INSERT_ID()returns the correct value, but the value of themysql_insert_id()C API function was being reset to 0. (Bug #22028117, Bug #78778)On Ubuntu, error messages were displayed during upgrades from Community to Commercial packages that made it appear as though mysqld and my_print_defaults had not been installed. Those messages were spurious and have been silenced. (Bug #21807248)
With the
use_index_extensionsflag of theoptimizer_switchsystem variable disabled, someSELECT DISTINCTqueries could return incorrect results. (Bug #21749123, Bug #78244)An invalid string value in the
WHEREclause of anUPDATEstatement, caused an index scan rather than a range scan to be used. For values not present in the index, this could be much slower. Now the optimizer determines this to be an “impossibleWHERE” condition. (Bug #21032418, Bug #76933)Debian packages were missing an AppArmor-related include file and incorrectly were marked dependent on AppArmor (making it impossible to disable AppArmor by uninstalling it). (Bug #20768958)
When the
automatic_sp_privilegessystem variable was enabled, it did not have the expected effect for anonymous users. (Bug #20266641)In a replication environment,
SET PASSWORDorALTER USERcould fail to execute on the slave due to failure to parse the hash string correctly. (Bug #20228478)The optimizer
resolve_const_item()function calledItem_decimal()with the last two arguments in the wrong order. (Bug #19062566)-
An in-place
ALTER TABLEoperation failed to report an error when adding aDATEorDATETIMEcolumn under these conditions: a) the column wasNOT NULLand no default value was supplied; b) strict andNO_ZERO_DATESQL modes were enabled; c) the table was not empty.An
ALTER TABLEoperation failed with an error rather than a warning when adding aDATEorDATETIMEcolumn under these conditions: a) the column wasNOT NULLand no default value was supplied; b) strict SQL mode was enabled andNO_ZERO_DATESQL mode was not enabled; c) the table was not empty. (Bug #16888677) Inserting a
TIME,DATE, orTIMESTAMPvalue with a fractional seconds part into a column having the same type but fewer fractional digits resulted in rounding. This differs from MySQL 5.5, which used truncation rather than rounding. To enable control over this behavior, a newTIME_TRUNCATE_FRACTIONALSQL mode is available. The default is to use rounding. If this mode is enabled, truncation occurs instead. (Bug #16583910, Bug #68760)NOT INsubqueries could produce incorrect results when an index prefix of an inner table was used. (Bug #13915291)On non-Linux Unix systems, the mysql.server startup script used the Linux command pidof rather than pgrep. (Bug #13788154, Bug #64342)
Starting multiple instances of mysqld_safe after an abnormal server exit could result in one mysqld_safe instance killing another. As a consequence of the bug fix, the
mysqld_safe.pidfile is no longer used. (Bug #11751149, Bug #41908)The
--helpmessage for mysqld_safe was corrected to mention that the--no-defaults,--defaults-file, and--defaults-extra-fileoptions, if given, must be the first argument. (Bug #11745176, Bug #11192)-
The bounds check for the XML parser position stack for each level (which has a fixed depth) used the size of the array as the upper limit, and so was off by one. This is fixed by decreasing the allowable depth by one, which actually matches the maximum number of elements in the position stack. (Bug #83871, Bug #25111907)
References: See also: Bug #14040071, Bug #15948580.