A value of
systemis now permitted for theWITH_BOOSTCMake option. If this option is not set or is set tosystem, it is assumed that the correct version of Boost is installed on the compilation host in the standard location. In this case, the installed version of Boost is used rather than any version included with a MySQL source distribution. (Bug #22224313)In addition to the
mysql-5.7.11.tar.gzsource tarball, another tarball namedmysql-boost-5.7.11.tar.gzis provided. The new tarball contains everything in the first tarball, but also contains all the required Boost header files in a subdirectory namedboost. This is for the benefit of those who do not have the correct Boost version installed and do not wish to or cannot download it. To build from this source distribution, add-DWITH_BOOST=boostto the CMake command line.
-
Bit functions and operators comprise
BIT_COUNT(),BIT_AND(),BIT_OR(),BIT_XOR(),&,|,^,~,<<, and>>. Currently, bit functions and operators requireBIGINT(64-bit integer) arguments and returnBIGINTvalues, so they have a maximum range of 64 bits. Arguments of other types are converted toBIGINTand truncation might occur.An extension for MySQL 8.0 changes this cast-to-
BIGINTbehavior: Bit functions and operators permit binary string type arguments (BINARY,VARBINARY, and theBLOBtypes), enabling them to take arguments and produce return values larger than 64 bits. Consequently, bit operations on binary string arguments in MySQL 5.7 might produce different results in MySQL 8.0. To provide advance notice about this potential change in behavior, the server now produces warnings for bit operations for which binary string arguments are not converted to integer in MySQL 8.0. These warnings afford an opportunity to rewrite affected statements. To explicitly produce MySQL 5.7 behavior in a way that will not change after an upgrade to 8.0, cast bit-operation binary string arguments to convert them to integer. For more information and examples, see Bit Functions and Operators. (WL #9015)
The mysql_plugin utility is deprecated and will be removed in a future MySQL version. Alternatives include loading plugins at server startup using the
--plugin-loador--plugin-load-addoption, or at runtime using theINSTALL PLUGINstatement. (WL #8927)The
mysql_kill(),mysql_list_fields(),mysql_list_processes(), andmysql_refresh()C API functions are deprecated and will be removed in a future MySQL version. The same is true of the correspondingCOM_PROCESS_KILL,COM_FIELD_LIST,COM_PROCESS_INFO, andCOM_REFRESHclient/server protocol commands. Instead, usemysql_query()to execute aKILL,SHOW COLUMNS,SHOW PROCESSLIST, orFLUSHstatement, respectively. (WL #8754)
Previously, mysqld --initialize required the data directory to not exist or, if it existed, to be empty. Now an existing data directory is permitted to be nonempty if every entry either has a name that begins with a period (
.) or is named using an--ignore-db-diroption. (Bug #79250, Bug #22213873)
MySQL Server now supports a keyring that enables internal server components and plugins to securely store sensitive information for later retrieval. The implementation includes a
keyring_fileplugin that stores keyring data in a file local to the server host. For more information, see The MySQL Keyring, Writing Keyring Plugins, and The Keyring Service. (WL #5769)
yaSSL was upgraded to version 2.3.9. This upgrade corrects an issue in which yaSSL handled only cases of zero or one leading zeros for the key agreement instead of potentially any number, which in rare cases could cause connections to fail when using DHE cipher suites. (Bug #22361038)
-
The linked OpenSSL library for the MySQL Commercial Server has been updated from version 1.0.1p to version 1.0.1q. For a description of issues fixed in this version, see http://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. (Bug #22348181)
-
The default value of the
default_password_lifetimesystem variable that controls the global password expiration policy has been changed from 360 (360 days) to 0 (no password expiration). The default of 360 sometimes took people by surprise when account passwords expired a year after upgrading to MySQL 5.7. To continue to use a value other than 0 as the password expiration, start the server with an explicit setting fordefault_password_lifetime. For example, use these lines in an option file:[mysqld] default_password_lifetime=360(Bug #77277, Bug #21284761)
-
MySQL client programs now support an
--ssl-modeoption that enables you to specify the security state of the connection to the server. Permitted option values arePREFERRED(establish an encrypted connection if the server supports the capability, falling back to an unencrypted connection otherwise),DISABLED(establish an unencrypted connection),REQUIRED(establish an encrypted connection, or fail),VERFIFY_CA(likeREQUIRED, but additionally verify the server certificate),VERIFY_IDENTITY(likeVERIFY_CA, but additionally verify that the server certificate matches the host name to which the connection is attempted). For backward compatibility, the default isPREFERREDif--ssl-modeis not specified.These clients support
--ssl-mode: mysql, mysqladmin, mysqlbinlog, mysqlcheck, mysqldump, mysqlimport, mysqlshow, mysqlpump, mysqlslap, mysqltest, mysql_upgrade.The
--ssl-modeoption comprises the capabilities of the client-side--ssland--ssl-verify-server-certoptions. Consequently, both of those options are now deprecated and will be removed in a future MySQL version. Use--ssl-mode=REQUIREDinstead of--ssl=1or--enable-ssl. Use--ssl-mode=DISABLEDinstead of--ssl=0,--skip-ssl, or--disable-ssl. Use--ssl-mode=VERIFY_IDENTITYinstead of--ssl-verify-server-certoptions. (The server-side--ssloption is not deprecated.)For the C API, the new
MYSQL_OPT_SSL_MODEoption formysql_options()corresponds to the--ssl-modeoption. TheMYSQL_OPT_SSL_ENFORCEandMYSQL_OPT_SSL_VERIFY_SERVER_CERToptions formysql_options()correspond to the client-side--ssland--ssl-verify-server-certoptions. They are now deprecated and will be removed in a future MySQL version. UseMYSQL_OPT_SSL_MODEwith an option value ofSSL_MODE_REQUIREDorSSL_MODE_VERIFY_IDENTITYinstead.For more information, see Command Options for Encrypted Connections, and mysql_options().
In consequence of this change, the minor C API version number was incremented. (WL #8785, WL #9072)
-
InnoDB: A new
InnoDBconfiguration option,innodb_tmpdir, allows you to configure a separate directory for temporary files created during onlineALTER TABLEoperations that rebuild the table. This option was introduced to help avoid MySQL temporary directory overflows that could occur as a result of large temporary files created during onlineALTER TABLEoperations.innodb_tmpdircan be configured dynamically using aSETstatement.Online
ALTER TABLEoperations that rebuild a table also create an intermediate table file in the same directory as the original table. Theinnodb_tmpdiroption is not applicable to intermediate table files. (Bug #19183565) InnoDB:
InnoDBnow supports at-rest data encryption forInnoDBtables stored in file-per-table tablespaces. Encryption is enabled by specifying theENCRYPTIONoption when creating or altering anInnoDBtable. For more information, see InnoDB Data-at-Rest Encryption. (WL #8821, WL #8548)Replication: The
log_statements_unsafe_for_binlogvariable was added to provide control over whether the warnings generated by error 1592 are added to the binary log or not. (WL #8993)The Valgrind function signature in
mysql-test/valgrind.suppwas upgraded for Valgrind 3.11. (Bug #22214867)The
audit_logplugin now produces events in theMYSQL_AUDIT_TABLE_ACCESS_CLASSclass. These events are abortable. (Bug #21458192)The format of log output produced by mysqld_safe now is configurable using the
--mysqld-safe-log-timestampsoption. This option can be used to produce log timestamps in formats compatible with the server or in formats used by mysqld_safe in older versions of MySQL. For more information, see mysqld_safe — MySQL Server Startup Script. (Bug #78475, Bug #21862951)The server now supports an
--early-plugin-loadoption that indicates which plugins to load before loading mandatory built-in plugins and before storage engine initialization. One use for this option is to load thekeyring_fileplugin: TheInnoDBstorage engine uses the keyring for data-at-rest encryption, so thekeyring_fileplugin must be loaded early to ensure that it is available prior toInnoDBinitialization. (WL #8821)Storage engines now can request notification about acquisition and release of exclusive metadata locks. As result, the
LOCK_STATUScolumn of themetadata_locksPerformance Schema table has two new status values. ThePRE_ACQUIRE_NOTIFYandPOST_RELEASE_NOTIFYstatus values are brief and signify that the metadata locking subsubsystem is notifying interested storage engines while entering lock acquisition or leaving lock release operations. (WL #7567)
InnoDB; Partitioning: When
OPTIMIZE TABLErebuilt a partitionedInnoDBtable, it placed the resulting partition tablespace files (*.ibdfiles) in the default data directory instead of the directory specified using theDATA DIRECTORYoption. (Bug #75112, Bug #20160327)InnoDB:
InnoDBfailed to update index statistics when adding or dropping a virtual column. (Bug #22469660, Bug #79775)InnoDB: Server method calls in Information Schema interface code were fixed to avoid unnecessary typecasts. (Bug #22391925)
InnoDB: A small
InnoDBbuffer pool size with a largeinnodb_stats_persistent_sample_pagessetting resulted in a Difficult to find free blocks in the buffer pool warning. (Bug #22385442)InnoDB: memcached connections are blocked from accessing tables that contain an indexed virtual column. Accessing an indexed virtual column requires a callback to the server, but a memcached connection does not have access to the server code. (Bug #22384503, Bug #79691)
InnoDB:
InnoDBdid not return an informative message when refusing an onlineALTER TABLEoperation that attempted to add an index and a virtual column. (Bug #22374827)InnoDB: An invalid
innodb_saved_page_number_debugsetting caused a server exit. (Bug #22311319, Bug #79516)InnoDB:
InnoDBfailed to free a table object when a compressed table and temporary compressed table were created in the same shared tablespace. (Bug #22306581)InnoDB: In NUMA-related code, the size information passed to the
mbind()call in thebuf_chunk_init()function was incorrect. (Bug #22293530, Bug #79434)InnoDB: NUMA support was incomplete for online buffer pool resizing operations. (Bug #22293511, Bug #79354)
InnoDB: A
SELECT COUNT(*)query that counted the results of a full-text subquery raised an assertion. (Bug #22270139)InnoDB:
InnoDBpassed a buffer with an incorrectTINYBLOBdata length for a virtual column, resulting in a purge thread failure. (Bug #22256752)InnoDB: A purge failure occurred while deleting data from a table that contained a spatial index. (Bug #22230442, Bug #22366370)
InnoDB: An assertion was raised when purge accessed a freed page while attempting to rebuild virtual column data from the clustered index. (Bug #22204260)
InnoDB: Only prefix bytes were logged for an indexed virtual column, resulting in an a Clustered record for sec rec not found error. (Bug #22202788)
InnoDB: A small buffer pool with an
innodb_page_sizesetting of64Kcould cause startup, bootstrap, and recovery failures. (Bug #22179133, Bug #79201)InnoDB: Unreachable code that checks for 32-bit file offsets was removed. (Bug #22163880, Bug #79150)
InnoDB: A slow shutdown failure was caused by background threads adding undo records to the purge history list during or after purge thread exit. (Bug #22154730)
InnoDB: The
InnoDBpurge thread died attempting to purge a virtual column index record that was not delete-marked. (Bug #22141031)InnoDB: In debug builds, an
ALTER TABLEoperation that increased the column length of a virtual column raised an assertion. (Bug #22139917)InnoDB:
ut_allocatorprepended the allocation payload with a 12-byte header on 32-bit systems, causing unaligned memory access. On 32-bit SPARC systems, the unaligned memory access caused a crash during bootstrap. (Bug #22131684)InnoDB: In debug builds, an
ALTER TABLEoperation that added a new virtual column before an existing virtual column raised an assertion. (Bug #22123674, Bug #22111464)InnoDB:
InnoDBstartup messages related to dumping and loading of the buffer pool were improved. (Bug #22096661, Bug #78960)InnoDB: Support was enabled for
ALGORITHM=INPLACEoperations that add an index on an existing virtual column while dropping another virtual column. Support was also enabled forALGORITHM=INPLACEoperations that add a virtual column and an index. When adding an index on a newly-added virtual column, purge now skips the uncommitted virtual index. (Bug #22082762)InnoDB: The wrong table object was used to compute virtual column values for a query that accessed multiple instances of the same table. (Bug #22070021)
InnoDB: A purge thread failure occurred when inserting and deleting spatial data. The child page number field was not stored during the R-tree search stage. (Bug #22027053)
InnoDB: Starting the server with an empty
innodb_data_home_direntry in the configuration file causedInnoDBto look for the buffer pool file in the root directory, resulting in a startup error. (Bug #22016556, Bug #78831)InnoDB: A failure to compute virtual column values caused an excessive number of error messages. (Bug #21968375)
InnoDB: An
INFORMATION_SCHEMA.INNODB_CMP_PER_INDEXquery raised an assertion. A dictionary mutex was taken whileInnoDBpopulated an in-memory heap table. The mutex was not released beforeInnoDBattempted to convert the in-memory heap table to an optimized internal temporary table. (Bug #21950756, Bug #78714)InnoDB: To avoid a potential hang and redo log overwrite, the
innodb_log_file_sizeminimum value has been increased from 1MB to 4MB, and the length calculation inlog_margin_checkpoint_age()has been revised. (Bug #21924224, Bug #78647)InnoDB: A full-text query run under high concurrency caused a server exit due to an invalid memory access. (Bug #21922532)
InnoDB: An
ALTER TABLEoperation on a table partitioned across multiple tablespaces moved existing partitions to the table's default tablespace, resulting in an assertion onSHOW CREATE TABLE. Likewise,ALTER TABLEmoved existing partitions to the named tablespace. Onlytbl_nameTABLESPACEtablespace_nameALTER TABLE ... REORGANIZE PARTITIONshould move existing partitions to the table's default tablespace or to a named tablespace. RunningALTER TABLEon a table partitioned across multiple tablespaces should only change the table's default tablespace. (Bug #21914047, Bug #22124042, Bug #79030)tbl_nameTABLESPACEtablespace_nameInnoDB: With a large
innodb_sort_buffer_sizesetting, adding an index on an empty table performed more slowly than expected. (Bug #21762319, Bug #78262)InnoDB: A race condition occurred between
fil_names_write()andfile_rename_tablespace_in_mem(). (Bug #21549928)InnoDB: Purge attempted to access undo pages that were freed by a preceding undo log truncate operation, resulting in an assertion. (Bug #21508627)
InnoDB:
InnoDBdid not return an informative message when refusing an onlineALTER TABLEoperation on a table with a spatial index. (Bug #20111575)InnoDB: A compiler barrier was added to
ut_relax_cpu(). Theut_always_falsedummy global variable was removed fromut_delay(). (Bug #20045167, Bug #74832)-
InnoDB: Incorrect index values were returned while dropping a virtual column. The altered table object was used to evaluate virtual column values. (Bug #79773, Bug #22469459)
References: This issue is a regression of: Bug #22082762.
Partitioning: Subquery scans on partitioned tables with virtual columns could leak memory. (Bug #79145, Bug #22162200)
Replication: The behavior of
SET GTID_PURGEDwas not consistent between version 5.6 and 5.7. The fix ensures that version 5.7 does not initiate a transaction forSET GTID_PURGEDstatements. (Bug #21472492)Replication: When DML invokes a trigger or a stored function that inserts into an
AUTO_INCREMENTcolumn, that DML has to be marked as an unsafe statement. If the tables are locked in the transaction prior to the DML statement (for example by usingLOCK TABLES), then the DML statement was not being marked as an unsafe statement. The fix ensures that such DML statements are marked correctly as unsafe. (Bug #17047208)Replication: If
pseudo_slave_modewas set to 1 while an XA transaction was in the prepare stage, an assert was generated. The fix ensures that changes from 0 to 1 can be made during XA transactions. Note that this variable is solely for internal use by the server. (Bug #79416, Bug #22273964, Bug #78695, Bug #21942487)-
Replication: When using GTIDs, a GTID-violating statement generates an error in the following cases:
gtid_modeis eitherONorON_PERMISSIVEandgtid_next=AUTOMATIC
The error prevented the implicit pre-commit, which caused a race condition. This has been fixed by making the error not prevent the implicit pre-commit from happening. This matches the expected behavior for GTID-violating DDL statements to implicitly commit the previous transaction before executing it. (Bug #78543, Bug #21895421)
Replication: When a slave was configured with
log_bin=OFF, the applier (SQL) thread was failing to correctly roll back partial transactions left in the relay log. The fix ensures that on reconnection, the applier thread correctly rolls back a partial transaction and starts applying it again from the next relay log file. (Bug #78211, Bug #21691396)Replication: If the server stopped unexpectedly immediately before committing an XA transaction which had been prepared, and the transaction modified the
mysql.gtid_executedtable, then the subsequent recovery aborted due to aninnodb_lock_wait_timeouterror when it was reading themysql.gtid_executedtable. To fix the problem, XA transactions are no longer permitted to modify themysql.gtid_executedtable. (Bug #77740, Bug #21452916)Replication: As part of the fix for Bug #16290902, when writing a
DROP TEMPORARY TABLE IF EXISTSquery into the binary log, the query is no longer preceded by aUSE `db`statement. Instead the query uses a fully qualified table name, for exampleDROP TEMPORARY TABLE IF EXISTS `db`.`t1`;. This changed the application ofreplicate-rewrite-dbfilter rules, as they work only on the default database specified in aUSEstatement. This caused slaves to fail when the resultingCREATE TEMPORARY TABLEwas applied. The fix ensures that at the time of writing aDROP TEMPORARY TABLE IF EXISTSquery into the binary log, a check is made for the default database. If it exists then the query is written asUSE default_dbin the binary log. If a default database is not present then the query is logged with the qualified table name. (Bug #77417, Bug #21317739)Replication: If generating a GTID for a transaction fails, the transaction is not written to the binary log but still gets committed. Although running out of GTIDs is a rare situation, if it did occur an error was written to the binary log as a sync stage error. With
binlog_error_action=ABORT_SERVER, the server aborts on such an error, avoiding data inconsistency. Whenbinlog_error_action=IGNORE_ERROR, the server continues binary logging after such an error, potentially leading to data inconsistency between the master and the slave. The fix changes the error to be correctly logged as a flush stage error. (Bug #77393, Bug #21276561)Replication: When using
--gtid-mode=ON,--enforce-gtid-consistency, and--binlog-format=row, if a user defined function with multipleDROP TEMPORARY TABLEstatements was executed on a master, the resulting binary log caused an error on slaves. The fix ensures that stored functions and triggers are also considered multi-statement transactions, and that when--enforce-gtid-consistencyis enabled, functions withCREATE TEMPORARY TABLEorDROP TEMPORARY TABLEstatements generate anER_GTID_UNSAFE_CREATE_DROP_TEMPORARY_TABLE_IN_TRANSACTIONerror. (Bug #77354, Bug #21253415)Replication: Stored procedure local variables that were used in an
ALTER EVENTstatement were not being replicated correctly. This was related to the fact thatCALLstatements are not written into the binary log. Instead each statement executed in a stored procedure is binary logged separately, with the exception that the statement string is modified so that uses of stored procedure local variables are replaced withNAME_CONST('spvar_name', 'spvar-value')calls. DDL statements (which are always binary logged in statement binary log mode irrespective of the current binary log format) can also use stored procedure local variables and a clash could cause them to not be replicated correctly. The fix ensures that any stored procedure local variables used in a statement are replaced withNAME_CONST(...), except for the case when it is a DML statement and the binary log format isROW. (Bug #77288, Bug #21229951)-
Replication:
DROP TABLEstatements are regenerated by the server before being written to the binary log. If a table or database name contained a non-regular character, such as non-latin characters, the regenerated statement was using the wrong name, breaking replication. The fix ensures that in such a case the regenerated name is correctly converted back to the original character set. Also during work on this bug, it was discovered that in the rare case that a table or database name contained 64 characters, the server was throwing anassert(M_TBLLEN < 128)assertion. The assertion has been corrected to be less than or equal 128. (Bug #77249, Bug #21205695)References: See also: Bug #78036, Bug #22261585, Bug #21619371.
Replication: Irrespective of the current
binlog_formatsetting, DDL that changes metadata on a master is always identified and written to the binary log inSTATEMENTformat. Such DDL could occur from event based SQL statements, such asCREATE EVENTorDROP EVENT, or transactions that had unsafe functions such assysdate(). Whenbinlog_format=MIXEDand attempting to replicate such DDL, it was not being correctly identified and therefore was not being correctly replicated. (Bug #71859, Bug #19286708)Microsoft Windows: Thread handle resource leakage could occur when creating threads for handling connections on Windows, which could lead to Windows servers eventually running out of handles. (Bug #79714, Bug #22455198)
JSON: Syntax checks were not always performed when an
ALTER TABLEstatement changed a column's type fromTEXTtoJSON. This could lead toJSONcolumns containing invalid JSON data. This issue was observed when the originalTEXTcolumn used theutf8mb4_bincollation. (Bug #79432, Bug #22278524)The System-V initialization script for RHEL6 or older failed to enable the
mysqldservice by default. (Bug #22600974)Some activations of triggers that referenced a
NEWvalue inside a query might cause a server exit. (Bug #22377554)Parsing the output of
ST_GeometryType()as aDATETIMEvalue with a default character set ofutf32caused a server exit. (Bug #22340858)For a character set loaded from an XML file, the server could fail to properly initialize its state map, leading to a server exit. (Bug #22338946)
Inserting a token of 84 4-byte characters into a full-text index raised an assertion. The maximum token length was 84 characters up to a maximum of 252 bytes, which did not account for 4-byte characters. The maximum byte length is now 336 bytes. (Bug #22291765, Bug #79475)
For some combination of consumers, the Performance Schema prepared statement instrumentation could cause a server exit. (Bug #22291560)
If a client attempted to use an unsupported client character set (
ucs2,utf16,utf32), the error message reported to the client differed for SSL and non-SSL connections. (Bug #22216715)Data corruption or a server exit could occur if a stored procedure had a variable declared as
TEXTorBLOBand data was copied to that variable using SELECT ... INTO syntax from aTEXTorBLOBcolumn. (Bug #22203532, Bug #22232332, Bug #21941152)For debug builds, with the
ONLY_FULL_GROUP_BYSQL mode disabled, the optimizer could attempt to sort on outer references, causing an assertion to be raised. (Bug #22200984)Different handling of
YEARvalues forINSERTandSELECTcould raise an assertion when such values were used in a generated-column expression. (Bug #22195458)For debug builds, for queries involving
MIN()orMAX()on an indexed column and a reference to an unindexed datetime column, the optimizer could attempt to access unread values, causing an assertion to be raised. (Bug #22186926)Geohash decoding (for example, for
ST_LongFromGeoHash(),ST_LatFromGeoHash(), andST_PointFromGeoHash()) could yield incorrect results due to the rounding algorithm being too aggressive. (Bug #22165582)In debug builds, with
READ UNCOMMITTEDtransaction isolation level, aSELECTreading a generated column using an index could raise an assertion. (Bug #22133710)For generated columns, the optimizer could fail to establish the proper table reference, resulting in a server exit. (Bug #22132822)
For some combination of consumers, the Performance Schema file instrumentation could fail due to an attempt to use a
NULLpointer while instrumenting temporary file I/O. (Bug #22130453)The Performance Schema could raise an assertion based on the (incorrect) assumption that instrumenting a temporary file open operation always resulted in an instrumented file. (Bug #22118669)
An
ALTER TABLEstatement that added an index on a virtual generated column using theINPLACEalgorithm did not properly report warnings (or errors in strict SQL mode) for problems with virtual column values. Any subsequentALTER TABLEon the same table using theCOPYalgorithm produced such warnings (or failures in strict SQL mode) due to evaluating the problematic value, but left the connection in a state that made furtherINPLACEalterations on the table fail for the same reason. (Bug #22095783)If the left expression of an
INexpression was a row subquery that accesses no tables, an assertion could be raised (in debug builds), or incorrect results could be returned (in release builds). (Bug #22089623)Expressions that match an indexed generated column may be replaced with the generated column by the optimizer to enable use of the associated index. However, this optimization was not performed for single-table update and delete statements. The optimizer now extends this replacement optimization to such statements. (Bug #22077611)
ANSISQL mode could cause inconsistencies in processing of generated column expressions. (Bug #22018979)Removal of server session plugins was faulty and could cause a server exit. (Bug #21983102)
For some queries, if the optimizer used Disk-Sweep Multi-Range Read optimization on generated columns, the server could exit. (Bug #21980430)
-
mysqlpump tries to do as much work in parallel as possible, but the dump threads lacked a synchronization point before backing up the data, resulting in inconsistent backup. mysqlpump now locks the server and flushes all the tables using
FLUSH TABLES WITH READ LOCKto ensure that any further connections view the same state of all the databases.This change lifts the restriction aginst the
--single-transactionoption being mutually exclusive with parallelism. When using--single-transaction, it is no longer necessary to disable parallelism by setting--default-parallelismto 0 and not using any instances of--parallel-schemas. (Bug #21980284) A fault in
pthread_rwlock_unlock()wherein it decremented the lock counter even for already unlocked objects could result in deadlock. (Bug #21966621)The Performance Schema could acquire a double lock on session system variables, causing a server hang or (in debug builds) an assertion to be raised. (Bug #21935106)
Certain queries containing
WHERE 0of the following form could cause a server exit due to uninitialized reads:SELECT (SELECT. (Bug #21922202)colANDconstantFROM t WHERE 0) IN (SELECTconstantFROM t1)CREATE TEMPORARY TABLE .. SELECTstatements involvingBITcolumns that resulted in a column type redefinition could cause a server exit or an improperly created table. (Bug #21902059)For
UPDATEoperations onInnoDBtables, there could be a mismatch between the value of a virtual generated column in the index and the value in the “before” buffer, resulting in a server exit. (Bug #21875520)With
character_set_server=utf16le, some values offt_boolean_syntaxcould cause a server exit for full-text searches. (Bug #21631855)With
gtid_mode=ON, concurrent execution ofSHOW TABLE STATUSandREVOKE ALL PRIVILEGEScould lead to deadlock in there was a view in the database andREVOKE ALL PRIVILEGESfailed for some but not all of the named users. (Bug #21463167)mysqlpump could exit due to incorrect synchronization of view-handling threads during dump processing. (Bug #21399236, Bug #21447753)
With
LOCK TABLESin force, an attempt to open a temporaryMERGEtable consisting of a view in its list of tables (not the last table in the list) caused a server exit. (Bug #20691429)For certain prepared statements, the optimizer could transform join conditions such that it used a pointer to a temporary table field that was no longer available after the initial execution. Subsequent executions caused a server exit. (Bug #19941403)
-
Repeated execution of
ALTER TABLE v1 CHECK PARTITIONas a prepared statement, wherev1is a view, led to a server exit.In addition, output for some administrative operations, when they are attempted on a view, changes from “Corrupt” to “Operation failed”. These include
ANALYZE TABLE,OPTIMIZE TABLE, andREPAIR TABLE, andALTER TABLEstatements that performANALYZE PARTITION,CHECK PARTITION,OPTIMIZE PARTITION, andREPAIR PARTITIONoperations. (Bug #19817021) Valgrind detected some possibly unsafe use of string functions in code used for asymmetric encryption. (Bug #19688135)
An out-of-memory failure in join buffer allocation could lead to incorrect results for multiple-table queries. (Bug #19031409)
SSL connections ignored any change made by passing the
MYSQL_OPT_READ_TIMEOUToption to themysql_options()C API function. (Bug #17618162)For
ALTER TABLEstatements, the parser did not support theALGORITHMclause for some operations involving tablespaces or partitions. (Bug #17400320)Debian packages create the
rootuser account using theauth_socketauthentication plugin to achieve secure-by-default installation if installation was done with a blankrootpassword. However,auth_socketwas being used even if the password was not blank. (Bug #80137, Bug #22594846, Bug #23321113, Bug #81518)Solaris packages failed to note the dependency of the MySQL client library on the
libstlportlibrary. (Bug #79778, Bug #22504264)Using systemd to start mysqld failed if configuration files contained multiple
datadirlines. Now the lastdatadirline is used. (Bug #79613, Bug #22361702)A derived table contained in the
SETclause of anUPDATEstatement should be materialized to avoid an error about updating a table that is also read in the same statement. Materialization did not occur for some statements, leading to that error. (Bug #79590, Bug #22343301)-
MySQL 5.7.8 prohibited references to select list columns of the outer query from the
HAVINGclause of a correlated subquery in the inner query because they are not permitted by standard SQL. However, because this is a frequently used extension, it is once again permitted. (Bug #79549, Bug #22328395)References: This issue is a regression of: Bug #19823076.
Installing just shared libraries, clients, and development support files failed to install everything needed to build client applications because the
binary_log_types.hheader file was not installed. (Bug #79531, Bug #22321338)-
SHOW CREATE TRIGGERcould fail to display all applicable SQL modes. (Bug #79526, Bug #22313133)References: This issue is a regression of: Bug #18311187.
On SELinux, mysqld --initialize with an
init_filesystem variable could fail to initialize the data directory. (Bug #79442, Bug #22314098, Bug #79458, Bug #22286481)Hexadecimal and bit literals written to saved view definitions could be truncated. This could also affect extended
EXPLAINoutput. (Bug #79398, Bug #22268110)ST_Buffer()returned an error for geometries with an SRID different from 0. Nonzero SRID values now are permitted but ignored (calculations are still done using Cartesian coordinates). (Bug #79394, Bug #22306745)A regression caused failure of the workaround at Restrictions on Subqueries for avoiding
ER_UPDATE_TABLE_USEDerrors when referencing the same table in a subquery as was used as target for anUPDATEorDELETEstatement. (Bug #79333, Bug #22239474)Statements causing multiple parse errors could cause an assertion to be raised. (Bug #79303, Bug #22222013)
Some queries with derived tables perform better with materialization than when merged into the outer query. The optimizer no longer uses merging by default for derived tables containing dependent subqueries in the select list. (Bug #79294, Bug #22223202)
ALTER USERandSET PASSWORDdid not work at server startup when invoked in the file named using theinit_filesystem variable. (Bug #79277, Bug #22205360)When not in strict SQL mode, attempts to implicitly insert
NULLinto aNOT NULLcolumn resulted in different behavior depending on whether the table had a trigger. (Bug #79266, Bug #22202665)Some replication-only code was not protected with
#ifdefand failed to compile with theWITH_UBSANCMake option enabled. (Bug #79236, Bug #22190632)Configuring MySQL with the
-DWITH_UBSAN=ONCMake option resulted in spurious runtime warnings from comp_err. These are now suppressed. Also, a CMake warning was added that undefined behavior address sanitizer support is currently experimental. (Bug #79230, Bug #22190656)INSERT INTO ... SELECTstatements could insert values other thanDEFAULTinto generated columns. (Bug #79204, Bug #22179637)-
With the
derived_mergeflag of theoptimizer_switchsystem variable enabled, queries that used a derived table on the inner side of an outer join could return incorrect results. (Bug #79194, Bug #22176604)References: See also: Bug #80526, Bug #22833364.
Memory leaks in
libmysqldwere corrected. (Bug #79187, Bug #22174219)FOUND_ROWS()could return a negative value if the preceding query was aUNIONinvolvingSQL_CALC_FOUND_ROWSandLIMIT ... OFFSET. (Bug #79131, Bug #22155786)-
IN-to-EXISTSsubquery transformation could causeSELECT NULL IN (to return 0 rather thansubquery)NULL.IN-to-EXISTSsubquery transformation could yield incorrect results for queries for which the table was nonempty, the subquery on the left side of theINpredicate produced an empty result, and semijoin optimization was disabled. (Bug #78946, Bug #22090717, Bug #74403, Bug #19822406) The result from
WEIGHT_STRING()could be incorrect when used in a view. (Bug #78783, Bug #21974321)For connections made using a Unix socket file, specifying the
--ssl-caoption caused the connection to fail. (Bug #78509, Bug #21878661)If server was started with
--thread-handling=no-threads, no foreground thread was created for a client connection. The Performance Schema did not account for the possibility of no foreground threads for queries on thesession_connect_attrstable, causing an assertion to be raised. (Bug #78292, Bug #21765843)mysqlpump generated incorrect
INSERTstatements for tables that had generated columns. (Bug #78082, Bug #21650559)ALTER TABLE ... CONVERT TO CHARACTER SEToperations that used theINPLACEalgorithm were ineffective if the table contained only numeric data types. Also, such operations failed to clean up their temporary.frmfile. (Bug #77554, Bug #21345391)Heavy
SHOW PROCESSLISTorSELECT ... FROM INFORMATION_SCHEMA.PROCESSLISTactivity could result in the server accepting more thanmax_connectionsconnections. (Bug #75155, Bug #20201006)When used with the
libmysqldembedded server, themysql_stmt_execute()C API function failed with amalformed communication packeterror, even for simple prepared statements. (Bug #70664, Bug #17883203)Queries using
SUM(DISTINCT)could produce incorrect results when there were many distinct values. (Bug #56927, Bug #11764126, Bug #79648, Bug #22370382)