MySQL Community Server 8.0.1-dmr has been released (part 1/3)
Posted by: Bjørn Munch
Date: April 11, 2017 01:39AM
Date: April 11, 2017 01:39AM
Dear MySQL users,
MySQL Server 8.0.1-dmr (Milestone Release) is a new version of the world's
most popular open source database. This is the second public milestone
release of MySQL 8.0.
[Due to file size limitations, the announcement is split in 3
parts. This is part 1.]
http://dev.mysql.com/doc/mysql-development-cycle/en/development-milestone-releases.html
As with any other pre-production release, caution should be taken when
installing on production level systems or systems with critical data.
For information on installing MySQL 8.0.1-dmr on new servers, please see
the MySQL installation documentation at
http://dev.mysql.com/doc/refman/8.0/en/installing.html
MySQL Server 8.0.1-dmr is available in source and binary form for a number of
platforms from the "Development Releases" selection of our download
pages at
http://dev.mysql.com/downloads/mysql/
MySQL Server 8.0.1-dmr is also available from our repository for Linux
platforms, go here for details:
http://dev.mysql.com/downloads/repo/
Windows packages are available via the Installer for Windows:
http://dev.mysql.com/downloads/installer/
along with .ZIP (no-install) packages for more advanced needs.
8.0.1-dmr also comes with a web installer as an alternative to the full
installer.
The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.
We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:
http://bugs.mysql.com/report.php
The following section lists the changes in MySQL 8.0.1-dmr since 8.0.
http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-1.html
Enjoy!
MySQL Server 8.0.1-dmr (Milestone Release) is a new version of the world's
most popular open source database. This is the second public milestone
release of MySQL 8.0.
[Due to file size limitations, the announcement is split in 3
parts. This is part 1.]
http://dev.mysql.com/doc/mysql-development-cycle/en/development-milestone-releases.html
As with any other pre-production release, caution should be taken when
installing on production level systems or systems with critical data.
For information on installing MySQL 8.0.1-dmr on new servers, please see
the MySQL installation documentation at
http://dev.mysql.com/doc/refman/8.0/en/installing.html
MySQL Server 8.0.1-dmr is available in source and binary form for a number of
platforms from the "Development Releases" selection of our download
pages at
http://dev.mysql.com/downloads/mysql/
MySQL Server 8.0.1-dmr is also available from our repository for Linux
platforms, go here for details:
http://dev.mysql.com/downloads/repo/
Windows packages are available via the Installer for Windows:
http://dev.mysql.com/downloads/installer/
along with .ZIP (no-install) packages for more advanced needs.
8.0.1-dmr also comes with a web installer as an alternative to the full
installer.
The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.
We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:
http://bugs.mysql.com/report.php
The following section lists the changes in MySQL 8.0.1-dmr since 8.0.
http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-1.html
Enjoy!
Changes in MySQL 8.0.1 (2017-04-10, Development Milestone) Note This is a milestone release, for use at your own risk. 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. Note This release makes several important changes in Unicode character set support. In particular, the default character set has changed from latin1 to utf8mb4. C API Notes * The C API implemented by libmysqlclient now 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 (http://dev.mysql.com/doc/refman/8.0/en/c-api-binary-log-interface.html) Character Set Support * Important Change: The default character set has changed from latin1 to utf8mb4. These system variables are affected: + The default value of the character_set_server and character_set_database system variables has changed from latin1 to utf8mb4. + The default value of the collation_server and collation_database system variables has changed from latin1_swedish_ci to utf8mb4_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.cnf file: [mysqld] character_set_server=latin1 collation_server=latin1_swedish_ci * 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. (Bug #24823885, Bug #83319) * The default collation for the utf8mb4 character set has changed from utf8mb4_general_ci to utf8mb4_0900_ai_ci; utf8mb4_general_ci does 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 SPACE to NO PAD. Consequently, these collations now treat spaces at the end of strings like any other character. The affected collations have names that contain the string _0900_. Comparisons of VARCHAR columns that have a 9.0.0 collation differ from other collations 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 | +------------+ The INFORMATION_SCHEMA COLLATIONS table now has a PAD_ATTRIBUTE column that indicates the pad attribute for each collation. A problem with the latin1_de collation involving early weight string truncation has been corrected. The only likely effect is for WEIGHT_STRING() function results. * Complementing earlier work in MySQL 8.0.0 to add case-insensitive and accent-insensitive collations for the utf8mb4 Unicode character set, new case-sensitive and accent-sensitive collations have been added. The general collation is named utf8mb4_0900_as_cs, and there are language-specific collations with characteristics similar to utf8mb4_0900_as_cs except 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). Note utf8mb4_ja_0900_as_cs is the first Japanese language-specific collation available for Unicode in MySQL. Table 1 utf8mb4 UCA 9.0.0 Language-Specific Collations Language Collation Croatian utf8mb4_hr_0900_as_cs Czech utf8mb4_cs_0900_as_cs Danish utf8mb4_da_0900_as_cs Esperanto utf8mb4_eo_0900_as_cs Estonian utf8mb4_et_0900_as_cs German phone book order utf8mb4_de_pb_0900_as_cs Hungarian utf8mb4_hu_0900_as_cs Icelandic utf8mb4_is_0900_as_cs Japanese utf8mb4_ja_0900_as_cs Latvian utf8mb4_lv_0900_as_cs Lithuanian utf8mb4_lt_0900_as_cs Polish utf8mb4_pl_0900_as_cs Classical Latin utf8mb4_la_0900_as_cs Romanian utf8mb4_ro_0900_as_cs Slovak utf8mb4_sk_0900_as_cs Slovenian utf8mb4_sl_0900_as_cs Modern Spanish utf8mb4_es_0900_as_cs Traditional Spanish utf8mb4_es_trad_0900_as_cs Swedish utf8mb4_sv_0900_as_cs Turkish utf8mb4_tr_0900_as_cs Vietnamese utf8mb4_vi_0900_as_cs utf8mb4_0900_as_cs also works as an accent-sensitive, case-sensitive collation for the languages in the following table. Table 2 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_cs is suitable for French French (locale fr_FR) but not for Canadian French (locale fr_CA). For Canadian French, utf8mb4_0900_ai_ci is suitable. The reason for the difference between ai_ci and as_cs collations is that Canadian French has a different order of accented characters than French French. utf8mb4_da_0900_as_cs also works as an accent-sensitive, case-sensitive collation for the languages in the following table. Table 3 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_cs and language-specific utf8mb4_LANG_0900_as_cs Unicode collations each have these characteristics: + The 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 _cs in the collation name. Exception: utf8mb4_la_0900_as_cs is 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. Compilation Notes * Incompatible Change: The mysql.h header file now requires a C++ or C99 compiler to compile. The my_bool type is no longer used in MySQL source code. Any third-party code that used this type to represent C boolean variables should use the bool or int C type instead. (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 /MD flag). (Bug #25611609) * CMake support 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) * The required version of the Boost library for server builds has been raised to 1.63.0. (Bug #24579061, Bug #82834, Bug #25126144, Bug #83905) * For GCC versions higher than 4.4, -fno-expensive-optimizations was 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. Configuration Notes * In source distributions, several utilities previously in the extra directory have been moved to the new utilities directory. (Bug #25416084) * Two new CMake options are available for debugging. LINK_RANDOMIZE indicates whether to randomize the order of symbols in the mysqld binary (default OFF), and LINK_RANDOMIZE_SEED specifies a seed value for LINK_RANDOMIZE. (Bug #25336715) * MySQL failed to compile if -DENABLE_DEBUG_SYNC=OFF AND -DWITH_DEBUG=ON were both given. The ENABLE_DEBUG_SYNC option has been removed and enabling WITH_DEBUG enables 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 with SET PERSIST to the mysqld-auto.cnf file that stores persisted global system variable settings. + Using SET PERSIST (or @@persist.) to set a global variable to DEFAULT or to the variable literal default value previously also added a setting for the variable to the mysqld-auto.cnf file if was is not present, or removed it from mysqld-auto.cnf if it was present. Now the assignment always adds a setting for the variable to the mysqld-auto.cnf file; to remove the setting from the file, use RESET PERSIST. + A new Performance Schema table, persisted_variables, provides an SQL interface to the mysqld-auto.cnf file, enabling the file contents to be inspected at runtime using SELECT statements. + The Performance Schema variables_info table has new columns showing when and by which user each system variable was most recently set. For more information, see Using System Variables (http://dev.mysql.com/doc/refman/8.0/en/using-system-variables.html), and RESET PERSIST Syntax (http://dev.mysql.com/doc/refman/8.0/en/reset-persist.html). 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. References: See also: Bug #24522064. * The default value of the query_cache_size system variable has been reduced from 1M to 0. Consequently no query cache buffer is allocated by default. * The --temp-pool server option has been removed. Data Dictionary Notes * These INFORMATION_SCHEMA tables have been reimplemented as views on data dictionary tables: EVENTS PARAMETERS ROUTINES TRIGGERS Queries 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_SCHEMA table. Improvements for those tables also apply to SHOW statements that display information corresponding to the INFORMATION_SCHEMA tables. For example, SHOW TRIGGERS displays the same information as the TRIGGERS table. If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these changes. DTrace Support * Support for DTrace has been removed. Installation Notes * 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 * The minimum required version of Solaris is now Solaris 11 update 3, due to a dependency on system runtime libraries. Optimizer Notes * InnoDB: MySQL now supports descending indexes: DESC in 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 (http://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html). Note Previously, relying on implicit GROUP BY sorting was deprecated but GROUP BY did sort. GROUP BY no longer sorts by default, so query results may differ from previous MySQL versions. To produce a given sort order, use explicit ASC or DESC designators for GROUP BY columns or provide an ORDER BY clause. * Optimizer trace output now includes more information about filesort operations, 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 InnoDB storage engine. Invisible indexes are now storage engine neutral (supported for any engine). (Bug #23541244) * A GROUPING() function has been introduced for use in GROUP BY queries that include a WITH ROLLUP modifier. This function enables you to distinguish NULL values for super-aggregate rows in the query result from NULL values in regular grouped rows. For more information, see Miscellaneous Functions (http://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html), and GROUP BY Modifiers (http://dev.mysql.com/doc/refman/8.0/en/group-by-modifiers.html). Thanks to Zhe Dong for a patch that was partially used to implement this feature. Note GROUPING is now a reserved word and cannot be used as an identifier without identifier quoting. (Bug #11754449, Bug #46053) * The optimizer now supports INDEX_MERGE and NO_INDEX_MERGE hints 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 (http://dev.mysql.com/doc/refman/8.0/en/index-merge-optimization.html), and Optimizer Hints (http://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html). * The server_cost and engine_cost optimizer cost model tables in the mysql system database now include a default_value column 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 (http://dev.mysql.com/doc/refman/8.0/en/cost-model.html). 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 mysql system database. * In the optimizer cost model engine_cost table, 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. * MySQL now supports common table expressions, both nonrecursive and recursive. Common table expressions enable use of named temporary result sets, implemented by permitting a WITH clause preceding SELECT statements and certain other statements. For more information, see WITH Syntax (Common Table Expressions) (http://dev.mysql.com/doc/refman/8.0/en/with.html). Note RECURSIVE is now a reserved word and cannot be used as an identifier without identifier quoting. * The optimizer now supports hints that enable specifying the order in which to join tables. For more information, see Optimizer Hints (http://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html). Packaging Notes * 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) * scripts/mysql_security_commands.sql and support-files/mysql.server-sys5.sh are no longer used and have been removed from MySQL distributions. (Bug #24756400, Bug #24756442) * RPM packages now are built with -DWITH_NUMA=ON for platforms with NUMA support: OEL higher than EL5, Fedora, SLES, Docker. (Bug #24689078) * The my-default.cnf.sh file (used to produce a default my-default.cnf or my-default.ini file) is no longer included in source distributions and my-default.cnf and my-default.ini are 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) * 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 (http://www.microsoft.com/en-us/download/default.aspx). Parser Notes * The deprecated PROCEDURE ANALYSE() syntax has been removed. * The parser no longer considers \N as a synonym for NULL in SQL statements. Use NULL instead. This change does not affect text file import or export operations performed with LOAD DATA INFILE or SELECT ... INTO OUTFILE, for which NULL continues to be represented by \N. See LOAD DATA INFILE Syntax (http://dev.mysql.com/doc/refman/8.0/en/load-data.html). Performance Schema Notes * 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 value + events_statements_histogram_global: Statement histogram summarized globally For more information, see Statement Histogram Summary Tables (http://dev.mysql.com/doc/refman/8.0/en/statement-histogram-summary-tables.html). In addition, the events_statements_summary_by_digest table now has columns that provide percentile information about statement latencies. For more information, see Statement Summary Tables (http://dev.mysql.com/doc/refman/8.0/en/statement-summary-tables.html). 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. * 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 (http://dev.mysql.com/doc/refman/8.0/en/performance-schema-system-variable-tables.html), and Performance Schema Status Variable Tables (http://dev.mysql.com/doc/refman/8.0/en/performance-schema-status-variable-tables.html). In addition, the show_compatibility_56 system variable has been removed. It was used in the transition period during which system and status variable information in INFORMATION_SCHEMA tables 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 (http://dev.mysql.com/doc/refman/5.7/en/performance-schema-variable-table-migration.html). * The deprecated INFORMATION_SCHEMA INNODB_LOCKS and INNODB_LOCK_WAITS tables have been removed. To obtain InnoDB data lock information, use the Performance Schema data_locks and data_lock_waits tables instead. Alternatively, use the sys schema innodb_lock_waits and x$innodb_lock_waits views, which have been reimplemented to use the new Performance Schema tables rather than the removed INFORMATION_SCHEMA tables. 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, the data_locks table reports all data locks, in contrast to the INNODB_LOCKS table, which reported only waited-for data locks, For more information, see The data_locks Table (http://dev.mysql.com/doc/refman/8.0/en/data-locks-table.html), and The data_lock_waits Table (http://dev.mysql.com/doc/refman/8.0/en/data-lock-waits-table.html). For information about mapping old table columns to new table columns, see The INFORMATION_SCHEMA INNODB_LOCKS Table (http://dev.mysql.com/doc/refman/8.0/en/innodb-locks-table.html), and The INFORMATION_SCHEMA INNODB_LOCK_WAITS Table (http://dev.mysql.com/doc/refman/8.0/en/innodb-lock-waits-table.html). The tables differ in the privileges required: The INFORMATION_SCHEMA tables require the global PROCESS privilege. The Performance Schema tables require the usual Performance Schema privilege of SELECT on the table to be selected from. The sys schema innodb_lock_waits and x$innodb_lock_waits views can be used without change, with the exception that the locked_table column containing combined schema/table name values has been removed and replaced with locked_table_schema and locked_table_name columns that contain separate schema and table name values. In addition, these views now contain locked_table_partition and locked_table_subpartition columns. For more information, see The innodb_lock_waits and x$innodb_lock_waits Views (http://dev.mysql.com/doc/refman/8.0/en/sys-innodb-lock-waits.html), 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 sys schema. Plugin Service Notes * MySQL Server 8.0 includes a component-based infrastructure for improving server extensibility; see MySQL Server Components (http://dev.mysql.com/doc/refman/8.0/en/server-components.html). 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. Security Notes * Incompatible Change: For STANDALONE and WIN builds, the default secure_file_priv value has changed from the empty string to NULL. This is a secure-by-default setting because it disables import and export operations. To permit those operations, set secure_file_priv to the path name of the directory to use for those operations. (Bug #24679907, Bug #24695274, Bug #24707666) * 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 --ledir option 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 --basedir explicitly. + Initialization scripts create the error log file only if the base directory is /var/log or /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. * Incompatible Change: Server 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 SUPER privilege. In the past, SUPER has been associated with a wide and growing variety of operations, not all related to each other. Many operations covered by SUPER now are also associated with a dynamic privilege of more limited scope, and that privilege is registered by the server component or plugin that implements the operation. Each such operation that previously required the SUPER privilege can be permitted to an account by granting the associated dynamic privilege rather than SUPER. For example, a user who must be able to modify global system variables can be granted SYSTEM_VARIABLES_ADMIN rather than SUPER. This change improves security by enabling DBAs to avoid granting SUPER and tailor user privileges more closely to the operations permitted. SUPER is now deprecated and will be removed in a future version of MySQL. 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 the mysql system database. For more information, see Static Versus Dynamic Privileges (http://dev.mysql.com/doc/refman/8.0/en/static-dynamic-privileges.html). That discussion includes instructions for migrating accounts away from SUPER to dynamic privileges. Incompatibility: SHOW GRANTS no longer displays ALL PRIVILEGES in its global-privileges output because the meaning of ALL PRIVILEGES at the global level varies depending on which dynamic privileges are defined. Instead, SHOW GRANTS explictly lists each granted global privilege. For details, see SHOW GRANTS Syntax (http://dev.mysql.com/doc/refman/8.0/en/show-grants.html) . Applications that process SHOW GRANTS output 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 mysql system database. * 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) * 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 The Connection-Control Plugin (http://dev.mysql.com/doc/refman/8.0/en/connection-control-plugin.html). * 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. Spatial Data Support * Incompatible Change: Previously, ST_Distance() supported only Cartesian spatial reference systems (SRSs). ST_Distance() now detects geometry arguments in a geographic (ellipsoidal) SRS and returns the geodetic distance on the ellipsoid in meters. The only permitted geographic argument types are Point and Point, or Point and MultiPoint (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 (http://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html). Note If spatial data contains SRID values that refer to a geographic spatial reference system, existing queries will return different results, compared to previous MySQL versions. * Incompatible Change: These functions previously accepted either WKB strings or geometry arguments. Geometry arguments are no longer permitted and produce an error. + ST_GeomCollFromWKB(), ST_GeometryCollectionFromWKB() + ST_GeomFromWKB(), ST_GeometryFromWKB() + ST_LineFromWKB(), ST_LinestringFromWKB() + ST_MLineFromWKB(), ST_MultiLinestringFromWKB() + ST_MPointFromWKB(), ST_MultiPointFromWKB() + ST_MPolyFromWKB(), ST_MultiPolygonFromWKB() + ST_PointFromWKB() + ST_PolyFromWKB(), ST_PolygonFromWKB() 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 (http://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html). * 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. + ST_AsBinary(), ST_AsWKB() + ST_AsText(), ST_AsWKT() For more information, see Geometry Format Conversion Functions (http://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html). Note If spatial data contains SRID values that refer to a geographic spatial reference system, existing queries will return different results, compared to previous MySQL versions. * MySQL now stores information about spatial reference systems other than SRID 0, for use with spatial data. This information is stored in the st_spatial_reference_systems data dictionary table and is based on EPSG Dataset 9.0. The table contents are exposed through the INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS table, which is implemented as a view on the data dictionary For more information, see The INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS Table (http://dev.mysql.com/doc/refman/8.0/en/st-spatial-reference-systems-table.html). MySQL now has an INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS table that provides information about table columns that store spatial data. The new table is implemented as a view on the existing INFORMATION_SCHEMA COLUMNS table. For more information, see The INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS Table (http://dev.mysql.com/doc/refman/8.0/en/st-geometry-columns-table.html). If you upgrade to this MySQL release from an earlier version, you must run mysql_upgrade (and restart the server) to incorporate these INFORMATION_SCHEMA changes. (Bug #25337054, Bug #84384) * 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 (http://dev.mysql.com/doc/refman/8.0/en/gis-format-conversion-functions.html). * 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. + ST_GeomCollFromText(), ST_GeometryCollectionFromText(), ST_GeomCollFromTxt() + ST_GeomFromText(), ST_GeometryFromText() + ST_LineFromText(), ST_LinestringFromText() + ST_MLineFromText(), ST_MultiLinestringFromText() + ST_MPointFromText(), ST_MultiPointFromText() + ST_MPolyFromText(), ST_MultiPolygonFromText() + ST_PointFromText() + ST_PolyFromText(), ST_PolygonFromText() + ST_GeomCollFromWKB(), ST_GeometryCollectionFromWKB() + ST_GeomFromWKB(), ST_GeometryFromWKB() + ST_LineFromWKB(), ST_LinestringFromWKB() + ST_MLineFromWKB(), ST_MultiLinestringFromWKB() + ST_MPointFromWKB(), ST_MultiPointFromWKB() + ST_MPolyFromWKB(), ST_MultiPolygonFromWKB() + ST_PointFromWKB() + ST_PolyFromWKB(), ST_PolygonFromWKB() For more information, see Functions That Create Geometry Values from WKT Values (http://dev.mysql.com/doc/refman/8.0/en/gis-wkt-functions.html), and Functions That Create Geometry Values from WKB Values (http://dev.mysql.com/doc/refman/8.0/en/gis-wkb-functions.html). SQL Syntax Notes * 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 | +---+---+---+---+ Test Suite Notes * mysql-test-run.pl now has a --charset-for-testdb=charset_name option for specifying the default character set for the test database. The default value is latin1. (Bug #25494068) * mysql-test-run.pl now has an --only-big-tests option, which causes only big tests to run. Normal (non-big) tests are skipped. If both --big-test and --only-big-tests are given, --only-big-tests is ignored. (Bug #25182306) * mysql-test-run.pl has a new --discover option. When given, mysql-test-run.pl attempts to preload discover, the Developer Studio Memory Error Discovery Tool when starting mysqld. Reports from discover may be found in log/mysqld.%p.txt under the directory given by --vardir. This option is supported only on SPARC-M7 systems. (Bug #25048971) * mysqltest now supports an expr command that enables an expression to be evaluated and assigned to a variable. For details, see the command description in mysqltest Commands (http://dev.mysql.com/doc/mysqltest/2.0/en/mysqltest-commands.html). (Bug #24806741) * mysqltest now supports a force-cpdir command 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-report option. 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_tool such 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 --callgrind option did not work because it supplied an invalid --base option to callgrind. Thanks to Daniel Black for the patch on which the fixes were based. (Bug #23713613, Bug #82039) * The mysqltest connect() function now permits SOCKET and TCP values for the options argument, to specify using the socket-file and TCP/IP connection protocols. In addition, connection protocols now must match the current system. Previously, passing PIPE or SHM on non-Windows systems caused the default (socket-file) connection protocol to be used. Now this causes an error, and, similarly, passing SOCKET on Windows systems causes an error. (Bug #21046241) * mysql-test-run.pl now supports a --bootstrap option that enables mysqld options to be designated as bootstrap options. When mysql-test-run.pl finds --bootstrap options in a master.opt file, it removes and reinitializes the data directory and restarts the server with the new option settings. (Bug #18184868) Transaction Notes * These improvements were made to the crash safety of DDL statements: + Crash safety of DROP DATABASE is such that the discrepancy between storage engines, the data dictionary, and the binary log is now limited to one table at most. + Crash safety of multiple-table DROP TABLE is such that the discrepancy between storage engines, the data dictionary, and the binary log is now limited to one table at most. X Plugin Notes * The MYSQLX_TCP_PORT CMake 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) * Incrementing of the Mysqlx_on_notice_other_send status variable was handled incorrectly. (Bug #25290001, Bug #84260) * The Mysqlx_notice_warning_sent and Mysqlx_on_notice_other_send status variable values did not increment as expected. (Bug #25289949, Bug #84258) * The manual definition of the MYSQL_DYNAMIC_PLUGIN macro was redundant. (Bug #25162590, Bug #83988) * IPv6 connectivity support defined a new system variable Mysqlx-bind-address with 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 stmt field was marked as required in 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 statement list_objects incorrectly reported the table as a collection. (Bug #24963952) * Sending Expect.Open to a connected socket before authentication led to the following error messages: ... Plugin mysqlx reported: '10: Invalid message 24 received during cl ient initialization' ... Plugin mysqlx reported: '10: ERROR reading from socket Bad file de scriptor (9) 2' (Bug #24940144, Bug #83494) * On Linux, MySQL Shell in JavaScript and Python interactive mode hid collections if the letter case 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.threads table did not show processlist statistics 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_MESSAGE and 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 Update statement. (Bug #24510083) * The statement list_objects returned incorrect information for some views in sys database. (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_objects statement without explicitly setting the database name resulted in the collection being incorrectly classified as a table. (Bug #23205895, Bug #81248)[ To be continued...]
Subject
Views
Written By
Posted
MySQL Community Server 8.0.1-dmr has been released (part 1/3)
2162
April 11, 2017 01:39AM
Sorry, you can't reply to this topic. It has been closed.
Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.