Web lists-archives.com

MySQL Cluster 8.0.13-dmr has been released





Dear MySQL Users,

MySQL Cluster is the distributed database combining massive
scalability and high availability. It provides in-memory
real-time access with transactional consistency across
partitioned and distributed datasets. It is designed for
mission critical applications.

MySQL Cluster has replication between clusters across multiple
geographical sites built-in. A shared nothing architecture with
data locality awareness make it the perfect choice for running
on commodity hardware and in globally distributed cloud
infrastructure.


This storage engine provides:

  - In-Memory storage - Real-time performance (with optional
    checkpointing to disk)
  - Transparent Auto-Sharding - Read & write scalability
  - Active-Active/Multi-Master geographic replication
  - Transactional consistency across partitioned and distributed datasets
  - Parallel cross partition queries such as joins

  - 99.9999% High Availability with no single point of failure
    and on-line maintenance
  - NoSQL and SQL APIs (including C++, Java, http, Memcached
    and JavaScript/Node.js)

MySQL Cluster 8.0.13-dmr, has been released and can be downloaded from

  http://www.mysql.com/downloads/cluster/

where you will also find Quick Start guides to help you get your
first MySQL Cluster database up and running.

The release notes are available from

http://dev.mysql.com/doc/relnotes/mysql-cluster/8.0/en/index.html

MySQL Cluster enables users to meet the database challenges of next
generation web, cloud, and communications services with uncompromising
scalability, uptime and agility.

More details can be found at

  http://www.mysql.com/products/cluster/

Enjoy !

Changes in MySQL NDB Cluster 8.0.13 (2018-10-23, Development Milestone)

   MySQL NDB Cluster 8.0.13 is a new development release of NDB
   8.0, based on MySQL Server 8.0 and including features in
   version 8.0 of the NDB storage engine, as well as fixing
   recently discovered bugs in previous NDB Cluster releases.

   Obtaining NDB Cluster 8.0.  NDB Cluster 8.0 source code and
   binaries can be obtained from
   https://dev.mysql.com/downloads/cluster/.

   For an overview of changes made in NDB Cluster 8.0, see
   What is New in NDB Cluster 8.0

(http://dev.mysql.com/doc/refman/8.0/mysql-cluster-what-is-new.html).

   This release also incorporates all bug fixes and changes made
   in previous NDB Cluster releases, as well as all bug fixes
   and feature changes which were added in mainline MySQL 8.0
   through MySQL 8.0.13 (see Changes in MySQL 8.0.13 (2018-10-22)
(http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-13.html)).

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Important Change; NDB Disk Data: The following changes
       are made in the display of information about Disk Data
       files in the INFORMATION_SCHEMA.FILES table:

          + Tablespaces and log file groups are no longer
            represented in the FILES table. (These constructs
            are not actually files.)

          + Each data file is now represented by a single row in
            the FILES table. Each undo log file is also now
            represented in this table by one row only.
            (Previously, a row was displayed for each copy of
            each of these files on each data node.)

          + For rows corresponding to data files or undo log
            files, node ID and undo log buffer information is no
            longer displayed in the EXTRA column of the FILES
            table.

     * Important Change; NDB Client Programs: Removed the
       deprecated --ndb option for perror. Use ndb_perror to
       obtain error message information from NDB error codes
       instead. (Bug #81705, Bug #23523957)
       References: See also: Bug #81704, Bug #23523926.

     * Important Change: Beginning with this release, MySQL NDB
       Cluster is being developed in parallel with the standard
       MySQL 8.0 server under a new unified release model with
       the following features:

          + NDB 8.0 is developed in, built from, and released
            with the MySQL 8.0 source code tree.

          + The numbering scheme for NDB Cluster 8.0 releases
            follows the scheme for MySQL 8.0, starting with the
            current MySQL release (8.0.13).

          + Building the source with NDB support appends
            -cluster to the version string returned by mysql -V,
            as shown here:
            shell≫ mysql -V
            mysql  Ver 8.0.13-cluster for Linux on x86_64 (Source distribution)

            NDB binaries continue to display both the MySQL
            Server version and the NDB engine version, like
            this:
            shell> ndb_mgm -V
            MySQL distrib mysql-8.0.13 ndb-8.0.13-dmr, for Linux (x86_64)

            In MySQL Cluster NDB 8.0, these two version numbers
            are always the same.
       To build the MySQL 8.0.13 (or later) source with NDB
       Cluster support, use the CMake option -DWITH_NDBCLUSTER.

     * INFORMATION_SCHEMA tables now are populated with
       tablespace statistics for MySQL Cluster tables. (Bug
       #27167728)

     * It is now possible to specify a set of cores to be used
       for I/O threads performing offline multithreaded builds
       of ordered indexes, as opposed to normal I/O duties such
       as file I/O, compression, or decompression. "Offline" in
       this context refers to building of ordered indexes
       performed when the parent table is not being written to;
       such building takes place when an NDB cluster performs a
       node or system restart, or as part of restoring a cluster
       from backup using ndb_restore --rebuild-indexes.
       In addition, the default behaviour for offline index
       build work is modified to use all cores available to
       ndbmtd, rather limiting itself to the core reserved for
       the I/O thread. Doing so can improve restart and restore
       times and performance, availability, and the user
       experience.
       This enhancement is implemented as follows:

         1. The default value for BuildIndexThreads is changed
            from 0 to 128. This means that offline ordered index
            builds are now multithreaded by default.

         2. The default value for TwoPassInitialNodeRestartCopy
            is changed from false to true. This means that an
            initial node restart first copies all data from a
            "live" node to one that is starting---without
            creating any indexes---builds ordered indexes
            offline, and then again synchronizes its data with
            the live node, that is, synchronizing twice and
            building indexes offline between the two
            synchonizations. This causes an initial node restart
            to behave more like the normal restart of a node,
            and reduces the time required for building indexes.

         3. A new thread type (idxbld) is defined for the
            ThreadConfig configuration parameter, to allow
            locking of offline index build threads to specific
            CPUs.
       In addition, NDB now distinguishes the thread types that
       are accessible to "ThreadConfig" by the following two
       criteria:

         1. Whether the thread is an execution thread. Threads
            of types main, ldm, recv, rep, tc, and send are
            execution threads; thread types io, watchdog, and
            idxbld are not.

         2. Whether the allocation of the thread to a given task
            is permanent or temporary. Currently all thread
            types except idxbld are permanent.
       For additonal information, see the descriptions of the
       parameters in the Manual. (Bug #25835748, Bug #26928111)

     * When performing an NDB backup, the ndbinfo.logbuffers
       table now displays information regarding buffer usage by
       the backup process on each data node. This is implemented
       as rows reflecting two new log types in addition to REDO
       and DD-UNDO. One of these rows has the log type
       BACKUP-DATA, which shows the amount of data buffer used
       during backup to copy fragments to backup files. The
       other row has the log type BACKUP-LOG, which displays the
       amount of log buffer used during the backup to record
       changes made after the backup has started. One each of
       these log_type rows is shown in the logbuffers table for
       each data node in the cluster. Rows having these two log
       types are present in the table only while an NDB backup
       is currently in progress. (Bug #25822988)

     * Added the ODirectSyncFlag configuration parameter for
       data nodes. When enabled, the data node treats all
       completed filesystem writes to the redo log as though
       they had been performed using fsync.
       Note
       This parameter has no effect if at least one of the
       following conditions is true:

          + ODirect is not enabled.

          + InitFragmentLogFiles is set to SPARSE.
       (Bug #25428560)

     * Added the --logbuffer-size option for ndbd and ndbmtd,
       for use in debugging with a large number of log messages.
       This controls the size of the data node log buffer; the
       default (32K) is intended for normal operations. (Bug
       #89679, Bug #27550943)

     * Prior to NDB 8.0, all string hashing was based on first
       transforming the string into a normalized form, then
       MD5-hashing the resulting binary image. This could give
       rise to some performance problems, for the following
       reasons:

          + The normalized string is always space padded to its
            full length. For a VARCHAR, this often involved
            adding more spaces than there were characters in the
            original string.

          + The string libraries were not optimized for this
            space padding, and added considerable overhead in
            some use cases.

          + The padding semantics varied between character sets,
            some of which were not padded to their full length.

          + The transformed string could become quite large,
            even without space padding; some Unicode 9.0
            collations can transform a single code point into
            100 bytes of character data or more.

          + Subsequent MD5 hashing consisted mainly of padding
            with spaces, and was not particularly efficient,
            possibly causing additional performance penalties by
            flush significant portions of the L1 cache.
       Collations provide their own hash functions, which hash
       the string directly without first creating a normalized
       string. In addition, for Unicode 9.0 collations, the
       hashes are computed without padding. NDB now takes
       advantage of this built-in function whenever hashing a
       string identified as using a Unicode 9.0 collation.
       Since, for other collations there are existing databases
       which are hash partitioned on the transformed string, NDB
       continues to employ the previous method for hashing
       strings that use these, to maintain compatibility. (Bug
       #89609, Bug #27523758)
       References: See also: Bug #89590, Bug #27515000, Bug
       #89604, Bug #27522732.

     * A table created in NDB 7.6 and earlier contains metadata
       in the form of a compressed .frm file, which is no longer
       supported in MySQL 8.0. To facilitate online upgrades to
       NDB 8.0, NDB performs on-the-fly translation of this
       metadata and writes it into the MySQL Server's data
       dictionary, which enables the mysqld in NDB Cluster 8.0
       to work with the table without preventing subsequent use
       of the table by a previous version of the NDB software.
       Important
       Once a table's structure has been modified in NDB 8.0,
       its metadata is stored using the Data Dictionary, and it
       can no longer be accessed by NDB 7.6 and earlier.
       This enhancement also makes it possible to restore an NDB
       backup made using an earlier version to a cluster running
       NDB 8.0 (or later).


Bugs Fixed


     * Important Change; NDB Disk Data: It was possible to issue
       a CREATE TABLE statement that referred to a nonexistent
       tablespace. Now such a statement fails with an error.
       (Bug #85859, Bug #25860404)

     * Important Change; NDB Replication: Because the MySQL
       Server now executes RESET MASTER with a global read lock,
       the behavior of this statement when used with NDB Cluster
       has changed in the following two respects:

          + It is no longer guaranteed to be synchronous; that
            is, it is now possible that a read coming
            immediately before RESET MASTER is issued may not be
            logged until after the binary log has been rotated.

          + It now behaves identically, regardless of whether
            the statement is issued on the same SQL node that is
            writing the binary log, or on a different SQL node
            in the same cluster.
       Note
       SHOW BINLOG EVENTS, FLUSH LOGS, and most data definition
       statements continue, as they did in previous NDB
       versions, to operate in a synchronous fashion.
       (Bug #89976, Bug #27665565)

     * Important Change: NDB supports any of the following three
       values for the CREATE TABLE statement's ROW_FORMAT
       option: DEFAULT, FIXED, and DYNAMIC. Formerly, any values
       other than these were accepted but resulted in DYNAMIC
       being used. Now a CREATE TABLE statement that attempts to
       create an NDB table fails with an error if ROW_FORMAT is
       used, and does not have one of the three values listed.
       (Bug #88803, Bug #27230898)

     * Microsoft Windows; ndbinfo Information Database: The
       process ID of the monitor process used on Windows
       platforms by RESTART to spawn and restart a mysqld is now
       shown in the ndbinfo.processes table as an angel_pid.
       (Bug #90235, Bug #27767237)

     * NDB Cluster APIs: The example NDB API programs
       ndbapi_array_simple and ndbapi_array_using_adapter did
       not perform cleanup following execution; in addition, the
       example program ndbapi_simple_dual did not check to see
       whether the table used by this example already existed.
       Due to these issues, none of these examples could be run
       more than once in succession.
       The issues just described have been corrected in the
       example sources, and the relevant code listings in the
       NDB API documentation have been updated to match. (Bug
       #27009386)

     * NDB Cluster APIs: A previous fix for an issue, in which
       the failure of multiple data nodes during a partial
       restart could cause API nodes to fail, did not properly
       check the validity of the associated NdbReceiver object
       before proceeding. Now in such cases an invalid object
       triggers handling for invalid signals, rather than a node
       failure. (Bug #25902137)
       References: This issue is a regression of: Bug #25092498.

     * NDB Cluster APIs: Incorrect results, usually an empty
       result set, were returned when setBound() was used to
       specify a NULL bound. This issue appears to have been
       caused by a problem in gcc, limited to cases using the
       old version of this method (which does not employ
       NdbRecord), and is fixed by rewriting the problematic
       internal logic in the old implementation. (Bug #89468,
       Bug #27461752)

     * NDB Cluster APIs: Released NDB API objects are kept in
       one or more Ndb_free_list structures for later reuse.
       Each list also keeps track of all objects seized from it,
       and makes sure that these are eventually released back to
       it. In the event that the internal function
       NdbScanOperation::init() failed, it was possible for an
       NdbApiSignal already allocated by the NdbOperation to be
       leaked. Now in such cases, NdbScanOperation::release() is
       called to release any objects allocated by the failed
       NdbScanOperation before it is returned to the free list.
       This fix also handles a similar issue with
       NdbOperation::init(), where a failed call could also leak
       a signal. (Bug #89249, Bug #27389894)

     * NDB Cluster APIs: Removed the unused TFSentinel
       implementation class, which raised compiler warnings on
       32-bit systems. (Bug #89005, Bug #27302881)

     * NDB Cluster APIs: The success of thread creation by API
       calls was not always checked, which could lead to
       timeouts in some cases. (Bug #88784, Bug #27225714)

     * ndbinfo Information Database: Counts of committed rows
       and committed operations per fragment used by some tables
       in ndbinfo were taken from the DBACC block, but due to
       the fact that commit signals can arrive out of order,
       transient counter values could be negative. This could
       happen if, for example, a transaction contained several
       interleaved insert and delete operations on the same row;
       in such cases, commit signals for delete operations could
       arrive before those for the corresponding insert
       operations, leading to a failure in DBACC.
       This issue is fixed by using the counts of committed rows
       which are kept in DBTUP, which do not have this problem.
       (Bug #88087, Bug #26968613)

     * NDB Client Programs: When passed an invalid connection
       string, the ndb_mgm client did not always free up all
       memory used before exiting. (Bug #90179, Bug #27737906)

     * NDB Client Programs: ndb_show_tables did not always free
       up all memory which it used. (Bug #90152, Bug #27727544)

     * NDB Client Programs: On Unix platforms, the
       Auto-Installer failed to stop the cluster when ndb_mgmd
       was installed in a directory other than the default. (Bug
       #89624, Bug #27531186)

     * NDB Client Programs: The Auto-Installer did not provide a
       mechanism for setting the ServerPort parameter. (Bug
       #89623, Bug #27539823)

     * MySQL NDB ClusterJ: When a table containing a BLOB or a
       TEXT field was being queried with ClusterJ for a record
       that did not exist, an exception ("The method is not
       valid in current blob state") was thrown. (Bug #28536926)

     * MySQL NDB ClusterJ: ClusterJ quit unexpectedly as there
       was no error handling in the scanIndex() function of the
       ClusterTransactionImpl class for a null returned to it
       internally by the scanIndex() method of the
       ndbTransaction class. (Bug #27297681, Bug #88989)

     * Local checkpoints did not always handle DROP TABLE
       operations correctly. (Bug #27926532)
       References: This issue is a regression of: Bug #26908347,
       Bug #26968613.

     * In some circumstances, when a transaction was aborted in
       the DBTC block, there remained links to trigger records
       from operation records which were not yet
       reference-counted, but when such an operation record was
       released the trigger reference count was still
       decremented. (Bug #27629680)

     * NDB attempted to drop subscriptions which had already
       been dropped, leading to a data node shutdown with Error
       2341. (Bug #27622643)

     * An NDB online backup consists of data, which is fuzzy,
       and a redo and undo log. To restore to a consistent state
       it is necessary to ensure that the log contains all of
       the changes spanning the capture of the fuzzy data
       portion and beyond to a consistent snapshot point. This
       is achieved by waiting for a GCI boundary to be passed
       after the capture of data is complete, but before
       stopping change logging and recording the stop GCI in the
       backup's metadata.
       At restore time, the log is replayed up to the stop GCI,
       restoring the system to the state it had at the
       consistent stop GCI. A problem arose when, under load, it
       was possible to select a GCI boundary which occurred too
       early and did not span all the data captured. This could
       lead to inconsistencies when restoring the backup; these
       could be be noticed as broken constraints or corrupted
       BLOB entries.
       Now the stop GCI is chosen is so that it spans the entire
       duration of the fuzzy data capture process, so that the
       backup log always contains all data within a given stop
       GCI. (Bug #27497461)
       References: See also: Bug #27566346.

     * For NDB tables, when a foreign key was added or dropped
       as a part of a DDL statement, the foreign key metatdata
       for all parent tables referenced should be reloaded in
       the handler on all SQL nodes connected to the cluster,
       but this was done only on the mysqld on which the
       statement was executed. Due to this, any subsequent
       queries relying on foreign key metadata from the
       corresponding parent tables could return inconsistent
       results. (Bug #27439587)
       References: See also: Bug #82989, Bug #24666177.

     * ANALYZE TABLE used excessive amounts of CPU on large,
       low-cardinality tables. (Bug #27438963)

     * Queries using very large lists with IN were not handled
       correctly, which could lead to data node failures. (Bug
       #27397802)

     * A data node overload could in some situations lead to an
       unplanned shutdown of the data node, which led to all
       data nodes disconnecting from the management and nodes.
       This was due to a situation in which API_FAILREQ was not
       the last received signal prior to the node failure.
       As part of this fix, the transaction coordinator's
       handling of SCAN_TABREQ signals for an ApiConnectRecord
       in an incorrect state was also improved. (Bug #27381901)
       References: See also: Bug #47039, Bug #11755287.

     * In a two-node cluster, when the node having the lowest ID
       was started using --nostart, API clients could not
       connect, failing with Could not alloc node id at HOST
       port PORT_NO: No free node id found for mysqld(API). (Bug
       #27225212)

     * Changing MaxNoOfExecutionThreads without an initial
       system restart led to an unplanned data node shutdown.
       (Bug #27169282)
       References: This issue is a regression of: Bug #26908347,
       Bug #26968613.

     * In most cases, and especially in error conditions, NDB
       command-line programs failed on exit to free memory used
       by option handling, and failed to call ndb_end(). This is
       fixed by removing the internal methods
       ndb_load_defaults() and ndb_free_defaults() from
       storage/ndb/include/util/ndb_opts.h, and replacing these
       with an Ndb_opts class that automatically frees such
       resources as part of its destructor. (Bug #26930148)
       References: See also: Bug #87396, Bug #26617328.

     * A query against the INFORMATION_SCHEMA.FILES table
       returned no results when it included an ORDER BY clause.
       (Bug #26877788)

     * ClusterJ failed to connect to a MySQL node that used
       utf8mb4_800_ci_ai as its default character set for
       connection. Also, ClusterJ quit unexpectedly when
       handling a table with a character set number of 255 or
       larger. This fix corrected both issues. (Bug #26027722)

     * During a restart, DBLQH loads redo log part metadata for
       each redo log part it manages, from one or more redo log
       files. Since each file has a limited capacity for
       metadata, the number of files which must be consulted
       depends on the size of the redo log part. These files are
       opened, read, and closed sequentially, but the closing of
       one file occurs concurrently with the opening of the
       next.
       In cases where closing of the file was slow, it was
       possible for more than 4 files per redo log part to be
       open concurrently; since these files were opened using
       the OM_WRITE_BUFFER option, more than 4 chunks of write
       buffer were allocated per part in such cases. The write
       buffer pool is not unlimited; if all redo log parts were
       in a similar state, the pool was exhausted, causing the
       data node to shut down.
       This issue is resolved by avoiding the use of
       OM_WRITE_BUFFER during metadata reload, so that any
       transient opening of more than 4 redo log files per log
       file part no longer leads to failure of the data node.
       (Bug #25965370)

     * Under certain conditions, data nodes restarted
       unnecessarily during execution of ALTER TABLE...
       REORGANIZE PARTITION. (Bug #25679639)

     * Race conditions sometimes occurred during asynchronous
       disconnection and reconnection of the transporter while
       other threads concurrently inserted signal data into the
       send buffers, leading to an unplanned shutdown of the
       cluster.
       As part of the work fixing this issue, the internal
       templating function used by the Transporter Registry when
       it prepares a send is refactored to use
       likely-or-unlikely logic to speed up execution, and to
       remove a number of duplicate checks for NULL. (Bug
       #24444908, Bug #25128512)
       References: See also: Bug #20112700.

     * ndb_restore sometimes logged data file and log file
       progress values much greater than 100%. (Bug #20989106)

     * Removed unneeded debug printouts from the internal
       function ha_ndbcluster::copy_fk_for_offline_alter(). (Bug
       #90991, Bug #28069711)

     * The internal function BitmaskImpl::setRange() set one bit
       fewer than specified. (Bug #90648, Bug #27931995)

     * Inserting a row into an NDB table having a
       self-referencing foreign key that referenced a unique
       index on the table other than the primary key failed with
       ER_NO_REFERENCED_ROW_2. This was due to the fact that NDB
       checked foreign key constraints before the unique index
       was updated, so that the constraint check was unable to
       use the index for locating the row. Now, in such cases,
       NDB waits until all unique index values have been updated
       before checking foreign key constraints on the inserted
       row. (Bug #90644, Bug #27930382)
       References: See also: Bug #91965, Bug #28486390.

     * Removed all references to the C++ register storage class
       in the NDB Cluster sources; use of this specifier, which
       was deprecated in C++11 and removed in C++17, raised
       warnings when building with recent compilers. (Bug
       #90110, Bug #27705985)

     * It was not possible to create an NDB table using
       PARTITION_BALANCE set to FOR_RA_BY_LDM_X_2,
       FOR_RA_BY_LDM_X_3, or FOR_RA_BY_LDM_X_4. (Bug #89811, Bug
       #27602352)
       References: This issue is a regression of: Bug #81759,
       Bug #23544301.

     * Adding a [tcp] or [shm] section to the global
       configuration file for a cluster with multiple data nodes
       caused default TCP connections to be lost to the node
       using the single section. (Bug #89627, Bug #27532407)

     * Removed a memory leak in the configuration file parser.
       (Bug #89392, Bug #27440614)

     * Fixed a number of implicit-fallthrough warnings, warnings
       raised by uninitialized values, and other warnings
       encountered when compiling NDB with GCC 7.2.0. (Bug
       #89254, Bug #89255, Bug #89258, Bug #89259, Bug #89270,
       Bug #27390714, Bug #27390745, Bug #27390684, Bug
       #27390816, Bug #27396662)
       References: See also: Bug #88136, Bug #26990244.

     * Node connection states were not always reported correctly
       by ClusterMgr immediately after reporting a
       disconnection. (Bug #89121, Bug #27349285)

     * As a result of the reuse of code intended for send
       threads when performing an assist send, all of the local
       release send buffers were released to the global pool,
       which caused the intended level of the local send buffer
       pool to be ignored. Now send threads and assisting worker
       threads follow their own policies for maintaining their
       local buffer pools. (Bug #89119, Bug #27349118)

     * When the PGMAN block seized a new Page_request record
       using seizeLast, its return value was not checked, which
       could cause access to invalid memory. (Bug #89009, Bug
       #27303191)

     * TCROLLBACKREP signals were not handled correctly by the
       DBTC kernel block. (Bug #89004, Bug #27302734)

     * When sending priority A signals, we now ensure that the
       number of pending signals is explicitly initialized. (Bug
       #88986, Bug #27294856)

     * The internal function ha_ndbcluster::unpack_record() did
       not perform proper error handling. (Bug #88587, Bug
       #27150980)

     * CHECKSUM is not supported for NDB tables, but this was
       not not reflected in the CHECKSUM column of the
       INFORMATION_SCHEMA.TABLES table, which could potentially
       assume a random value in such cases. Now the value of
       this column is always set to NULL for NDB tables, just as
       it is for InnoDB tables. (Bug #88552, Bug #27143813)

     * Removed a memory leak detected when running ndb_mgm -e
       "CLUSTERLOG ...". (Bug #88517, Bug #27128846)

     * When terminating, ndb_config did not release all memory
       which it had used. (Bug #88515, Bug #27128398)

     * ndb_restore did not free memory properly before exiting.
       (Bug #88514, Bug #27128361)

     * In certain circumstances where multiple Ndb objects were
       being used in parallel from an API node, the block number
       extracted from a block reference in DBLQH was the same as
       that of a SUMA block even though the request was coming
       from an API node. Due to this ambiguity, DBLQH mistook
       the request from the API node for a request from a SUMA
       block and failed. This is fixed by checking node IDs
       before checking block numbers. (Bug #88441, Bug
       #27130570)

     * A join entirely within the materialized part of a
       semi-join was not pushed even if it could have been. In
       addition, EXPLAIN provided no information about why the
       join was not pushed. (Bug #88224, Bug #27022925)
       References: See also: Bug #27067538.

     * All known compiler warnings raised by -Werror when
       building the NDB source code have been fixed. (Bug
       #88136, Bug #26990244)

     * When the duplicate weedout algorithm was used for
       evaluating a semi-join, the result had missing rows. (Bug
       #88117, Bug #26984919)
       References: See also: Bug #87992, Bug #26926666.

     * NDB did not compile with GCC 7. (Bug #88011, Bug
       #26933472)

     * A table used in a loose scan could be used as a child in
       a pushed join query, leading to possibly incorrect
       results. (Bug #87992, Bug #26926666)

     * When representing a materialized semi-join in the query
       plan, the MySQL Optimizer inserted extra QEP_TAB and
       JOIN_TAB objects to represent access to the materialized
       subquery result. The join pushdown analyzer did not
       properly set up its internal data structures for these,
       leaving them uninitialized instead. This meant that later
       usage of any item objects referencing the materialized
       semi-join accessed an initialized tableno column when
       accessing a 64-bit tableno bitmask, possibly referring to
       a point beyond its end, leading to an unplanned shutdown
       of the SQL node. (Bug #87971, Bug #26919289)

     * In some cases, a SCAN_FRAGCONF signal was received after
       a SCAN_FRAGREQ with a close flag had already been sent,
       clearing the timer. When this occurred, the next
       SCAN_FRAGREF to arrive caused time tracking to fail. Now
       in such cases, a check for a cleared timer is performed
       prior to processing the SCAN_FRAGREF message. (Bug
       #87942, Bug #26908347)

     * While deleting an element in Dbacc, or moving it during
       hash table expansion or reduction, the method used
       (getLastAndRemove()) could return a reference to a
       removed element on a released page, which could later be
       referenced from the functions calling it. This was due to
       a change brought about by the implementation of dynamic
       index memory in NDB 7.6.2; previously, the page had
       always belonged to a single Dbacc instance, so accessing
       it was safe. This was no longer the case following the
       change; a page released in Dbacc could be placed directly
       into the global page pool where any other thread could
       then allocate it.
       Now we make sure that newly released pages in Dbacc are
       kept within the current Dbacc instance and not given over
       directly to the global page pool. In addition, the
       reference to a released page has been removed; the
       affected internal method now returns the last element by
       value, rather than by reference. (Bug #87932, Bug
       #26906640)
       References: See also: Bug #87987, Bug #26925595.

     * When creating a table with a nonexistent conflict
       detection function, NDB returned an improper error
       message. (Bug #87628, Bug #26730019)

     * ndb_top failed to build with the error "HAVE_NCURSESW_H"
       is not defined. (Bug #87035, Bug #26429281)

     * In a MySQL Cluster with one MySQL Server configured to
       write a binary log failure occurred when creating and
       using an NDB table with non-stored generated columns. The
       problem arose only when the product was built with
       debugging support. (Bug #86084, Bug #25957586)

     * It was possible to create or alter a STORAGE MEMORY table
       using a nonexistent tablespace without any error
       resulting. Such an operation now fails with Error 3510
       ER_TABLESPACE_MISSING_WITH_NAME, as intended. (Bug
       #82116, Bug #23744378)

     * ndb_restore --print_data --hex did not print trailing 0s
       of LONGVARBINARY values. (Bug #65560, Bug #14198580)

     * When the internal function
       ha_ndbcluster::copy_fk_for_offline_alter() checked
       dependent objects on a table from which it was supposed
       to drop a foreign key, it did not perform any filtering
       for foreign keys, making it possible for it to attempt
       retrieval of an index or trigger instead, leading to a
       spurious Error 723 (No such table).

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

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql