List:Announcements« Previous MessageNext Message »
From:Bjorn Munch Date:April 11 2017 7:19am
Subject:MySQL Community Server 8.0.1-dmr has been released (part 1/3)
View as plain text  
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.]

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

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

MySQL Server 8.0.1-dmr is also available from our repository for Linux
platforms, go here for details:

Windows packages are available via the Installer for Windows:

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

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.:

The following section lists the changes in MySQL 8.0.1-dmr since 8.0.


Changes in MySQL 8.0.1 (2017-04-10, Development Milestone)


   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.

   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

   Character Set Support

     * Important Change: The default character set has changed
       from latin1 to utf8mb4. These system variables are

          + 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:

     * 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
       utf8mb4_ja_0900_as_cs is the first Japanese
       language-specific collation available for Unicode in
       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

             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

         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

          + 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

          + 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
       and RESET PERSIST Syntax
       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
       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:

       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:

     * 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
       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

     * Previously, invisible indexes were supported only for the
       InnoDB storage engine. Invisible indexes are now storage
       engine neutral (supported for any engine). (Bug

     * 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
       and GROUP BY Modifiers
       Thanks to Zhe Dong for a patch that was
       partially used to implement this feature.
       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.
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

     * 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
       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)
       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

   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/ 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 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

   Parser Notes

     * The deprecated PROCEDURE ANALYSE() syntax has been

     * 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

   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

          + 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
       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
       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

     * System and status variable information is no longer
       maintained in the INFORMATION_SCHEMA. These tables have
       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, 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

       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
       and The data_lock_waits Table
       For information about mapping old table
       columns to new table columns, see The INFORMATION_SCHEMA
       INNODB_LOCKS Table
       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
       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
       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

          + 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

          + 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
       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
       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
       For more information, see Static Versus Dynamic
       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
       . 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

     * OpenSSL is ending support for version 1.0.1 in December
       2016; see
       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
       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
       If spatial data contains SRID values that refer to a
       geographic spatial reference system, existing queries
       will return different results, compared to previous MySQL

     * 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

     * 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
       If spatial data contains SRID values that refer to a
       geographic spatial reference system, existing queries
       will return different results, compared to previous MySQL

     * 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,
       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
       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

     * 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_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
       and Functions That Create Geometry Values from WKB Values

   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

     * 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)

     * 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)

     * has a new --discover option. When
       given, 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

     * 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
       (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)

     * has a new --summary-report option. When
       given, 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)

     * 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 --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

     * 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)

     * now supports a --bootstrap option that
       enables mysqld options to be designated as bootstrap
       options. When 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

          + 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

     * 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 '',
       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

     * X Plugin generated an incorrect query when a duplicate
       field name existed in an Update statement. (Bug

     * 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...]
MySQL Community Server 8.0.1-dmr has been released (part 1/3)Bjorn Munch11 Apr 2017