The MySQL Development team announced the General Availability of MySQL 8.0 on April 19th, 2018. Here we follow up with references to worklogs that were added in 8.0.11. Note the jump in version number from 8.0.4 (RC2) to 8.0.11 (GA) explained here. Worklogs delivered in Development Milestone Releases and Release Candidates are found in 8.0.0, 8.0.1, 8.0.2, 8.0.3, and 8.0.4 blog posts. Please download 8.0.11 from dev.mysql.com or from the MySQL Yum, APT, or SUSE repositories. The source code is available at GitHub. You can find the full list of changes and bug fixes in the 8.0.11 Release Notes. Here are the highlights. Enjoy!
Document Store
DevAPI: Support locking modes: NOWAIT and SKIP LOCKED (WL#11417) This work by Tomasz Stepniak adds the capability to skip locked documents in a collection (rows in innodb table) and to fail the query when locked documents access to a row would result in a lock. The X Protocol is extended so that a Client application can check whether “skip locked” and “nowait” options are supported.
X Protocol installed by default (WL#11040) This work by Grzegorz Szwarc ensures that the X Protocol is installed and enabled by default.
Change type of “_id” column in COLLECTION (WL#10955) This work by Grzegorz Szwarc ensures monotonically increasing document-ids across all clients. The “_id” column has datatype VARBINARY(32), is generated by default at the server side, using a custom DocID generator. The format is composed of a unique_prefix (4 bytes), start_timestamp (8 bytes), and serial (16 bytes). See WL#10955 for more details.
InnoDB Redo Log
Redo log optimization: dedicated threads and concurrent log buffer (WL#10310) This work by Pawel Olchawa optimizes the InnoDB redo log by eliminating contention on the log_sys/write mutexes. The user threads are now able to write concurrently to the log buffer. They do not need to synchronize with each other while writing. The user threads are able to add dirty pages to the flush list without requiring any synchronization in order to achieve total order by LSN. The system variable innodb_log_buffer_size has become dynamically settable. Three new tuning variables have been added: innodb_log_wait_for_flush_spin_hwm, innodb_log_spin_cpu_abs_lwm, and innodb_log_spin_cpu_pct_hwm.
Error Log
Add “component” to error log messages by default (WL#11150) This work by Tatjana Nurnberg adds information about which sub-system (component) generated the event, i.e. [Server], [InnoDB], or [Replication]. This information is written to the error log after the error number and before the error text.
Replication
Log Position Lock (WL#9452) This work by Joao Gramacho implements a mechanism to block the server for a very short window of time, e.g. during a backup. Locking is limited to the time it takes to gather consistent meta-data. This eliminates the need to run an expensive FLUSH TABLES WITH READ LOCK operation for transactional storage engines (InnoDB).
Security
Make sure MySQL compiles and runs with the OpenSSL FIPS Object Module (WL#8102) This work by Yashwant Sahu ensures that the server will work with the OpenSSL library, using only FIPS 140-2 compliant algorithms. A new global variable called ssl_fips_mode has been added. When ssl_fips_mode is ON, MySQL will restrict usage of cryptography algorithms to FIPS 140-2 compliant versions. The exact behavior of FIPS mode ON/STRICT depends on the OpenSSL version used. See FIPS Support in the MySQL documentation and the OpenSSL FIPS user guide for more details.
Migrate away from yaSSL (WL#8998) This work by Georgi Kodinov removes yaSSL and provides support for building against wolfSSL, while keeping the OpenSSL support intact. I.e. this work enables the user to build MySQL using wolfSSL instead of OpenSSL.
Parser
Create an internal API for the MySQL parser to enumerate reserved and non-reserved words (WL#8989) This work by Gleb Shchepa ensures that MySQL keywords are made explicit and accessible. The work makes the keywords accessible at runtime through INFORMATION_SCHEMA.keywords and at buildtime by creating the file keyword_list.h.
GeomCollection synonym for GeometryCollection (WL#2388) This work by Norvald Ryeng adds the OGC SFA and SQL/MM compliant name GEOMCOLLECTION. The standard compliant name, GEOMCOLLECTION, will be the default, and the non-standard legacy GEOMETRYCOLLECTION will be an alias accepted in user input. INFORMATION_SCHEMA, SHOW CREATE TABLE etc. will use GEOMCOLLECTION.
Parser: output deprecation warnings on utf8 references, where utf8mb3 is an alias of utf8 (WL#10778) This work by Martin Hansson implements warnings for users when UTF8 is used as an alias for UTF8MB3 (allowed both in 5.7 and 8.0). In the future we expect MySQL to only support UTF8MB4, and UTF8 to become an alias for UTF8MB4. For now we recommend that users do not use the UTF8 alias because of this ambiguity.
Added Tests
Migrate main suite to run with InnoDB (part 16) (WL#11471) This work by Shiva Shankar migrates the last few tests in the main testsuite still requiring MyISAM over to using InnoDB.
Add/Extend MTR tests for Replication/GR variables with set persist (WL#10885) This work by Narendra Chauhan adds MTR tests to verify that SET/RESET PERSIST works properly for replication variables.
Removals
Remove old_passwords, PASSWORD(), other deprecated auth features (WL#10774) This work by Harin Vadodaria removes some functionality related to old_passwords deprecated in 5.7, and now removed in 8.0. The removals include the syntax “IDENTIFIED BY PASSWORD ‘hash_string'”, the PASSWORD() function, the possibility to use GRANT to create new users,
the possibility to use GRANT to change user credentials/ssl_options/connection attributes for users, the SQL MODE NO_AUTO_CREATE_USER, and the old_passwords variable.
Remove the MAXDB sql_mode (WL#9465) This work by Gleb Shchepa removes the historical MAXDB sql_mode, no longer in use.
Remove compatibility SQL modes (WL#8383) This work by Steinar Gunderson removes the sql_mode flags: DB2, MSSQL, MYSQL323, MYSQL40, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, ORACLE, and POSTGRESQL. These modes have not been maintained and it is better to remove them to simplify the code base.
That’s it for now. Thank you for using MySQL!