MySQL Forums
Forum List  »  Announcements

MySQL Community Server 8.0.17 has been released (part 3/3)
Posted by: Balasubramanian Kandasamy
Date: July 22, 2019 03:09AM

[This is part 3 (last) of the announcement ]

     * The functions STATEMENT_DIGEST() and
       STATEMENT_DIGEST_TEXT() used character_set_client while
       parsing the function's argument instead of the character
       set of the argument. (Bug #29526571)

     * The server now tracks data dictionary upgrades to ensure
       that INFORMATION_SCHEMA views are recreated when data
       dictionary tables are changed. (Bug #29513265)

     * Execution of STATEMENT_DIGEST() or
       STATEMENT_DIGEST_TEXT() could have unintended side
       effects on data in the
       table. (Bug #29512067)

     * The implementation for CREATE TABLE did not provide the
       table a clearly defined starting cursor when no seeks or
       writes were performed. (Bug #29511318)

     * When a table is const optimized, any predicate terms in
       the join's ON condition should also be evaluated on the
       tables marked as const to make sure that the row
       qualifies for the ON condition.
       The optimizer failed to mark a table as const when it was
       handled as having an impossible ON condition, in which
       case the resulting row from this table is a NULL extended
       This fix sets the const_table flag for the table and
       marks the row as a NULL row. It also changes EXPLAIN
       output for a table optimized as having an impossible ON
       condition, where the resulting NULL values from this row
       are now propagated into the rows column values, as with
       other const rows. (Bug #29493830)

     * A query containing an IN subquery could return
       superfluous rows when optimizer_switch did not include
       firstmatch=on. (Bug #29493026)

     * RPM package detection of whether the operating system is
       EL6 or EL7 failed on some systems. (Bug #29492896)

     * SQL layer validation of keys stored in
       storage-engine-private data fields in the data dictionary
       was disabled to permit storage engines to add new keys as
       required. Storage engines are now responsible for key
       validation. (Bug #29491593, Bug #94667)

     * Checks for NULL returned an incorrect result for some
       expressions comparing rows. (Bug #29491083)

     * When optimizing a table join which included ORDER BY and
       LIMIT, the optimizer modified the select limit on the
       first table by taking the fanout of the entire join into
       consideration. The fanout was calculated using the
       filter_effect for each table, which can be set to
       COND_FILTER_STALE (-1) to indicate an unknown value. This
       value was not actually checked for by the optimizer,
       which could result in a negative fanout, leading to an
       unexpected rows value of 0 in the EXPLAIN output for the
       Now COND_FILTER_STALE (filter_effect unknown) is
       specifically checked for, and, if it is found, the fanout
       is also assumed to be unknown, and the number of rows to
       be selected from the first table is thus not modified by
       the fanout for the entire join. (Bug #29487181, Bug

     * An implicit assumption was made for the LEAST() and
       GREATEST() functions that arguments to either of these
       were all signed or all unsigned values. (Bug #29467577)

     * Some arguments for the BIT_OR() function were not always
       handled correctly. (Bug #29459549)

     * For debug builds, mishandling of the user_attributes
       column of the mysql.user system table could cause a
       server exit. (Bug #29451897)

     * MySQL Cluster-specific Debian debug packages had an
       incorrect path to the debug symbols. (Bug #29446947)

     * Compilation failure occurred when building with Protobuf
       3.7.0. (Bug #29436791, Bug #94543)

     * On Debian and Ubuntu, MySQL packages did not enable
       mysql.service after upgrades from native MySQL packages.
       (Bug #29435592)

     * The server did not properly close shared-memory
       connections when an error occurred, which could result in
       unexpected server behavior. (Bug #29435426)

     * The internal JOIN_CACHE::join_record() method attempted
       to leave all tables on which it operated in the same
       state with regard to the has_row and null_row flags by
       saving the state upon entry and restoring the appropriate
       flags when on completion.
       The issue addressed here arose after these flags had been
       restored, due to the fact that restore_last_record() was
       also called to restore any records that had been
       processed, which could lead to setting back a null_row
       flag that had just been restored based on the saved
       state. This is fixed by calling restore_last_record()
       before the saved states are restored, rather than after,
       as well as making sure that reset_null_row() is also
       called if the saved state indicates that the null_row
       flag was not set at the beginning. (Bug #29435133)

     * Some ALTER TABLE statements using ADD COLUMN did not
       perform as expected. (Bug #29428288)
       References: This issue is a regression of: Bug #28333657.

     * An incorrect error message was reported during upgrade
       from MySQL 5.7 to MySQL 8.0 when a non-natively
       partitioned table was encountered. The error message
       referenced the -DWITH_PARTITION_STORAGE_ENGINE CMake
       build option, which is not supported in MySQL 8.0. (Bug
       #29426632, Bug #94518)

     * MySQL Installer did not install OpenSSL DLL dependencies
       if the Development component was not selected. (Bug
       #29423421, Bug #94168)

     * At startup, the server did not properly check the length
       of user and host names in persisted variables. (Bug

     * The parser could leak memory for certain
       multiple-statement queries. (Bug #29419820)

     * Installing MySQL on EL8 from RPM packages caused a
       conflict with the installed MeCab library. (Bug

     * On FreeBSD, stack traces dumped for fatal signals did not
       work correctly. (Bug #29408039)

     * With the derived_merge switch disabled in the value of
       the optimizer_switch system variable, information
       retrieved for base tables from INFORMATION_SCHEMA.TABLES
       displayed inappropriate information in the TABLE_COMMENT
       column. (Bug #29406053, Bug #94468)

     * In certain cases, use of ORDER BY in a subselect did not
       produce the expected result. (Bug #29402943)

     * ROLLUP queries with wildcards (and probably also certain
       other wildcard queries) could cause assertion errors.
       (Bug #29396628)

     * A condition inside an IF function having a constant
       evaluating to TRUE was not always handled correctly. (Bug

     * A code change in MySQL 8.0.13 related to full-text search
       caused a segmentation fault. (Bug #29393105)

     * mysqlpump did not check whether the argument to
       --result-file was opened correctly and exited
       unexpectedly if an error occurred. (Bug #29389828)

     * In queries without joins, batch mode was not enabled
       until after initialization was complete, so that OFFSET
       rows were read outside of batch mode. This negated any
       performance benefit to be had from batch mode. (Bug

     * When renaming a functional index, the server did not
       check for a possible duplicate index name. (Bug

     * The system variable service did not check the input
       buffer size for some operations. (Bug #29343505)

     * For mysql system schema dumps, mysqlpump dumped certain
       tables by row rather than as account-management
       statements. (Bug #29343073)

     * Creation of a functional index on a UNION subquery led to
       an assertion in debug builds. (Bug #29342245)

     * Non-numeric arguments to AVG() were not always handled
       correctly. (Bug #29321764)

     * Result sets with a very large number of columns could
       cause client programs to use all available memory. Now
       the client library allocates no more than
       max_allowed_packet bytes for result set metadata,
       returning an out-of-memory error if this limit is
       exceeded. If this error occurs, it is fatal and the
       client should disconnect. (Bug #29316814)

     * A call to mysql_shutdown() could cause the client to exit
       when the server and client were from different MySQL
       series, due to return packet payload misinterpretation.
       (Bug #29315393)

     * Client programs could fail while reading result set
       metadata if communicating with the server using the
       pre-MySQL 4.1 protocol. (Bug #29304864)

     * HANDLER statements did not always work correctly with
       tables having generated columns. (Bug #29300049)

     * Session-tracking information in the client/server
       protocol could be mishandled. (Bug #29297652)

     * Client programs that used the libmysqlclient C client
       library could exit upon receipt of an OK packet
       containing malformed session-tracking information. (Bug

     * With the PAD_CHAR_TO_FULL_LENGTH SQL mode enabled,
       password changes failed, with no warning or error
       reported. (Bug #29287785)

     * Initialization code of user-defined functions for the
       keyring_aws plugin did not properly check whether the
       plugin had been initialized. (Bug #29278153)

     * Scalar subqueries were not always identified and handled
       correctly when compared with aggregate or window
       functions. (Bug #29276063)

     * Ubuntu packages did not disable binary logging for
       initialization scripts. (Bug #29263771)

     * The internal collation map could become corrupted by use
       of invalid collation names. (Bug #29258979)

     * Single-table UPDATE and DELETE statements that used
       indexed expressions could cause the server to exit when
       executed as prepared statements. (Bug #29257254)

     * The audit_log plugin did not log UNINSTALL PLUGIN
       audit_log statements. (Bug #29248047)

     * MySQL now uses open(O_TMPFILE) whenever applicable when
       creating a temporary file that is immediately unlinked.
       This is more efficient than previously and avoids the
       small possibility of a race condition. Thanks to Daniel
       Black for the contribution. (Bug #29215177, Bug #93937)

     * audit_log filtering operations could leak memory. (Bug

     * The GRANT OPTION privilege could be mishandled in some
       cases. (Bug #29179334)

     * Previously, LIKE comparisons could be incorrect if either
       of the _ or % SQL wildcard characters was used as the
       ESCAPE character. These characters can now be used. (Bug
       #29175461, Bug #93811)

     * The component_sys_variable service could fail to read
       certain system variables, causing a server exit. (Bug

     * Multiple-table UPDATE statements could search for
       incorrect generated-column values when determining which
       row to update. (Bug #29154379)

     * If the server was started with Performance Schema
       parameters that caused an out-of-memory condition,
       startup failed. (Bug #29140212, Bug #93726)

     * For consistency and compliance with standard SQL, the
       ISNULL() function is now printed as IS NULL in warnings
       generated by EXPLAIN statements. (Bug #29119455)

     * Some supplemental Unicode characters could incorrectly be
       flagged with a warning message as invalid. (Bug
       #29110613, Bug #93626)

     * For upgrades from MySQL 5.7 to 8.0, the root user was not
       given all dynamic privileges. (Bug #29043233)

     * When using subpartitioning, table serialized dictionary
       information (SDI) was not stored in any tablespace file.
       (Bug #29020745, Bug #93499)

     * Privileges for dropping some Performance Schema tables
       were checked incorrectly. (Bug #29010031)

     * mysqldump failed to wrap SET NAMES utf8mb4 and SET
       character_set_client = utf8mb4 statements within
       version-specific comments, which could cause
       compatibility problems. (Bug #29007506, Bug #93450)

     * For a unique index created on one or more columns defined
       as NULL, the optimizer failed to handle joins using that
       index as eq_ref.
       As part of this fix, late NULL filtering is now also
       performed to avoid treating comparisons with NULL as
       potential equality matches. (Bug #28965762, Bug

     * For debug builds, an assertion could be raised by string
       comparisons for which the expected and actual collation
       differed. (Bug #28960901)

     * The server did not handle correctly a subquery which,
       prior to conversion to a semijoin, contained a merged
       derived table or common table expression which in turn
       had a WHERE clause with an outer reference against an
       indexed column. (Bug #28955216)

     * A query that employed a derived table which included an
       ORDER BY was not always handled correctly. (Bug

     * When clients were terminated for inactivity exceeding the
       wait_timeout value, the message written to the error log
       was unclear. Now ER_NET_WAIT_ERROR is written, which is
       more specific about the cause of the problem. (Bug
       #28940167, Bug #93240)

     * Concurrent execution of FLUSH PRIVILEGES along with
       CREATE USER or ALTER USER could cause the server to
       stall. (Bug #28937018, Bug #93085)

     * CASE statement comparisons that relied on index prefix
       values could produce incorrect results. (Bug #28934315,
       Bug #93215)

     * When adjusting the query cost after sort elimination to
       compensate for sorts that had not been considered in the
       original cost estimate, and the estimates could sometimes
       be too low, or even negative.
       The sort cost is added to the total cost in
       Optimize_table_order::consider_plan(), and subtracted
       from the total cost in JOIN::optimize() if it is found
       that sorting is not needed.
       If consider_plan() finds that sorting is not needed, it
       does not add the sort cost to the total cost, but still
       records a sort cost in JOIN::sort_cost(), and this is set
       to the sort cost of the candidate plan considered
       previously. Later, JOIN::optimize() saw that the JOIN
       object had an associated sort cost, and subtracted that
       cost from the total cost, since it also sees that no sort
       is needed. Since the sort cost came from a candidate plan
       that was not the same as the chosen plan, the estimate
       was incorrect.
       The fix is to make consider_plan() set JOIN::sort_cost to
       0 if no sort cost is added to the total cost, so that the
       mistaken adjustment of the cost in JOIN::optimize() is
       not performed. (Bug #28884359)

     * Some GIS code failed to compile under Visual Studio 2017
       15.5.6. (Bug #28861188)
       References: This issue is a regression of: Bug #28842878.

     * Stored generated column values and indexes on virtual
       generated columns were not correctly updated after
       columns on which these generated columns depended were
       swapped using ALTER TABLE with RENAME COLUMN or CHANGE
       Renaming of base columns for generated columns, generated
       defaults, and functional indexes is now prohibited unless
       the same ALTER TABLE statement satisfies one of these

          + The statement removes the generated column,
            generated default, or functional index.

          + The statement updates the dependent expression in
            question. This enables supporting existing scenarios
            in which generation expressions are updated to
            follow base column renaming.
       Restrictions on dropping columns on which generated
       columns, generated defaults, or functional indexes depend
       were relaxed in a similar way. (Bug #28772251, Bug

     * Base columns were not excluded from index-only access by
       a generated column. (Bug #28652733)
       References: See also: Bug #29664369. This issue is a
       regression of: Bug #23169112.

     * SET PERSIST_ONLY did not properly handle the
       version_tokens_session system variable. (Bug #28542569)

     * For debug builds, improper error checking for CREATE
       TABLE statements could cause an assertion to be raised.
       (Bug #28490361, Bug #91976)

     * MySQL 5.7 supported foreign keys on InnoDB tables with a
       parent key for which part of the referenced columns were
       hidden, but MySQL 8.0 did not. MySQL 8.0 now supports
       this capability. (Bug #28480149, Bug #91952)

     * INSERT ... ON DUPLICATE KEY UPDATE did not consider
       privileges granted by active roles. (Bug #28395115)

     * For unloaded components, component options specified at
       startup with a --loose- prefix were not processed if the
       component was later loaded at runtime. (Bug #28341329)

     * Long passwords solicited interactively by client programs
       could fail to be null-terminated. (Bug #28121400)

     * When building MySQL, CMake begins the process of
       downloading Boost by creating a zero-length tarball in
       the destination directory, which is removed when the
       download is complete. If the download was interrupted or
       timed out, the presence of this file prevented CMake from
       attempting to perform the download the time it was run.
       Now the zero-length tarball, if present, is removed
       before the download is started. (Bug #28089173)

     * A thread pool group could be blocked when a thread
       process tick time exceeded the maximum permitted value.
       The tick time now uses a larger data type to permit
       larger values. (Bug #28072609)

     * Privileges were not checked correctly for ALTER USER ...
       IDENTIFIED WITH ... BY. (Bug #27923149)

     * MySQL does not support OpenSSL session tickets, but did
       not set the SSL_OP_NO_TICKET flag to inform OpenSSL of
       that. The flag is now set. (Bug #27655493)

     * The audit_null plugin did not properly check for a null
       event record. (Bug #27638290)

     * UpdateXML() did not always free memory properly in
       certain cases. (Bug #27312862)

     * Empty values in the name column of the mysql.plugin
       system table caused the server to exit during startup.
       (Bug #27302459)

     * The server did not properly check privileges for CACHE
       INDEX statements. (Bug #26173827)

     * With the thread_pool plugin enabled, the Performance
       Schema status_by_thread table contained no data. (Bug

     * The GRANT OPTION privilege was treated as related to
       database operations. (Bug #25203933)

     * REPAIR TABLE for ARCHIVE tables could result in a server
       exit. (Bug #23304911)

     * If an INSTALL PLUGIN statement contained invalid UTF-8
       characters in the shared library name, it caused the
       server to hang (or to raise an assertion in debug
       builds). (Bug #14653594, Bug #23080148, Bug #27167197)

     * Logging to the mysql.slow_log system table could fail
       when values were to large for table columns. Now logging
       proceeds on a best-effort basis, writing what information
       can be provided. Otherwise, the row is discarded and a
       message is written to the error log. (Bug #11748692, Bug

     * A query using WHERE date_column LIKE 'year_value' failed
       with error 1525 Incorrect DATE value on Windows
       platforms. (Bug #95780, Bug #29904751)
       References: This issue is a regression of: Bug #29368521.

     * A fix for a previous issue caused YEAR values to be
       treated as unsigned, but this did not allow for possible
       negative values arising during calculations involving
       subtraction, which could lead to data truncation errors.
       (Bug #95045, Bug #29668676)
       References: This issue is a regression of: Bug #92209,
       Bug #28562930.

     * When working with derived tables with an aggregation
       which had zero input rows, the results of the aggregate
       functions were not properly copied into the temporary
       table. This caused incorrect results in cases where the
       derived table was evaluated multiple times, such as when
       performing a lateral join. (Bug #94721, Bug #29514504)

     * A window without a frame specification inheriting from a
       window with an ORDER BY yielded an incorrect result. (Bug
       #94251, Bug #29328529)

     * The results returned by the functions REGEXP_REPLACE()
       and REGEXP_SUBSTR() used UTF-16 rather than the character
       set and collation of the expression searched for matches.
       (Bug #94203, Bug #29308212)

     * A UNION ALL query with SUM(constant) was processed very
       slowly compared to the same query using SUM(column)
       instead. (Bug #93922, Bug #29227464)

     * JSON_OBJECTAGG() is non-deterministic in the presence of
       duplicate keys unless the window has ordering on the key,
       which is expected behavior, but a key-value pair that was
       no longer in the window frame still appeared in the
       result. (Bug #93822, Bug #29175262)

     * LIMIT was applied before HAVING in queries with
       subselects. (Bug #93214, Bug #28934388)
       References: This issue is a regression of: Bug #25466100.

     * A query involving GROUP BY on a TIMESTAMP column resulted
       in a duplicate entry for key (ER_DUP_ENTRY) error. This
       problem arose when TIMESTAMP values were inserted into a
       table using a given setting for the time zone and these
       values were later fetched after the time zone setting had
       been changed, such that at least some of the inserted
       TIMESTAMP values occurred during the hour that the time
       changed from standard to daylight time (DST) in the new
       time zone, during which time the same TIMESTAMP value can
       exist twice. Now, when the server would otherwise return
       the error DUPLICATE ENTRY FOR KEY 'group_key', if the
       grouping involves a TIMESTAMP column, it instead raises
       the error Grouping on temporal is non-deterministic for
       time zones having DST. Please consider switching to UTC
       for this query.
       In addition, it is suggested to set
       explicit_defaults_for_timestamp to ON as well as one or
       MODE_INVALID_DATES as part of the server SQL mode to help
       avoid this issue. (Bug #90398, Bug #27970159)

On Behalf of Oracle/MySQL Release Engineering Team,
Balasubramanian Kandasamy

Options: ReplyQuote

Written By
MySQL Community Server 8.0.17 has been released (part 3/3)
July 22, 2019 03:09AM

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.