Quantcast
Channel: MySQL Forums - Announcements
Viewing all 1041 articles
Browse latest View live

MySQL Cluster 8.0.16-dmr has been released (no replies)

$
0
0
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.16-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.16 (2019-04-25, Development Milestone)

   MySQL NDB Cluster 8.0.16 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
(http://dev.mysql.com/doc/refman/8.0/en/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.16 (see Changes in MySQL 8.0.16 (2019-04-25,
   General Availability)
(http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-16.html)).

     * Deprecation and Removal Notes

     * SQL Syntax Notes

     * Functionality Added or Changed

     * Bugs Fixed

Deprecation and Removal Notes

     * Incompatible Change: Distribution of privileges amongst
       MySQL servers connected to NDB Cluster, as implemented in
       NDB 7.6 and earlier, does not function in NDB 8.0, and
       most code supporting these has now been removed. When a
       mysqld detects such tables in NDB, it creates shadow
       tables local to itself using the InnoDB storage engine;
       these shadow tables are created on each MySQL server
       connected to an NDB cluster. Privilege tables using the
       NDB storage engine are not employed for access control;
       once all connected MySQL servers are upgraded, the
       privilege tables in NDB can be removed safely using
       ndb_drop_table.
       For compatibility reasons, ndb_restore
       --restore-privilege-tables can still be used to restore
       distributed privilege tables present in a backup taken
       from a previous release of NDB Cluster to a cluster
       running NDB 8.0. These tables are handled as described in
       the preceeding paragraph.
       For additional information regarding upgrades from
       previous NDB Cluster release series to NDB 8.0, see
       Upgrading and Downgrading NDB Cluster
(http://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-upgrade-downgrade.html).

SQL Syntax Notes

     * Incompatible Change: For consistency with InnoDB, the NDB
       storage engine now uses a generated constraint name if
       the CONSTRAINT symbol clause is not specified, or the
       CONSTRAINT keyword is specified without a symbol. In
       previous NDB releases, NDB used the FOREIGN KEY
       index_name value.
       This change described above may introduce
       incompatibilities for applications that depend on the
       previous foreign key constraint naming behavior. (Bug
       #29173134)

Functionality Added or Changed


     * Allocation of resources in the transaction corrdinator
       (see The DBTC Block
(http://dev.mysql.com/doc/ndb-internals/en/ndb-internals-kernel-blocks-dbtc.html))
       is now performed using dynamic memory pools. This means
       that resource allocation determined by data node
       configuration parameters such as those discussed in
       Transaction parameters
(http://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-ndbd-definition.html#mysql-cluster-transaction-parameters)
       and Transaction temporary storage
(http://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-ndbd-definition.html#mysql-cluster-transaction-temporary-storage)
       is now limited so as not to exceed the total
       resources available to the transaction coordinator.
       As part of this work, several new data node parameters
       controlling transactional resources in DBTC, listed here,
       have also been added. For more information about these
       new parameters, see Transaction resource allocation
       parameters
(http://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-ndbd-definition.html#mysql-cluster-transaction-resource-allocation).
       (Bug #29164271, Bug #29194843)
       References: See also: Bug #29131828.

     * NDB backups can now be performed in a parallel fashion on
       individual data nodes using multiple local data managers
       (LDMs). (Previously, backups were done in parallel across
       data nodes, but were always serial within data node
       processes.) No special syntax is required for the START
       BACKUP command in the ndb_mgm client to enable this
       feature, but all data nodes must be using multiple LDMs.
       This means that data nodes must be running ndbmtd and
       they must be configured to use multiple LDMs prior to
       taking the backup (see Multi-Threading Configuration
       Parameters (ndbmtd)
(http://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-ndbd-definition.html#mysql-cluster-ndbd-definition-ndbmtd-parameters)).
       ndb_restore also now detects such a backup and
       automatically attempts to restore it in parallel. It is
       also possible to restore backups taken in parallel to a
       previous version of NDB Cluster by slightly modifying the
       usual restore procedure.
       For more information about taking and restoring NDB
       Cluster backups that were created using parallelism on
       the data nodes, see Taking an NDB with Parallel Data
       Nodes
(http://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-backup-parallel-data-nodes.html),
       and Restoring from a backup taken in parallel
(http://dev.mysql.com/doc/refman/8.0/en/ndb-restore-parallel-data-node-backup.html).
       (Bug #28563639, Bug #28993400)

     * The compile-cluster script included in the NDB source
       distribution no longer supports in-source builds.

     * Building with CMake3 is now supported by the
       compile-cluster script included in the NDB source
       distribution.

     * NDB now implements a metadata change monitor thread for
       detecting changes made to metadata for data objects such
       as tables, tablespaces, and log file groups with the
       MySQL data dictionary. This thread runs in the
       background, checking every 60 seconds for inconsistencies
       between the NDB dictionary and the MySQL data dictionary.
       The monitor polling interval can be adjusted by setting
       the value of the ndb_metadata_check_interval system
       variable, and can be disabled altogether by setting
       ndb_metadata_check to OFF. The number of times that
       inconsistencies have been detected since mysqld was last
       started is shown as the status variable,
       Ndb_metadata_detected_count.

     * Condition pushdown is no longer limited to predicate
       terms referring to column values from the same table to
       which the condition was being pushed; column values from
       tables earlier in the query plan can now also be referred
       to from pushed conditions. This lets the data nodes
       filter out more rows (in parallel), leaving less work to
       be performed by a single mysqld process, which is
       expected to provide significant improvements in query
       performance.
       For more information, see Engine Condition Pushdown
       Optimization
(http://dev.mysql.com/doc/refman/8.0/en/condition-pushdown-optimization.html).

Bugs Fixed

     * Important Change; NDB Disk Data: mysqldump terminated
       unexpectedly when attempting to dump NDB disk data
       tables. The underlying reason for this was that mysqldump
       expected to find information relating to undo log buffers
       in the EXTRA column of the INFORMATION_SCHEMA.FILES table
       but this information had been removed in NDB 8.0.13. This
       information is now restored to the EXTRA column. (Bug
       #28800252)

     * Important Change: When restoring to a cluster using data
       node IDs different from those in the original cluster,
       ndb_restore tried to open files corresponding to node ID
       0. To keep this from happening, the --nodeid and
       --backupid options---neither of which has a default
       value---are both now explicitly required when invoking
       ndb_restore. (Bug #28813708)

     * Important Change: Starting with this release, the default
       value of the ndb_log_bin system variable is now FALSE.
       (Bug #27135706)

     * Packaging; MySQL NDB ClusterJ: libndbclient was missing
       from builds on some platforms. (Bug #28997603)

     * NDB Disk Data: When a log file group had more than 18
       undo logs, it was not possible to restart the cluster.
       (Bug #251155785)
       References: See also: Bug #28922609.

     * NDB Disk Data: Concurrent CREATE TABLE statements using
       tablespaces caused deadlocks between metadata locks. This
       occurred when Ndb_metadata_change_monitor acquired
       exclusive metadata locks on tablespaces and logfile
       groups after detecting metadata changes, due to the fact
       that each exclusive metadata lock in turn acquired a
       global schema lock. This fix attempts to solve that issue
       by downgrading the locks taken by
       Ndb_metadata_change_monitor to MDL_SHARED_READ. (Bug
       #29175268)
       References: See also: Bug #29394407.

     * NDB Disk Data: The error message returned when validation
       of MaxNoOfOpenFiles in relation to InitialNoOfOpenFiles
       failed has been improved to make the nature of the
       problem clearer to users. (Bug #28943749)

     * NDB Disk Data: Schema distribution of ALTER TABLESPACE
       and ALTER LOGFILE GROUP statements failed on a
       participant MySQL server if the referenced tablespace or
       log file group did not exist in its data dictionary. Now
       in such cases, the effects of the statement are
       distributed successfully regardless of any initial
       mismatch between MySQL servers. (Bug #28866336)

     * NDB Disk Data: Repeated execution of ALTER TABLESPACE ...
       ADD DATAFILE against the same tablespace caused data
       nodes to hang and left them, after being killed manually,
       unable to restart. (Bug #22605467)

     * NDB Replication: A DROP DATABASE operation involving
       certain very large tables could lead to an unplanned
       shutdown of the cluster. (Bug #28855062)

     * NDB Replication: When writes on the master---done in such
       a way that multiple changes affecting BLOB column values
       belonging to the same primary key were part of the same
       epoch---were replicated to the slave, Error 1022 occurred
       due to constraint violations in the NDB$BLOB_id_part
       table. (Bug #28746560)

     * NDB Cluster APIs: NDB now identifies short-lived
       transactions not needing the reduction of lock contention
       provided by NdbBlob::close() and no longer invokes this
       method in cases (such as when autocommit is enabled) in
       which unlocking merely causes extra work and round trips
       to be performed prior to committing or aborting the
       transaction. (Bug #29305592)
       References: See also: Bug #49190, Bug #11757181.

     * NDB Cluster APIs: When the most recently failed operation
       was released, the pointer to it held by NdbTransaction
       became invalid and when accessed led to failure of the
       NDB API application. (Bug #29275244)

     * NDB Cluster APIs: When the NDB kernel's SUMA block sends
       a TE_ALTER event, it does not keep track of when all
       fragments of the event are sent. When NDB receives the
       event, it buffers the fragments, and processes the event
       when all fragments have arrived. An issue could possibly
       arise for very large table definitions, when the time
       between transmission and reception could span multiple
       epochs; during this time, SUMA could send a
       SUB_GCP_COMPLETE_REP signal to indicate that it has sent
       all data for an epoch, even though in this case that is
       not entirely true since there may be fragments of a
       TE_ALTER event still waiting on the data node to be sent.
       Reception of the SUB_GCP_COMPLETE_REP leads to closing
       the buffers for that epoch. Thus, when TE_ALTER finally
       arrives, NDB assumes that it is a duplicate from an
       earlier epoch, and silently discards it.
       We fix the problem by making sure that the SUMA kernel
       block never sends a SUB_GCP_COMPLETE_REP for any epoch in
       which there are unsent fragments for a SUB_TABLE_DATA
       signal.
       This issue could have an impact on NDB API applications
       making use of TE_ALTER events. (SQL nodes do not make any
       use of TE_ALTER events and so they and applications using
       them were not affected.) (Bug #28836474)

     * When a pushed join executing in the DBSPJ block had to
       store correlation IDs during query execution, memory for
       these was allocated for the lifetime of the entire query
       execution, even though these specific correlation IDs are
       required only when producing the most recent batch in the
       result set. Subsequent batches require additional
       correlation IDs to be stored and allocated; thus, if the
       query took sufficiently long to complete, this led to
       exhaustion of query memory (error 20008). Now in such
       cases, memory is allocated only for the lifetime of the
       current result batch, and is freed and made available for
       re-use following completion of the batch. (Bug #29336777)
       References: See also: Bug #26995027.

     * When comparing or hashing a fixed-length string that used
       a NO_PAD collation, any trailing padding characters
       (typically spaces) were sent to the hashing and
       comparison functions such that they became significant,
       even though they were not supposed to be. Now any such
       trailing spaces are trimmed from a fixed-length string
       whenever a NO_PAD collation is specified.
       Note
       Since NO_PAD collations were introduced as part of
       UCA-9.0 collations in MySQL 8.0, there should be no
       impact relating to this fix on upgrades to NDB 8.0 from
       previous GA releases of NDB Cluster.
       (Bug #29322313)

     * When a NOT IN or NOT BETWEEN predicate was evaluated as a
       pushed condition, NULL values were not eliminated by the
       condition as specified in the SQL standard. (Bug
       #29232744)
       References: See also: Bug #28672214.

     * Internally, NDB treats NULL as less than any other value,
       and predicates of the form column < value or column <=
       value are checked for possible nulls. Predicates of the
       form value > column or value >= column were not checked,
       which could lead to errors. Now in such cases, these
       predicates are rewritten so that the column comes first,
       so that they are also checked for the presence of NULL.
       (Bug #29231709)
       References: See also: Bug #92407, Bug #28643463.

     * After folding of constants was implemented in the MySQL
       Optimizer, a condition containing a DATE or DATETIME
       literal could no longer be pushed down by NDB. (Bug
       #29161281)

     * When a join condition made a comparison between a column
       of a temporal data type such as DATE or DATETIME and a
       constant of the same type, the predicate was pushed if
       the condition was expressed in the form column operator
       constant, but not when in inverted order (as constant
       inverse_operator column). (Bug #29058732)

     * When processing a pushed condition, NDB did not detect
       errors or warnings thrown when a literal value being
       compared was outside the range of the data type it was
       being compared with,and thus truncated. This could lead
       to excess or missing rows in the result. (Bug #29054626)

     * If an EQ_REF or REF key in the child of a pushed join
       referred to any columns of a table not a member of the
       pushed join, this table was not an NDB table (because its
       format was of nonnative endianness), and the data type of
       the column being joined on was stored in an
       endian-sensitive format, then the key generated was
       generated, likely resulting in the return of an (invalid)
       empty join result.
       Since only big endian platforms may store tables in
       nonnative (little endian) formats, this issue was
       expected only on such platforms, most notably SPARC, and
       not on x86 platforms. (Bug #29010641)

     * API and data nodes running NDB 7.6 and later could not
       use an existing parsed configuration from an earlier
       release series due to being overly strict with regard to
       having values defined for configuration parameters new to
       the later release, which placed a restriction on possible
       upgrade paths. Now NDB 7.6 and later are less strict
       about having all new parameters specified explicitly in
       the configuration which they are served, and use
       hard-coded default values in such cases. (Bug #28993400)

     * NDB 7.6 SQL nodes hung when trying to connect to an NDB
       8.0 cluster. (Bug #28985685)

     * The schema distribution data maintained in the NDB binary
       logging thread keeping track of the number of subscribers
       to the NDB schema table always allocated some memory
       structures for 256 data nodes regardless of the actual
       number of nodes. Now NDB allocates only as many of these
       structures as are actually needed. (Bug #28949523)

     * Added DUMP 406 (NdbfsDumpRequests) to provide NDB file
       system information to global checkpoint and local
       checkpoint stall reports in the node logs. (Bug
       #28922609)

     * When a joined table was eliminated early as not pushable,
       it could not be referred to in any subsequent join
       conditions from other tables without eliminating those
       conditions from consideration even if those conditions
       were otherwise pushable. (Bug #28898811)

     * When starting or restarting an SQL node and connecting to
       a cluster where NDB was already started, NDB reported
       Error 4009 Cluster Failure because it could not acquire a
       global schema lock. This was because the MySQL Server as
       part of initialization acquires exclusive metadata locks
       in order to modify internal data structures, and the
       ndbcluster plugin acquires the global schema lock. If the
       connection to NDB was not yet properly set up during
       mysqld initialization, mysqld received a warning from
       ndbcluster when the latter failed to acquire global
       schema lock, and printed it to the log file, causing an
       unexpected error in the log. This is fixed by not pushing
       any warnings to background threads when failure to
       acquire a global schema lock occurs and pushing the NDB
       error as a warning instead. (Bug #28898544)

     * A race condition between the DBACC and DBLQH kernel
       blocks occurred when different operations in a
       transaction on the same row were concurrently being
       prepared and aborted. This could result in DBTUP
       attempting to prepare an operation when a preceding
       operation had been aborted, which was unexpected and
       could thus lead to undefined behavior including potential
       data node failures. To solve this issue, DBACC and DBLQH
       now check that all dependencies are still valid before
       attempting to prepare an operation.
       Note
       This fix also supersedes a previous one made for a
       related issue which was originally reported as Bug
       #28500861.
       (Bug #28893633)

     * Where a data node was restarted after a configuration
       change whose result was a decrease in the sum of
       MaxNoOfTables, MaxNoOfOrderedIndexes, and
       MaxNoOfUniqueHashIndexes, it sometimes failed with a
       misleading error message which suggested both a temporary
       error and a bug, neither of which was the case.
       The failure itself is expected, being due to the fact
       that there is at least one table object with an ID
       greater than the (new) sum of the parameters just
       mentioned, and that this table cannot be restored since
       the maximum value for the ID allowed is limited by that
       sum. The error message has been changed to reflect this,
       and now indicates that this is a permanent error due to a
       problem configuration. (Bug #28884880)

     * The ndbinfo.cpustat table reported inaccurate information
       regarding send threads. (Bug #28884157)

     * Execution of an LCP_COMPLETE_REP signal from the master
       while the LCP status was IDLE led to an assertion. (Bug
       #28871889)

     * NDB now provides on-the-fly .frm file translation during
       discovery of tables created in versions of the software
       that did not support the MySQL Data Dictionary.
       Previously, such translation of tables that had old-style
       metadata was supported only during schema synchronization
       during MySQL server startup, but not subsequently, which
       led to errors when NDB tables having old-style metadata,
       created by ndb_restore and other such tools after mysqld
       had been started, were accessed using SHOW CREATE TABLE
       or SELECT; these tables were usable only after restarting
       mysqld. With this fix, the restart is no longer required.
       (Bug #28841009)

     * An in-place upgrade to an NDB 8.0 release from an earlier
       relase did not remove .ndb files, even though these are
       no longer used in NDB 8.0. (Bug #28832816)

     * Removed storage/ndb/demos and the demonstration scripts
       and support files it contained from the source tree.
       These were obsolete and unmaintained, and did not
       function with any current version of NDB Cluster.
       Also removed storage/ndb/include/newtonapi, which
       included files relating to an obsolete and unmaintained
       API not supported in any release of NDB Cluster, as well
       as references elsewhere to these files. (Bug #28808766)

     * There was no version compatibility table for NDB 8.x;
       this meant that API nodes running NDB 8.0.13 or 7.6.x
       could not connect to data nodes running NDB 8.0.14. This
       issue manifested itself for NDB API users as a failure in
       wait_until_ready(). (Bug #28776365)
       References: See also: Bug #18886034, Bug #18874849.

     * Issuing a STOP command in the ndb_mgm client caused
       ndbmtd processes which had recently been added to the
       cluster to hang in Phase 4 during shutdown. (Bug
       #28772867)

     * A fix for a previous issue disabled the usage of pushed
       conditions for lookup type (eq_ref) operations in pushed
       joins. It was thought at the time that not pushing a
       lookup condition would not have any measurable impact on
       performance, since only a single row could be eliminated
       if the condition failed. The solution implemented at that
       time did not take into account the possibility that, in a
       pushed join, a lookup operation could be a parent
       operation for other lookups, and even scan operations,
       which meant that eliminating a single row could actually
       result in an entire branch being eliminated in error.
       (Bug #28728603)
       References: This issue is a regression of: Bug #27397802.

     * When only the management server but no data nodes were
       started, RESTART ALL timed out and eventually failed.
       This was because, as part of a restart, ndb_mgmd starts a
       timer, sends a STOP_REQ signal to all the data nodes, and
       waits for all of them to reach node state SL_CMVMI. The
       issue arose becaue no STOP_REQ signals were ever sent,
       and thus no data nodes reached SL_CMVMI. This meant that
       the timer always expired, causing the restart to fail.
       (Bug #28728485, Bug #28698831)
       References: See also: Bug #11757421.

     * The pushability of a condition to NDB was limited in that
       all predicates joined by a logical AND within a given
       condition had to be pushable to NDB in order for the
       entire condition to be pushed. In some cases this
       severely restricted the pushability of conditions. This
       fix breaks up the condition into its components, and
       evaluates the pushability of each predicate; if some of
       the predicates cannot be pushed, they are returned as a
       remainder condition which can be evaluated by the MySQL
       server. (Bug #28728007)

     * Running ANALYZE TABLE on an NDB table with an index
       having longer than the supported maximum length caused
       data nodes to fail. (Bug #28714864)

     * It was possible in certain cases for nodes to hang during
       an initial restart. (Bug #28698831)
       References: See also: Bug #27622643.

     * When a condition was pushed to a storage engine, it was
       re-evaluated by the server, in spite of the fact that
       only rows matching the pushed condition should ever be
       returned to the server in such cases. (Bug #28672214)

     * In some cases, one and sometimes more data nodes
       underwent an unplanned shutdown while running
       ndb_restore. This occurred most often, but was not always
       restircted to, when restoring to a cluster having a
       different number of data nodes from the cluster on which
       the original backup had been taken.
       The root cause of this issue was exhaustion of the pool
       of SafeCounter objects, used by the DBDICT kernel block
       as part of executing schema transactions, and taken from
       a per-block-instance pool shared with protocols used for
       NDB event setup and subscription processing. The
       concurrency of event setup and subscription processing is
       such that the SafeCounter pool can be exhausted; event
       and subscription processing can handle pool exhaustion,
       but schema transaction processing could not, which could
       result in the node shutdown experienced during
       restoration.
       This problem is solved by giving DBDICT schema
       transactions an isolated pool of reserved SafeCounters
       which cannot be exhausted by concurrent NDB event
       activity. (Bug #28595915)

     * When a backup aborted due to buffer exhaustion,
       synchronization of the signal queues prior to the
       expected drop of triggers for insert, update, and delete
       operations resulted in abort signals being processed
       before the STOP_BACKUP phase could continue. The abort
       changed the backup status to ABORT_BACKUP_ORD, which led
       to an unplanned shutdown of the data node since resuming
       STOP_BACKUP requires that the state be STOP_BACKUP_REQ.
       Now the backup status is not set to STOP_BACKUP_REQ
       (requesting the backup to continue) until after signal
       queue synchronization is complete. (Bug #28563639)

     * The output of ndb_config --configinfo --xml --query-all
       now shows that configuration changes for the ThreadConfig
       and MaxNoOfExecutionThreads data node parameters require
       system initial restarts (restart="system"
       initial="true"). (Bug #28494286)

     * After a commit failed due to an error, mysqld shut down
       unexpectedly while trying to get the name of the table
       involved. This was due to an issue in the internal
       function ndbcluster_print_error(). (Bug #28435082)

     * API nodes should observe that a node is moving through
       SL_STOPPING phases (graceful stop) and stop using the
       node for new transactions, which minimizes potential
       disruption in the later phases of the node shutdown
       process. API nodes were only informed of node state
       changes via periodic heartbeat signals, and so might not
       be able to avoid interacting with the node shutting down.
       This generated unnecessary failures when the heartbeat
       interval was long. Now when a data node is being
       gracefully stopped, all API nodes are notified directly,
       allowing them to experience minimal disruption. (Bug
       #28380808)

     * ndb_config --diff-default failed when trying to read a
       parameter whose default value was the empty string ("").
       (Bug #27972537)

     * ndb_restore did not restore autoincrement values
       correctly when one or more staging tables were in use. As
       part of this fix, we also in such cases block applying of
       the SYSTAB_0 backup log, whose content continued to be
       applied directly based on the table ID, which could
       ovewrite the autoincrement values stored in SYSTAB_0 for
       unrelated tables. (Bug #27917769, Bug #27831990)
       References: See also: Bug #27832033.

     * ndb_restore employed a mechanism for restoring
       autoincrement values which was not atomic, and thus could
       yield incorrect autoincrement values being restored when
       multiple instances of ndb_restore were used in parallel.
       (Bug #27832033)
       References: See also: Bug #27917769, Bug #27831990.

     * Executing SELECT * FROM INFORMATION_SCHEMA.TABLES caused
       SQL nodes to restart in some cases. (Bug #27613173)

     * An NDB table having both a foreign key on another NDB
       table using ON DELETE CASCADE and one or more TEXT or
       BLOB columns leaked memory. (Bug #27484882)

     * When tables with BLOB columns were dropped and then
       re-created with a different number of BLOB columns the
       event definitions for monitoring table changes could
       become inconsistent in certain error situations involving
       communication errors when the expected cleanup of the
       corresponding events was not performed. In particular,
       when the new versions of the tables had more BLOB columns
       than the original tables, some events could be missing.
       (Bug #27072756)

     * When query memory was exhausted in the DBSPJ kernel block
       while storing correlation IDs for deferred operations,
       the query was aborted with error status 20000 Query
       aborted due to out of query memory. (Bug #26995027)
       References: See also: Bug #86537.

     * When running a cluster with 4 or more data nodes under
       very high loads, data nodes could sometimes fail with
       Error 899 Rowid already allocated. (Bug #25960230)

     * mysqld shut down unexpectedly when a purge of the binary
       log was requested before the server had completely
       started, and it was thus not yet ready to delete rows
       from the ndb_binlog_index table. Now when this occurs,
       requests for any needed purges of the ndb_binlog_index
       table are saved in a queue and held for execution when
       the server has completely started. (Bug #25817834)

     * MaxBufferedEpochs is used on data nodes to avoid
       excessive buffering of row changes due to lagging NDB
       event API subscribers; when epoch acjknowledgements from
       one or more subscribers lag by this number of epochs, an
       asynchronous disconnection is triggered, allowing the
       data node to release the buffer space used for
       subscriptions. Since this disconnection is asynchronous,
       it may be the case that it has not completed before
       additional new epochs are completed on the data node,
       resulting in new epochs not being able to seize GCP
       completion records, generating warnings such as those
       shown here:
    [ndbd] ERROR    -- c_gcp_list.seize() failed...

    ...

    [ndbd] WARNING  -- ACK wo/ gcp record...

       And leading to the following warning:
    Disconnecting node %u because it has exceeded MaxBufferedEpochs
    (100 > 100), epoch ....

       This fix performs the following modifications:

          + Modifies the size of the GCP completion record pool
            to ensure that there is always some extra headroom
            to account for the asynchronous nature of the
            disconnect processing previously described, thus
            avoiding c_gcp_list seize failures.

          + Modifies the wording of the MaxBufferedEpochs
            warning to avoid the contradictory phrase "100 >
            100".
       (Bug #20344149)

     * Asynchronous disconnection of mysqld from the cluster
       caused any subsequent attempt to start an NDB API
       transaction to fail. If this occurred during a bulk
       delete operation, the SQL layer called
       HA::end_bulk_delete(), whose implementation by
       ha_ndbcluster assumed that a transaction had been
       started, and could fail if this was not the case. This
       problem is fixed by checking that the transaction pointer
       used by this method is set before referencing it. (Bug
       #20116393)

     * Removed warnings raised when compiling NDB with Clang 6.
       (Bug #93634, Bug #29112560)

     * When executing the redo log in debug mode it was possible
       for a data node to fail when deallocating a row. (Bug
       #93273, Bug #28955797)

  Enjoy and thanks for the support!

  On Behalf of MySQL/ORACLE RE Team
  Sreedhar S 

MySQL Community Server 5.7.26 has been released (no replies)

$
0
0

Dear MySQL users,

MySQL Server 5.7.26, a new version of the popular Open Source Database
Management System, has been released. MySQL 5.7.26 is recommended for
use on production systems.

For an overview of what's new in MySQL 5.7, please see

http://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html

For information on installing MySQL 5.7.26 on new servers, please see
the MySQL installation documentation at

  http://dev.mysql.com/doc/refman/5.7/en/installing.html

MySQL Server 5.7.26 is available in source and binary form for a number
of platforms from our download pages at

  http://dev.mysql.com/downloads/mysql/

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

  http://dev.mysql.com/downloads/repo/

Windows packages are available via the Installer for Windows or .ZIP
(no-install) packages for more advanced needs. The point and click
configuration wizards and all MySQL products are available in the
unified Installer for Windows:

  http://dev.mysql.com/downloads/installer/

5.7.26 also comes with a web installer as an alternative to the full
installer.

The web installer doesn't come bundled with any actual products and
instead relies on download-on-demand to fetch only the products you
choose to install. This makes the initial download much smaller but
increases install time as the individual products will need to be
downloaded.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:

  http://bugs.mysql.com/report.php

The following link lists the changes in the MySQL 5.7 since the release
of MySQL 5.7.25. It may also be viewed online at

http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-26.html

Enjoy!


==============================================================================

Changes in MySQL 5.7.26 (2019-04-25, General Availability)

   Beginning with MySQL 5.7.26, Oracle no longer provides binaries for
   SUSE 11.

     * Security Notes

     * Bugs Fixed

Security Notes


     * The linked OpenSSL library for the MySQL Commercial
       Server has been updated to version 1.0.2r. Issues fixed in the
       new OpenSSL version are described at
       http://www.openssl.org/news/vulnerabilities.html.  This change
       does not affect the Oracle-produced MySQL Community build of
       MySQL Server, which uses the yaSSL library instead. (Bug
       #28988091)

Bugs Fixed


     * Important Note: The libevent library included with the
       MySQL Server was upgraded to version 2.1.8. (Bug #28207237, Bug
       #29041505, Bug #29055011)

     * InnoDB: Optimized InnoDB internal temporary tables did
       not support in-place UPDATE operations, which caused the number
       of delete-marked records to increase continuously.  The large
       number of delete-marked records could cause longer than expected
       query execution times. (Bug #29207450)

     * InnoDB: The base column information for a generated
       column was not stored. (Bug #29021730)

     * InnoDB: Assertion code related to the innodb_flush_method
       O_DIRECT_NO_FSYNC setting was no longer valid due to a recent
       modification to that setting. Assertion code was revised. (Bug
       #29007731) References: See also: Bug #27309336.

     * InnoDB: Memory leaks discovered in the innochecksum
       utility were removed. (Bug #28917614, Bug #93164)

     * InnoDB: A DDL operation that followed a failed attempt to
       create an index on a virtual column resulted in an assertion
       failure. (Bug #28825718)

     * InnoDB: A Linux AIO handler function failed to check if
       completed I/O events succeeded. Thanks to Wei Zhao for the
       contribution. (Bug #27850600, Bug #90402)

     * InnoDB: A function called by a CREATE TABLE thread
       attempted to access a table object after it was freed by a
       background thread.  Thanks to Yan Huang for the patch. (Bug
       #27373959, Bug #89126)

     * InnoDB: Two sessions concurrently executing an INSERT ...
       ON DUPLICATE KEY UPDATE operation generated a deadlock.  During
       partial rollback of a tuple, another session could update it. The
       fix for this bug reverts fixes for Bug #11758237, Bug #17604730,
       and Bug #20040791. (Bug #25966845)

     * InnoDB: When the method used to access a joined table was
       const, InnoDB attempted to unlock the matching row multiple
       times. (Bug #20939184)

     * InnoDB: The INDEX_LENGTH value in
       INFORMATION_SCHEMA.TABLES was not updated when adding an index.
       (Bug #19811005)

     * Partitioning: An AUTO_INCREMENT key added to a
       partitioned table by an ALTER TABLE statement using
       ALGORITHM=INPLACE restarted on each partition. (Bug #92241, Bug
       #28573894)

     * Replication: If the WAIT_FOR_EXECUTED_GTID_SET() function
       was used with a timeout value including a fractional part (for
       example, 1.5), an error in the casting logic meant that the
       timeout was rounded down to the nearest whole second, and to zero
       for values less than 1 second (for example, 0.1). The casting
       logic has now been corrected so that the timeout value is applied
       as originally specified with no rounding. Thanks to Dirkjan
       Bussink for the contribution. (Bug #29324564, Bug #94247)

     * Replication: Depending on the value of
       group_replication_exit_state_action, the behavior of members
       exiting a group was not consistent. To harmonize the behavior of
       members exiting the group regardless of the error scenario, now
       when a member with group_replication_exit_state_action=READ_ONLY
       exits the group unintentionally, the super_read_only mode that
       the member had when started is restored. This makes the behavior
       consistent with that of a member with
       group_replication_exit_state_action=ABORT_SERVER. (Bug #28971639,
       Bug #28526591)

     * Replication: Whenever you use
       group_replication_allow_local_disjoint_gtids_join, which is
       deprecated, a log message is added. (Bug #28971624)

     * Replication: On overloaded servers there was a
       possibility that when a member joined the group, the
       VIEW_CHANGE_LOG_EVENT event which marks that point was not logged
       in the correct place. This could lead to errors in the data
       transfer to the newly joining server and data divergence. Now,
       the VIEW_CHANGE_LOG_EVENT event is logged in the correct place in
       the binary log. In addition, warnings are logged about the delay
       in logging the event. (Bug #28971594)

     * Replication: If an applier thread was stopped while it
       was in the process of opening a table, no error was set, which
       could result in a segmentation fault or assertion depending on
       the build type. Error handling is now correctly activated in this
       situation. (Bug #28864557)

     * Replication: With GTIDs in use on the server, the master
       info log on a replication slave was being synchronized every time
       the master skipped a transaction using the auto-skip function.
       The process ends with a dummy heartbeat which is sent to the
       slave and caused a forced flush to the log, and this could have a
       large cumulative impact on the write load on the slave. The same
       issue could occur in a circular replication topology with events
       that originated from the same server and were therefore ignored,
       which were also handled by the slave with a forced flush to the
       log. The slave handling code has now been changed to remove the
       forced flush for heartbeat events and for ignored events received
       through circular replication, so that the master info log is only
       synchronized when appropriate (for example, when a CHANGE MASTER
       statement is issued, or the binary log is rotated). (Bug
       #28815555, Bug #85158)

     * Replication: In a replication group configured in
       single-primary mode (group_replication_single_primary_mode=ON,
       which is the default), if severe network delays affected the
       group, it was possible for the primary and the secondaries to
       reach different decisions on a transaction, which could lead to
       divergence in the gtid_executed sets on the members. The issue
       has now been fixed. (Bug #28768550, Bug #28966455, Bug #92690)

     * Replication: GRANT statements that were written to the
       binary log were logged incorrectly in some cases, which could
       result in a GRANT statement that executed successfully on the
       master causing an error on the replication slave. (Bug #28643405,
       Bug #29155451, Bug #93750)

     * Replication: If a storage engine has the capability to
       log in STATEMENT format but not in ROW format, when binlog_format
       is set to STATEMENT, an unsafe SQL statement should be logged and
       a warning message should be written to the error log. However,
       such statements were instead not executed and an error message
       was written to the error log, which is the correct behavior when
       binlog_format is set to MIXED or ROW. The issue has now been
       corrected so that unsafe statements are logged with a warning as
       expected when binlog_format is set to STATEMENT. (Bug #28429993,
       Bug #73936)

     * Microsoft Windows: Validity testing for the
       named_pipe_full_access_group system variable did not account for
       NULL values. (Bug #29256690)

     * The authentication_ldap_simple plugin could enforce
       authentication incorrectly. (Bug #29637712)
    
     * On the Fedora 29 platform, the compat-openssl10-devel
       build dependency was changed to openssl-devel. (Bug #29278747)

     * If CMake finds a libtirpc library that is too old to work
       with MySQL, it tries to use Sun RPC from glibc instead.  (Bug
       #29240701)

     * With the --users option, mysqlpump wrote CREATE USER and
       GRANT statements to the output, but too late to apply to the
       other objects created by the dump. Consequently, restoring the
       dump file created the user accounts too late to apply to other
       objects created by the file.  mysqlpump now writes user accounts
       to the dump file before other objects. (Bug #29023216)

     * A damaged mysql.user table could cause a server exit.
       (Bug #28986737)

     * The CMake check for tirpc headers now falls back to using
       pkgconfig, to enable finding the headers on more Linux platforms.
       This requires that pkgconfig be installed.  (Bug #28970313, Bug
       #93341, Bug #28997093)

     * An attempt to access a null pointer could occur during
       prepared statement execution. (Bug #28692136)

     * The Aborted_connects status variable was not incremented
       for unsuccessful connection attempts, if connections were managed
       by the thread_pool plugin. (Bug #28490126)

     * mysqladmin shutdown did not wait for mysqld to shut down.
       (Bug #28466137, Bug #91803) References: This issue is a
       regression of: Bug #25364806.

     * Repeated invocations of stored procedures which executed
       queries undergoing short-circuit evaluation were not always
       handled correctly. (Bug #28379655)

     * Keyring migration should require only read access to the
       source keyring, but failed unless the user had write access. (Bug
       #28339014)

     * If a user performing a keyring migration did not have
       write access to the keyring file, the migration failed but
       reported success in its final error log message. (Bug #28330922)

     * During FLUSH STATUS execution, the Performance Schema
       unnecessarily aggregated session status to global status, causing
       double counts for some status variables. (Bug #28291258, Bug
       #91541)

     * Some status variable values could temporarily increase
       before returning to their original value. (Bug #27839644, Bug
       #90351)

     * Executing ALTER INSTANCE ROTATE INNODB MASTER KEY and
       migrating keys from the keyring_file plugin to the
       keyring_encrypted_file plugin could make encrypted tables
       unusable. (Bug #27760952)

     * The binary file for the udf_example user-defined function
       was omitted from binary distributions. (Bug #26115002, Bug
       #29178542)

     * When the server was started with the --skip-name-resolve
       option, spurious warnings could be written to the error log about
       ignoring accounts with a host name part of localhost. (The
       accounts in fact were used and not ignored.) (Bug #23329861, Bug
       #81441)

     * Installing and uninstalling a plugin concurrently with
       client connection activity could cause a server exit.  (Bug
       #22980441)

     * Some queries involving complex joins leaked file handles.
       (Bug #90902, Bug #28039829)

On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/NET 8.0.16 has been released (no replies)

$
0
0

Dear MySQL users,
 
MySQL Connector/NET 8.0.16 is the fourth version to support
Entity Framework Core 2.1 and the sixth general availability release
of MySQL Connector/NET to add support for the new X DevAPI, which
enables application developers to write code that combines the
strengths of the relational and document models using a modern,
NoSQL-like syntax that does not assume previous experience writing traditional SQL.
 
To learn more about how to write applications using the X DevAPI, see
http://dev.mysql.com/doc/x-devapi-userguide/en/index.html. For more
information about how the X DevAPI is implemented in Connector/NET, see
http://dev.mysql.com/doc/dev/connector-net. NuGet packages provide functionality at a project level. To get the
full set of features available in Connector/NET such as availability
in the GAC, integration with Visual Studio's Entity Framework Designer
and integration with MySQL for Visual Studio, installation through
the MySQL Installer or the stand-alone MSI is required.
 
Please note that the X DevAPI requires at least MySQL Server version
8.0 or higher with the X Plugin enabled. For general documentation
about how to get started using MySQL as a document store, see
http://dev.mysql.com/doc/refman/8.0/en/document-store.html.
 
To download MySQL Connector/NET 8.0.16, see
http://dev.mysql.com/downloads/connector/net/
 
Installation instructions can be found at
https://dev.mysql.com/doc/connector-net/en/connector-net-installation.html


Changes in MySQL Connector/NET 8.0.16 ( 2019-04-25, General Availability )


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Document Store: Support was added for the -> operator to
       be used with JSON document paths in relational
       statements. For example:
table.Select().Where("additionalinfo->$.hobbies = 'Reading'");

       (Bug #29347028)

     * Document Store: The performance for statements that are
       executed repeatedly (two or more times) is improved by
       using server-side prepared statements for the second and
       subsequent executions. This happens internally;
       applications need take no action and API behavior should
       be the same as previously. For statements that change,
       repreparation occurs as needed. Providing different data
       values or different OFFSET or LIMIT clause values does
       not count as a change. Instead, the new values are passed
       to a new invocation of the previously prepared statement.

     * Document Store: Connector/NET now supports the ability to
       send connection attributes (key-value pairs that
       application programs can pass to the server at connect
       time). Connector/NET defines a default set of attributes,
       which can be disabled or enabled. In addition,
       applications can specify attributes to be passed together
       with the default attributes. The default behavior is to
       send the default attribute set.
       The aggregate size of connection attribute data sent by a
       client is limited by the value of the
       performance_schema_session_connect_attrs_size server
       variable. The total size of the data package should be
       less than the value of the server variable. For X DevAPI
       applications, specify connection attributes as a
       connection-attributes parameter in a connection string.
       For usage information, see Options for X Protocol Only
       ( http://dev.mysql.com/doc/connector-net/en/connector-net-8-0-connection-options.html#connector-net-8-0-connection-options-xprotocol ).
       For general information about connection attributes, see
       Performance Schema Connection Attribute Tables
       ( http://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html ).

     * Document Store: Connector/NET now has improved support
       for resetting sessions in connection pools. Returning a
       session to the pool drops session-related objects such as
       temporary tables, session variables, and transactions,
       but the connection remains open and authenticated so that
       reauthentication is not required when the session is
       reused.

     * Connector/NET applications now can use certificates in
       PEM format to validate SSL connections in addition to the
       native PFX format (see Tutorial: Using SSL with Connector/NET
       ( http://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html )). 
       PEM support applies to both classic MySQL protocol 
       and X Protocol connections.

Bugs Fixed


     * Document Store: All methods able to execute a statement
       were unable to execute the same statement a second time.
       Now, the values and binding parameters remain available
       after the method is executed and string parameters are no
       longer converted to numbers. Both changes enable a
       follow-on execution to reuse the previous parameters.
       (Bug #29249857, Bug #29304767)

     * An exception was generated when the MySqlDbType
       enumeration was given an explicit value and then passed
       as a parameter to the MySqlCommand.Prepare method. (Bug
       #28834253, Bug #92912)

     * Validation was added to ensure that when a column is of
       type TIME and the value is 00:00:00, it takes the value
       instead of setting NULL. (Bug #28383726, Bug #91752)


On Behalf of MySQL Release Engineering Team,
Surabhi Bhat

MySQL Connector/C++ 8.0.16 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Connector/C++ 8.0.16 is a new release version of the MySQL
Connector/C++ 8.0 series.

Connector/C++ 8.0 can be used to access MySQL implementing Document
Store or in a traditional way, using SQL queries. It allows writing
both C++ and plain C applications using X DevAPI and X DevAPI for C.
It also supports the legacy API of Connector/C++ 1.1 based on JDBC4.

To learn more about how to write applications using X DevAPI, see
"X DevAPI User Guide" at

https://dev.mysql.com/doc/x-devapi-userguide/en/

See also "X DevAPI Reference" at

https://dev.mysql.com/doc/dev/connector-cpp/devapi_ref.html

and "X DevAPI for C Reference" at

https://dev.mysql.com/doc/dev/connector-cpp/xapi_ref.html

For generic information on using Connector/C++ 8.0, see

https://dev.mysql.com/doc/dev/connector-cpp/

For general documentation about how to get started using MySQL
as a document store, see

http://dev.mysql.com/doc/refman/8.0/en/document-store.html

To download MySQL Connector/C++ 8.0.16, see the "Generally Available (GA)
Releases" tab at

https://dev.mysql.com/downloads/connector/cpp/


Changes in MySQL Connector/C++ 8.0.16 (2019-04-25, General Availability)

     * Character Set Support

     * Compilation Notes

     * Configuration Notes

     * Packaging Notes

     * Prepared Statement Notes

     * X DevAPI Notes

     * X DevAPI for C Notes

     * Functionality Added or Changed

     * Bugs Fixed

Character Set Support

     * Connector/C++ supports all Unicode character sets for
       connections to servers for MySQL 8.0.14 and higher, but
       previously had Unicode support limited to the utf8
       character set for servers older than MySQL 8.0.14.
       Connector/C++ now supports all Unicode character sets for
       older servers, including utf8mb4, utf16, utf16le, utf32,
       and ucs2. (Bug #28966038)

Compilation Notes

     * Thanks to Daniël van Eeden, who contributed a code change
       to use the stdbool.h header file rather than a bool
       typedef. (Bug #29167120, Bug #93803)

     * Thanks to Daniël van Eeden, who contributed a code change
       to use lib instead of lib64 on 64-bit FreeBSD.
       (Bug #29167098, Bug #93801)

     * Previously, for Connector/C++ applications that used the
       legacy JDBC API, source files had to use this set of
       #include directives:

         #include <jdbc/mysql_driver.h>
         #include <jdbc/mysql_connection.h>
         #include <jdbc/cppconn/*.h>

       Now a single #include directive suffices:

         #include <mysql/jdbc.h>

Configuration Notes

     * Thanks to Daniël van Eeden, who contributed a code change
       to build the documentation as part of the all target if
       Connector/C++ is configured with -DWITH_DOC=ON.
       (Bug #29167107, Bug #93802)

     * Previously, for Connector/C++ 8.0 applications that use
       the legacy JDBC connector, only static linking to the
       MySQL client library was supported. The
       MYSQLCLIENT_STATIC_LINKING and MYSQLCLIENT_STATIC_BINDING
       CMake options are now available to permit dynamic
       linking. By default, MYSQLCLIENT_STATIC_LINKING is
       enabled, to use static linking to the client library.
       Disable this option to use dynamic linking. If
       MYSQLCLIENT_STATIC_LINKING is enabled,
       MYSQLCLIENT_STATIC_BINDING may also be used. If
       MYSQLCLIENT_STATIC_BINDING is enabled (the default),
       Connector/C++ is linked to the shared MySQL client
       library. Otherwise, the shared MySQL client library is
       loaded and mapped at runtime.

     * Connector/C++ 8.0 configuration now requires a minimum
       CMake version of 3.0.

Packaging Notes

     * Connector/C++ debug packages are now available for Linux
       and Windows, The packages enable symbolic debugging using
       tools such as gdb on Linux and windbg on Windows, as well
       as obtaining symbolic information about connector code
       locations from application crash dumps. Use of the debug
       packages requires that you have installed and configured
       the Connector/C++ sources.
       (Bug #29117059, Bug #93645, Bug #26128420, Bug #86415)

     * For improved GitHub friendliness, Community Connector/C++
       source distributions now include a CONTRIBUTING.md
       markdown file. CONTRIBUTING.md contains guidelines
       intended to be helpful to contributors.

     * The Protobuf sources bundled in the Connector/C++ source
       tree were updated to Protobuf 3.6.1. (Only the parts
       needed for Connector/C++ are included, to reduce
       compilation time.)

Prepared Statement Notes

     * For X DevAPI and X DevAPI for C, performance for
       statements that are executed repeatedly (two or more
       times) is improved by using server-side prepared
       statements for the second and subsequent executions. This
       happens internally; applications need take no action and
       API behavior should be the same as previously. For
       statements that change, repreparation occurs as needed.
       Providing different data values or different OFFSET or
       LIMIT clause values does not count as a change. Instead,
       the new values are passed to a new invocation of the
       previously prepared statement.

X DevAPI Notes

     * For X DevAPI and X DevAPI for C applications,
       Connector/C++ now supports the ability to send connection
       attributes (key-value pairs that application programs can
       pass to the server at connect time). Connector/C++
       defines a default set of attributes, which can be
       disabled or enabled. In addition, applications can
       specify attributes to be passed in addition to the
       default attributes. The default behavior is to send the
       default attribute set.

          + For X DevAPI applications, specify connection
            attributes as a connection-attributes parameter in a
            connection string, or by using a
            SessionOption::CONNECTION_ATTRIBUTES option for the
            SessionSettings constructor.
            The connection-attributes parameter value must be
            empty (the same as specifying true), a Boolean value
            (true or false to enable or disable the default
            attribute set), or a list or zero or more key=value
            specifiers separated by commas (to be sent in
            addition to the default attribute set). Within a
            list, a missing key value evaluates as an empty
            string. Examples:

              "mysqlx://user@host?connection-attributes"
              "mysqlx://user@host?connection-attributes=true"
              "mysqlx://user@host?connection-attributes=false"
              "mysqlx://user@host?connection-attributes=[attr1=val1,attr2,attr3=]"
              "mysqlx://user@host?connection-attributes=[]"

            The SessionOption::CONNECTION_ATTRIBUTES option
            value must be a Boolean value (true or false to
            enable or disable the default attribute set), or a
            DbDoc or JSON string (to be sent in addition to the
            default attribute set). Examples:

                Session sess(..., SessionOption::CONNECTION_ATTRIBUTES, false);
                Session sess(..., SessionOption::CONNECTION_ATTRIBUTES, attr_doc );
                Session sess(..., SessionOption::CONNECTION_ATTRIBUTES,
                  R"({ "attr1": "val1", "attr2" : "val2" })"
                );

          + For X DevAPI for C applications, specify connection
            attributes using the OPT_CONNECTION_ATTRIBUTES()
            macro for the mysqlx_session_option_set() function.
            The option value must be null (to disable the
            default attribute set) or a JSON string (to be sent
            in addition to the default attribute set). Examples:

              mysqlx_session_option_set(opts, OPT_CONNECTION_ATTRIBUTES(nullptr));
              mysqlx_session_option_set(opts,
                OPT_CONNECTION_ATTRIBUTES("{ \"attr1\": \"val1\", \"attr2\" : \"val2\" }")
              );

       Application-defined attribute names cannot begin with _
       because such names are reserved for internal attributes.
       If connection attributes are not specified in a valid
       way, an error occurs and the connection attempt fails.
       For general information about connection attributes, see
       Performance Schema Connection Attribute Tables
(http://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html).

X DevAPI for C Notes

     * The signatures for several X DevAPI for C functions have
       been changed to enable better error information to be
       returned to applications by means of a mysqlx_error_t
       handle. These functions are affected:

         mysqlx_client_t*
         mysqlx_get_client_from_url(
           const char *conn_string,
           const char *client_opts,
           mysqlx_error_t **error
         )

         mysqlx_client_t*
         mysqlx_get_client_from_options(
           mysqlx_session_options_t *opt,
           mysqlx_error_t **error
         )

         mysqlx_session_t*
         mysqlx_get_session(
           const char *host, int port,
           const char *user, const char *password,
           const char *database,
           mysqlx_error_t **error
         )

         mysqlx_session_t*
         mysqlx_get_session_from_url(
           const char *conn_string,
           mysqlx_error_t **error
         )

         mysqlx_session_t*
         mysqlx_get_session_from_options(
           mysqlx_session_options_t *opt,
           mysqlx_error_t **error
         )

         mysqlx_session_t *
         mysqlx_get_session_from_client(
           mysqlx_client_t *cli,
           mysqlx_error_t **error
         )

       The final argument in each case is a mysqlx_error_t
       handle into which Connector/C++ stores error information.
       If the argument is a null pointer, Connector/C++ ignores
       it. The application is responsible to free non-null
       handles by passing them to mysqlx_free().
       The signature for mysqlx_free() has also been changed to
       accept a void * argument so that it can accept a handle
       of any type. Consequently, other type-specific free
       functions, such as mysqlx_free_options(), are no longer
       needed and are deprecated.
       The preceding modifications change the Connector/C++ API,
       which has these implications:

          + The modifications change the ABI, so the ABI version
            is changed from 1 to 2. This changes the connector
            library names.

          + X DevAPI for C applications to be compiled against
            the new API must be modified to use the new function
            signatures. (X DevAPI applications should build
            without change.)

          + Applications built against the old ABI will not run
            with the new connector library.

          + The API change and ABI version change do not affect
            the legacy JDBC interface, so library names for the
            legacy JDBC connector library do not change and
            legacy application need not be changed.

          + It is possible to install both the old and new
            libraries. However, installers may remove the old
            libraries, so they may need to be re-added manually
            after installing the new libraries.

Functionality Added or Changed

     * Thanks to Daniël van Eeden, who contributed documentation
       for the mysqlx_column_get_collation() function and
       various corrections in the developer documentation.
       (Bug #29123114, Bug #93665, Bug #29115285, Bug #93640,
        Bug #29122490, Bug #93663)

     * Connector/C++ now has improved support for resetting
       sessions in connection pools. Returning a session to the
       pool drops session-related objects such as temporary
       tables, session variables, and transactions, but the
       connection remains open and authenticated so that
       reauthentication is not required when the session is
       reused.

Bugs Fixed

     * Previously, for the SSL_MODE_VERIFY_IDENTITY connection
       option, Connector/C++ checked whether the host name that
       it used for connecting matched the Common Name value in
       the certificate but not the Subject Alternative Name
       value. Now, if used with OpenSSL 1.0.2 or higher,
       Connector/C++ checks whether the host name matches either
       the Subject Alternative Name value or the Common Name
       value in the server certificate.
       (Bug #28964313, Bug #93301)

     * After repeated calls, mysqlx_get_session_from_client()
       could hang. (Bug #28587287)

     * The SessionSettings/ClientSettings iterator
       implementation was incomplete. (Bug #28502574)

Enjoy and thanks for the support!

On Behalf of Oracle/MySQL Release Engineering Team,
Kent Boortz

MySQL Community Server 5.6.44 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Server 5.6.44, a new version of the popular Open Source
Database Management System, has been released. MySQL 5.6.44 is
recommended for use on production systems.

For an overview of what's new in MySQL 5.6, please see

  http://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.html

     Starting with 5.6.11, Microsoft Windows packages for MySQL 5.6
     are available both as a "full" installer and as a "web" installer.
     The full installer is significantly larger and comes bundled with
     the latest software releases available. This bundle makes it easy
     to download and configure a full server and development suite.

     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.

For information on installing MySQL 5.6.44 on new servers or upgrading
to MySQL 5.6.44 from previous MySQL releases, please see

  http://dev.mysql.com/doc/refman/5.6/en/installing.html

MySQL Server 5.6.44, is available in source and binary form for a number of
platforms from our download pages at

  http://dev.mysql.com/downloads/mysql

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc:

  http://bugs.mysql.com/report.php

The following link lists the changes in the MySQL 5.6 since
the release of MySQL 5.6.43. It may also be viewed
online at

  http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-44.html

Enjoy!

Changes in MySQL 5.6.44 (2019-04-25, General Availability)

   Beginning with MySQL 5.6.44, Oracle no longer provides
   binaries for SUSE 11.

Security Notes


     * The linked OpenSSL library for the MySQL Commercial
       Server has been updated to version 1.0.2r. Issues fixed
       in the new OpenSSL version are described at
       http://www.openssl.org/news/vulnerabilities.html.
       This change does not affect the Oracle-produced MySQL
       Community build of MySQL Server, which uses the yaSSL
       library instead. (Bug #28988091)

Bugs Fixed


     * Important Note: The libevent library included with the
       MySQL Server was upgraded to version 2.1.8. (Bug
       #28207237, Bug #29041505, Bug #29055011)

     * InnoDB: The INDEX_LENGTH value in
       INFORMATION_SCHEMA.TABLES was not updated when adding an
       index. (Bug #19811005)

     * Partitioning: An AUTO_INCREMENT key added to a
       partitioned table by an ALTER TABLE statement using
       ALGORITHM=INPLACE restarted on each partition. (Bug
       #92241, Bug #28573894)

     * Replication: If an applier thread was stopped while it
       was in the process of opening a table, no error was set,
       which could result in a segmentation fault or assertion
       depending on the build type. Error handling is now
       correctly activated in this situation. (Bug #28864557)

     * Replication: If a storage engine has the capability to
       log in STATEMENT format but not in ROW format, when
       binlog_format is set to STATEMENT, an unsafe SQL
       statement should be logged and a warning message should
       be written to the error log. However, such statements
       were instead not executed and an error message was
       written to the error log, which is the correct behavior
       when binlog_format is set to MIXED or ROW. The issue has
       now been corrected so that unsafe statements are logged
       with a warning as expected when binlog_format is set to
       STATEMENT. (Bug #28429993, Bug #73936)

     * Microsoft Windows: Validity testing for the
       named_pipe_full_access_group system variable did not
       account for NULL values. (Bug #29256690)

     * MySQL 5.6 did not build with maintainer mode enabled with
       GCC 7. (Bug #29048768)

     * A damaged mysql.user table could cause a server exit.
       (Bug #28986737)

     * mysqladmin shutdown did not wait for mysqld to shut down.
       (Bug #28466137, Bug #91803)
       References: This issue is a regression of: Bug #25364806.

     * Some status variable values could temporarily increase
       before returning to their original value. (Bug #27839644,
       Bug #90351)

     * The binary file for the udf_example user-defined function
       was omitted from binary distributions. (Bug #26115002,
       Bug #29178542)

     * Compiling the InnoDB memcached plugin did not work on
       some platforms where MySQL was configured using
       -DWITH_LIBEVENT=system, for libevent version 2.0 or
       higher. (Bug #80073, Bug #22573379, Bug #23567441)


On Behalf of MySQL/ORACLE RE Team
Gipson Pulla

MySQL Connector/Node.js 8.0.16 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Connector/Node.js is a new Node.js driver for use with the X
DevAPI. This release, v8.0.16, is a maintenance release of the
MySQL Connector/Node.js 8.0 series.

The X DevAPI enables application developers to write code that combines
the strengths of the relational and document models using a modern,
NoSQL-like syntax that does not assume previous experience writing
traditional SQL.

MySQL Connector/Node.js can be downloaded through npm (see
https://www.npmjs.com/package/@mysql/xdevapi for details) or from
https://dev.mysql.com/downloads/connector/nodejs/.

To learn more about how to write applications using the X DevAPI, see
http://dev.mysql.com/doc/x-devapi-userguide/en/. For more information
about how the X DevAPI is implemented in MySQL Connector/Node.js, and
its usage, see http://dev.mysql.com/doc/dev/connector-nodejs/.

Please note that the X DevAPI requires at least MySQL Server version
8.0 or higher with the X Plugin enabled. For general documentation
about how to get started using MySQL as a document store, see
http://dev.mysql.com/doc/refman/8.0/en/document-store.html.


Changes in MySQL Connector/Node.js 8.0.16 (2019-04-25, General
Availability)

X DevAPI Notes


     * Connector/Node.js now supports connection attributes as
       key-value pairs that application programs can pass to the
       server. Connector/Node.js defines a default set of
       attributes, which can be disabled or enabled. In addition
       to these default attributes, applications can also
       provide their own set of custom attributes.

          + Specify connection attributes as a
            connection-attributes parameter in a connection
            string, or by using the connectionAttributes
            property using either a plain JavaScript object or
            JSON notation to specify the connection
            configuration options.
            The connection-attributes parameter value must be
            either empty (the same as specifying true), a
            Boolean value (true or false to enable or disable
            the default attribute set), or a list of zero or
            more key=value pair specifiers separated by commas
            (to be sent in addition to the default attribute
            set). Within a list, a missing key value evaluates
            as NULL.
            The connectionAttributes property allows passing
            user-defined attributes to the application using
            either a plain JavaScript object or JSON notation to
            specify the connection configuration options. Define
            each attribute in a nested object under
            connectionAttributes where the property names
            matches the attribute names, and the property values
            match the attribute values. Unlike
            connection-attributes, and while using plain
            JavaScript objects or JSON notation, if the
            connectionAttributes object contains duplicate keys
            then no error is thrown and the last value specified
            for a duplicate object key is chosen as the
            effective attribute value.
            Examples:
            Not sending the default client-defined attributes:
mysqlx.getSession('{ "user": "root", "connectionAttributes": false }')

mysqlx.getSession('mysqlx://root@localhost?connection-attributes=false
')

mysqlx.getSession({ user: 'root', connectionAttributes: { foo: 'bar',
baz: 'qux', quux: '' } })
mysqlx.getSession('mysqlx://root@localhost?connection-attributes=[foo=
bar,baz=qux,quux]')


       Application-defined attribute names cannot begin with _
       because such names are reserved for internal attributes.
       If connection attributes are not specified in a valid
       way, an error occurs and the connection attempt fails.
       For general information about connection attributes, see
       Performance Schema Connection Attribute Tables
(http://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html).

Functionality Added or Changed


     * Optimized the reuse of existing connections through
       client.getSession() by only re-authenticating if
       required.

     * For X DevAPI, performance for statements that are
       executed repeatedly (two or more times) is improved by
       using server-side prepared statements for the second and
       subsequent executions. This happens internally;
       applications need take no action and API behavior should
       be the same as previously. For statements that change,
       repreparation occurs as needed. Providing different data
       values or different offset() or limit() values does not
       count as a change. Instead, the new values are passed to
       a new invocation of the previously prepared statement.

Bugs Fixed


     * Idle pooled connections to MySQL Server were not reused,
       and instead new connections had to be recreated. (Bug
       #29436892)

     * Executing client.close() would not close all associated
       connections in the connection pool. (Bug #29428477)

     * connectTimeout instead of maxIdleTime determined whether
       idle connections in the connection pool were reused
       rather than creating new connections. (Bug #29427271)

     * Released connections from the connection pool were not
       being reset and reused; instead new connections were
       being made. (Bug #29392088)

     * Date values in documents were converted to empty objects
       when inserted into a collection. (Bug #29179767, Bug
       #93839)

     * A queueTimeout value other than 0 (infinite) prevented
       the acquisition of old released connections from the
       connection pool. (Bug #29179372, Bug #93841)

On Behalf of MySQL/ORACLE RE Team
Gipson Pulla

MySQL Connector/ODBC 8.0.16 has been released (no replies)

$
0
0

Dear MySQL users,

MySQL Connector/ODBC 8.0.16 is a new version in the MySQL Connector/ODBC 8.0 series,
the ODBC driver for the MySQL Server.

The available downloads include both a Unicode driver and an ANSI driver based on the
same modern codebase. Please select the driver type you need based on the type of your
application - Unicode or ANSI. Server-side prepared statements are enabled by default.
It is suitable for use with the latest MySQL server version 8.0.

This release of the MySQL ODBC driver is conforming to the ODBC 3.8 specification.
It contains implementations of key 3.8 features, including self-identification
as a ODBC 3.8 driver, streaming of output parameters (supported for binary types
only), and support of the SQL_ATTR_RESET_CONNECTION connection attribute (for the
Unicode driver only).

The release is now available in source and binary form for a number of platforms
from our download pages at

https://dev.mysql.com/downloads/connector/odbc/

For information on installing, please see the documentation at

https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html

Enjoy and thanks for the support!

==================================================

Changes in MySQL Connector/ODBC 8.0.16 (2019-04-25, General Availability)

Bugs Fixed


     * Connector/ODBC 8.0 is now built with OpenSSL 1.0.2R.
       Issues fixed in the new OpenSSL version are described at
       http://www.openssl.org/news/vulnerabilities.html. (Bug
       #29538143)

     * An exception was emitted when fetching contents of a
       BLOB/TEXT records after executing a statement as a
       server-side prepared statement with a bound parameter.
       The workaround is not using parameters or specifying
       NO_SSPS=1 in the connection string; this allows the
       driver to fetch the data. (Bug #29282638, Bug #29512548,
       Bug #28790708, Bug #93895, Bug #94545, Bug #92078)

On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison

MySQL Connector/J 8.0.16 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Connector/J Version 8.0.16 is the GA release of the 8.0
branch of MySQL Connector/J. It is suitable for use with MySQL Server
versions 8.0, 5.7 and 5.6. It supports the Java Database
Connectivity (JDBC) 4.2 API, and implements the X DevAPI.

This release includes the following new features and changes, also
described in more detail on

https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-16.html

As always, we recommend that you check the "CHANGES" file in the
download archive to be aware of changes in behavior that might affect
your application.

To download MySQL Connector/J 8.0.16 GA, see the "Generally Available
(GA) Releases" tab at http://dev.mysql.com/downloads/connector/j/

Enjoy!

-----------------------------------------------------------------------

Changes in MySQL Connector/J 8.0.16 (2019-04-25, General Availability)

Functionality Added or Changed

     * X DevAPI: Added BigInteger, BigDecimal, and Character as
       supported classes whose instances can be passed to a
       Table as Expression instances. Also made the error
       message clearer when applications try to pass instances
       of unsupported classes. (Bug #25650912)

     * X DevAPI: Connector/J now supports the ability to send
       connection attributes
(http://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html)
       (key-value pairs that application programs can pass to the
       server at connect time) for X Protocol connections.
       Connector/J defines a default set of attributes
(http://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html#performance-schema-connection-attributes-cj),
       which can be disabled or enabled. In addition,
       applications can specify attributes to be
       passed in addition to the default attributes. The default
       behavior is to send the default attribute set. See the
       description for the new configuration property
       xdevapi.connect-attributes for details.
       Note
       The aggregate size of connection attribute data sent by a
       client is limited by the value of the
       performance_schema_session_connect_attrs_size server
       variable. The total size of the data package should be
       less than the value of the server variable, or the
       attribute data will be truncated.

     * X DevAPI: When using X DevAPI, performance for statements
       that are executed repeatedly (two or more times) is
       improved by using server-side prepared statements for the
       second and subsequent executions. See Working with
       Prepared Statements
(http://dev.mysql.com/doc/x-devapi-userguide/en/working-with-prepared-statements.html)
        in the X DevAPI User Guide
       (http://dev.mysql.com/doc/x-devapi-userguide/en/) for details.

     * The version number has been removed from the name of the
       Connector/J JAR archive within the RPM packages for
       Connector/J. That makes upgrading Connector/J with RPM
       packages easier. (Bug #29384853)

     * The collation utf8mb4_zh_0900_as_cs has been added to the
       CharsetMapping class. (Bug #29244101)

     * The following third-party libraries have been removed
       from the distribution bundles for Connector/J:

          + Google protobuf for Java (required for using X
            DevAPI and for building Connector/J from source)

          + C3P0 (required for building Connector/J from source)

          + JBoss common JDBC wrapper (required for building
            Connector/J from source)

          + Simple Logging Facade API (required for using the
            logging capabilities provided by the default
            implementation of org.slf4j.Logger.Slf4JLogger by
            Connector/J, and for building Connector/J from
            source)
       Users who need those libraries have to obtain them on
       their own. See Installing Connector/J from a Binary
       Distribution
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-binary-installation.html)
       and Installing from Source
(http://dev.mysql.com/doc/connector-j/8.0/en/connector-j-installing-source.html)
       for details.

Bugs Fixed


     * X DevAPI: The method unquoteWorkaround() has been removed
       from the ExprParser class, as the workaround is no longer
       needed, and it actually produced wrong results in some
       cases. (Bug #29257922)

     * X DevAPI: Connector/J threw an error when a JSON document
       contained only a field with an empty array as its value.
       With this fix, Connector/J now takes that as a valid JSON
       document. (Bug #28834959, Bug #92819)

     * getByte() calls failed on table columns of the
       BINARY data type. This was due to issues with string
       conversion, which has been corrected with this fix. (Bug
       #25650385)

     * X DevAPI: Any statements sent after a failed procedure
       call caused Connector/J to hang. This was because after
       the failed call, Connector/J was not aware that the
       result streamer had already been closed by the server.
       With this fix, an error is thrown when the procedure call
       fails, and the result streamer is nullified. (Bug
       #22038729)

     * X DevAPI: Unary negative and positive operators inside
       expressions were parsed wrongly as binary minus and plus
       operators. (Bug #21921956)

     * Because the SHOW PROCESSLIST
(http://dev.mysql.com/doc/refman/8.0/en/show-processlist.html)
        statement might cause the server to fail sometimes,
        Connector/J now avoids using the statement, but queries
        the performance scheme instead for the information it
        needs. (Bug #29329326)

     * Some unnecessary information has been removed from the
       Connector/J log. (Bug #29318273)

     * In the DatabaseMetaDataUsingInfoSchema interface, the
       getProcedureColumns() and getFunctionColumns() methods
       returned wrong results for the PRECISION column, and the
       getColumns() and getVersionColumns() methods returned
       wrong results for the COLUMN_SIZE column. The errors were
       due to the wrong handling of the temporal type precision
       by Connector/J, which has now been fixed. (Bug #29186870)

     * For an SSL connection, after a client disconnected from a
       server by calling Connection.close(), the TCP connection
       remained in the TIME_WAIT
(http://dev.mysql.com/doc/refman/8.0/en/can-not-connect-to-server.html)
       state on the server side. With this fix,
       the connection remains in the TIME_WAIT
(http://dev.mysql.com/doc/refman/8.0/en/can-not-connect-to-server.html)
       state on the client side instead, in most
       cases. (Bug #29054329, Bug #93590)

     * The function
       LoadBalancedConnectionProxy.getGlobalBlacklist() always
       returned an empty map, thus there was never a blacklist
       for load-balanced connections. (Bug #28860051, Bug
       #93007)

     * The redundant file, changelog.gz, has been removed from
       the Debian 9 package for Connector/J. The file repeated
       the contents of the CHANGES.gz file. (Bug #27786499)

     * Using getBytes() to retrieve TEXT data resulted in a
       NumberFormatException. With this fix, the proper
       exception (SQLDataException), is now thrown. (Bug
       #27784363)

     * A changeUser() call failed with a java.io.IOException
       when the configuration property enablePacketDebug was set
       to true for a connection. (Bug #25642021)

     * bindings.getBoolean() always returned false. It was due
       to a mishandling of data types, which has been corrected
       with this fix. (Bug #22931700)


Enjoy and thanks for the support!

On Behalf of MySQL/ORACLE RE Team
Sreedhar S 

MySQL Shell 8.0.16 for MySQL Server 8.0 and 5.7 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Shell 8.0.16 is a maintenance release of MySQL Shell 8.0 Series (a
component of the MySQL Server). The MySQL Shell is provided under
Oracle's dual-license.

MySQL Shell 8.0 is highly recommended for use with MySQL Server 8.0 and
5.7. Please upgrade to MySQL Shell 8.0.16.

MySQL Shell is an interactive JavaScript, Python and SQL console
interface, supporting development and administration for the MySQL
Server. It provides APIs implemented in JavaScript and Python that
enable you to work with MySQL InnoDB cluster and use MySQL as a document
store.

The AdminAPI enables you to work with MySQL InnoDB cluster, providing an
integrated solution for high availability and scalability using InnoDB
based MySQL databases, without requiring advanced MySQL expertise. For
more information about how to configure and work with MySQL InnoDB
cluster see

  https://dev.mysql.com/doc/refman/en/mysql-innodb-cluster-userguide.html

The X DevAPI enables you to create "schema-less" JSON document
collections and perform Create, Update, Read, Delete (CRUD) operations
on those collections from your favorite scripting language.  For more
information about how to use MySQL Shell and the MySQL Document Store
support see

  https://dev.mysql.com/doc/refman/en/document-store.html

For more information about the X DevAPI see

  https://dev.mysql.com/doc/x-devapi-userguide/en/

If you want to write applications that use the the CRUD based X DevAPI
you can also use the latest MySQL Connectors for your language of
choice. For more information about Connectors see

  https://dev.mysql.com/doc/index-connectors.html

For more information on the APIs provided with MySQL Shell see

  https://dev.mysql.com/doc/dev/mysqlsh-api-javascript/8.0/

and

  https://dev.mysql.com/doc/dev/mysqlsh-api-python/8.0/

Using MySQL Shell's SQL mode you can communicate with servers using the
legacy MySQL protocol. Additionally, MySQL Shell provides partial
compatibility with the mysql client by supporting many of the same
command line options.

For full documentation on MySQL Server, MySQL Shell and related topics,
see

  https://dev.mysql.com/doc/mysql-shell/8.0/en/

For more information about how to download MySQL Shell 8.0.16, see the
"Generally Available (GA) Releases" tab at

  http://dev.mysql.com/downloads/shell/

We welcome and appreciate your feedback and bug reports, see

  http://bugs.mysql.com/

Enjoy and thanks for the support!

Changes in MySQL Shell 8.0.16 (2019-04-25, General Availability)

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Important Change: Attempting to connect to an X Protocol
       port, 33060 by default, using the classic MySQL protocol resulted
       in the following error: ERROR 2013 (HY000): Lost connection to
       MySQL server at 'reading initial communication packet', system
       error: 0 This was because of differences in X Protocol and
       classic MySQL protocol clients expectations on how connections
       were initialized. Now, in such a situation the generated error
       message is ERROR 2007 (HY000): Protocol mismatch; server version
       = 11, client version = 10. If you encounter this error then you
       are probably trying to use the wrong port for the protocol your
       client is using.  As part of this improvement the
       mysqlx_enable_hello_notice system variable has been added, which
       controls messages sent to classic MySQL protocol clients that try
       to connect over X Protocol.  When enabled, clients which do not
       support X Protocol that attempt to connect to the server X
       Protocol port receive an error explaining they are using the
       wrong protocol. Set mysqlx_enable_hello_notice to false to permit
       clients which do not recognize the hello message to still
       connect.

     * MySQL Shell's upgrade checker utility can now check the
       configuration file (my.cnf or my.ini) for the server instance.
       The utility checks for any system variables that are defined in
       the configuration file but have been removed in the target MySQL
       Server release, and also for any system variables that are not
       defined in the configuration file and will have a different
       default value in the target MySQL Server release. For these
       checks, when you invoke checkForServerUpgrade(), you must provide
       the file path to the configuration file. If you omit the file
       path and the upgrade checker utility needs to run a check that
       requires the configuration file, that check fails with a message
       informing you that you must specify the file path. (Bug
       #27801824, Bug #29222179)

     * MySQL InnoDB cluster automatically and transparently
       manages the communication protocol versions of its members,
       whenever the cluster topology is changed using AdminAPI
       operations. An InnoDB cluster always uses the most recent
       communication protocol version that is supported by all instances
       that are part of the cluster or joining it.

          + When an instance is added to, removed from, or
            rejoins the cluster, or a rescan or reboot operation
            is carried out on the cluster, the communication
            protocol version is automatically set to a version
            supported by the instance that is now at the
            earliest MySQL Server version.

          + When you carry out a rolling upgrade by removing
            instances from the cluster, upgrading them, and
            adding them back into the cluster, the communication
            protocol version is automatically upgraded when the
            last remaining instance at the old MySQL Server
            version is removed from the cluster prior to its
            upgrade.
       To see the communication protocol version in use in an
       InnoDB cluster, use the Cluster.status() function with
       the 'extended' option enabled. The communication protocol
       version is returned in the 'GRProtocolVersion' field,
       provided that the cluster has quorum and no cluster
       members are unreachable.

     * MySQL Shell now has a framework and commands that you can
       use to set up and run reports to display live information from a
       MySQL server, such as status and performance information. Reports
       can be run once using the MySQL Shell \show command, or run then
       refreshed continuously in a MySQL Shell session using the \watch
       command. They can also be accessed as API functions in the
       shell.reports object.  The reporting facility supports both
       built-in reports and user-defined reports. User-defined reports
       can be created in the supported scripting languages JavaScript
       and Python, and can be run in any MySQL Shell mode (JavaScript,
       Python, or SQL), regardless of the language that the report was
       written in. Reports can be saved in a folder in the MySQL Shell
       configuration path and automatically loaded at startup. You can
       also create a report directly in the MySQL Shell prompt. You
       register a report to MySQL Shell using the shell.registerReport
       method to provide information about the report and the options
       and arguments that it supports.  For more information, see
       Reporting with MySQL Shell
 (http://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-reporting.html).

     * When running MySQL Shell in interactive mode, you can now
       execute an SQL statement without switching to SQL mode and back
       again afterwards. This function enables you to conveniently issue
       some SQL statements in the context of a longer AdminAPI workflow
       in JavaScript or Python mode.  Use the \sql command immediately
       followed by the SQL statement, for example:
\sql select * from sakila.actor limit 3;
       The SQL statement does not need any additional quoting, and the
       statement delimiter is optional. With this format, MySQL Shell
       does not switch mode as it would if you entered the \sql command.
       After the SQL statement has been executed, MySQL Shell remains in
       JavaScript or Python mode.
       You cannot use multiple line mode when you use the \sql command
       with a query to execute single SQL statements while another
       language is active. The command only accepts a single SQL query
       on a single line.

     * MySQL Shell history is now split per active language
       which the command was issued under. This means that your history
       now matches the active language, for example when you are running
       in JavaScript mode having issued \js, the history contains the
       previous JavaScript statements you issued, and when you issue
       \sql to change to SQL mode your history contains the previous SQL
       statements you issued. Similarly, now any history related
       commands such as \history clear or \history delete are performed
       on the history of the current active language. When you install
       this version, any existing MySQL Shell history files are
       duplicated to ensure that existing history is not lost.
       Subsequent operations are then added to the language specific
       history file.

     * The new autoRejoinTries option enables you to configure
       how many times an instance tries to rejoin a group after being
       expelled. In scenarios where network glitches happen but recover
       quickly, setting this option prevents you from having to manually
       add the expelled instance back to the group. The autoRejoinTries
       option accepts positive integer values between 0 and 2016 and the
       default value is 0, which means that instances do not try to
       automatically rejoin. Set the value to a valid integer to
       configure the number of attempts expelled instances should make
       to rejoin the group. You can pass the autoRejoinTries option to
       these AdminAPI operations:

          + dba.createCluster()

          + Cluster.addInstance()

          + Cluster.setOption()

          + Cluster.setInstanceOption()
       When you configure the autoRejoinTries option, it sets
       the group_replication_autorejoin_tries system variable.
       Passing the option to dba.createCluster(),
       Cluster.addInstance() or Cluster.setInstanceOption()
       configures the automatic rejoin for specific cluster
       instances. Passing the option to Cluster.setOption()
       configures the automatic rejoin for all cluster
       instances.
       For more information, see Responses to Failure Detection
       and Network Partitioning
 (http://dev.mysql.com/doc/refman/8.0/en/group-replication-responses-failure.html).

     * When resultFormat was set to json or json/raw, every
       result was being returned as a JSON document. This behavior was
       expected when JSON wrapping is off (in other words the --json
       command option was not used when starting MySQL Shell). Now, for
       consistency reasons when JSON wrapping is off and resultFormat is
       set to json or json/raw, every record is printed in a separate
       document and statistics and warnings are printed in plain text.
       For example if MySQL Shell is started without --json and
       resultFormat=json/raw:
mysqlsh-sql> SHOW DATABASES;
{"Database":"information_schema"}
{"Database":"mysql"}
{"Database":"performance_schema"}
{"Database":"sys"}
4 rows in set (0.0035 sec)

       If MySQL Shell is started with --json and with
       resultFormat=json/raw:
mysqlsh-sql> SHOW DATABASES;
{
    "hasData": true,
    "rows": [
        {
            "Database": "information_schema"
        },
        {
            "Database": "mysql"
        },
        {
            "Database": "performance_schema"
        },
        {
            "Database": "sys"
        }
    ],
    "executionTime": "0.0018 sec",
    "affectedRowCount": 0,
    "affectedItemsCount": 0,
    "warningCount": 0,
    "warningsCount": 0,
    "warnings": [],
    "info": "",
    "autoIncrementValue": 0
}


     * AdminAPI now reports information about the version of
       MySQL running on instances. This information is available from
       the following operations:

          + Cluster.status()

          + Cluster.describe()

          + Cluster.rescan()

       See Checking the MySQL Version on Instances
 (http://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-working-
 with-cluster.html#checking-version-on-instances) for
       more information.

Bugs Fixed


     * Removing an instance from a cluster when the instance to
       be removed had no user defined for the group_replication_recovery
       channel resulted in dropping users on the remaining instances of
       the cluster. (Bug #29617572)

     * MySQL Shell could be installed in an environment where
       Python was not present, but the application has a dependency on
       many standard Python modules, resulting in error messages at
       startup. The RPM and Debian packages for MySQL Shell now
       explicitly specify the dependency on Python. (Bug #29469201)

     * The MSI file that is used by Windows Installer to install
       MySQL Shell now adds the path to the application binary (mysqlsh)
       to the Windows PATH environment variable, so that the application
       can be started from a command prompt. (Bug #29457639)

     * In the instructions to build MySQL Shell from source (the
       INSTALL document), the required version of the optional V8
       dependency has been updated from 3.28.71.19 to 6.7.288.46. Thanks
       to Evgeniy Patlan for spotting this.  (Bug #29430049, Bug #94529)

     * The failoverConsistency option has been deprecated and a
       new option named consistency has been added, to make it more
       consistent with the target Group Replication
       group_replication_consistency system variable name. The MySQL
       Shell online documentation now also correctly describes all of
       the values you can assign to the consistency option. (Bug
       #29356599)

     * The dba.configureLocalInstance() operation would remove
       any section that did not start with mysqld from the provided
       option file. This could remove sections such as the client
       section from the option file. (Bug #29349014)

     * MySQL Shell's upgrade checker utility
       checkForServerUpgrade() could incorrectly report a schema
       inconsistency error for a table whose name included a special
       character such as a hyphen. (Bug #29346836, Bug #94303)

     * When an instance with X Plugin disabled was added to an
       InnoDB cluster, if the instance was later removed from the
       cluster using Cluster.removeInstance() the operation failed with
       LogicError "get_string(7): field is NULL".  This was a regression
       introduced by the fix for Bug#27677227. (Bug #29304183)

     * There was an inconsistency between the behavior of
       dba.checkInstanceConfiguration() and the commands to add
       instances to the cluster (dba.createCluster() and
       Cluster.addInstance()) regarding the localhost and loopback
       address validation. In particular, a simple error was printed by
       dba.checkInstanceConfiguration() but the execution of the
       operation continued showing that everything was correct at the
       end of the operation, while an error was issued and the execution
       stopped for dba.createCluster() and Cluster.addInstance().  As
       part of fixing this issue, it was decided that the existing
       localhost and loopback address validations are no longer needed
       and should be removed. In particular, whatever address is
       specified for report_host, even if it is localhost or the
       loopback address (127.0.0.1), should be allowed, because it was
       explicitly specified by the user to use it. (Bug #29279941)

     * The dba.rebootClusterFromCompleteOutage() operation was
       not preserving the existing Group Replication configurations
       previously set for the instances. In particular, the Group
       Replication local address and exit state action values were being
       changed. Now all settings are read at the time of rebooting the
       cluster. (Bug #29265869)

     * On Windows, MySQL Shell's upgrade checker utility
       checkForServerUpgrade() incorrectly reported a schema
       inconsistency error for partitioned tables. (Bug #29256562)

     * Using either Cluster.setOption() or
       Cluster.setInstanceOption() to set an option which only exists in
       MySQL 8.0 on an instance running MySQL 5.7 was not being caught
       correctly. (Bug #29246657)

     * On Debian-based platforms (such as Ubuntu), if the
       hostname resolved to 127.0.1.1 - which is the default on these
       platforms - it was not possible to create a cluster using the
       default settings. Now, in such situations a proper validation of
       the instance is performed before creating a cluster and adding
       instances to it. (Bug #29246110)

     * MySQL Shell stopped unexpectedly if Python code was
       running in interactive mode and threw exceptions from C++
       libraries. These exceptions are now caught and translated to
       Python's built-in RuntimeError exceptions. (Bug #29057116)

     * The dba.checkInstanceConfiguration() operation did not
       validate host restrictions for the account provided for cluster
       administration, for example if the account could actually connect
       to all of the instances in the cluster.  In particular, now an
       error is issued if the provided user account is only able to
       connect through localhost.  (Bug #29018457)

     * When a connection is specified using key-value pairs in
       MySQL Shell's shell.connect() method, the host name cannot be an
       empty string. MySQL Shell now handles this situation consistently
       and returns an error if the supplied host name is an empty
       string. (Bug #28899522)

     * InnoDB cluster configured auto_increment_increment and
       auto_increment_offset on instances for clusters running in
       multi-primary mode and consisting of up to 7 instances based on
       the logic described at InnoDB cluster and Auto-increment
 (http://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-working-with-
 cluster.html#mysql-innodb-cluster-auto-increment). But Group
       Replication permits groups to contain up to 9 members, and
       Cluster.addInstance() and Cluster.removeInstance() were not
       following the logic used for other operations. Now, InnoDB
       cluster uses the same logic for auto increment regardless of the
       operation used and correctly handles multi-primary clusters with
       more than 7 instances. (Bug #28812763)

     * MySQL Shell's JSON import utility can now accept input
       from FIFO special files (named pipes) when you invoke the utility
       using the util.importJSON function, so you can carry out large
       imports by this method without needing to put the data into a
       file. (Bug #28785527)

     * When you use the MySQL Shell command \help (or \h, or \?)
       with a search pattern to search for help on a specific subject,
       multiple help topic titles can match the pattern and be returned
       as a list, to be selected by entering the command again with an
       extended search pattern. With this system, it was possible for
       help topics with a single-word title to be inaccessible from such
       a list because there was nothing further to add to the search
       pattern. To avoid this situation, the handling of multiple
       matches has now been improved. If a topic title is found that
       matches the given search pattern exactly (case-sensitive in the
       event of multiple topic matches, and case-insensitive in the
       event of no case-sensitive matches), the topic is identified as
       the exact match and its help data is printed. The rest of the
       topics with pattern matches in their titles are listed in a "see
       also" section and can be selected by further pattern matching.
       (Bug #28393119)

     * MySQL Shell uses the host value of the provided
       connection parameters as the target hostname used for AdminAPI
       operations, namely to register the instance in the metadata (for
       the dba.createCluster() and cluster.addInstance() operations).
       However, the host used for the connection parameters might not
       match the hostname that is used or reported by Group Replication,
       which uses the value of the report_host system variable when it
       is defined (in other words it is not NULL), otherwise the value
       of hostname is used. Therefore, AdminAPI now follows the same
       logic to register the target instance in the metadata and as the
       default value for the group_replication_local_address variable on
       instances, instead of using the host value from the instance
       connection parameters. During this fix it was detected that when
       the report_host variable was set to empty, Group Replication uses
       an empty value for the host but AdminAPI (for example in commands
       such as dba.checkInstanceConfiguration(),
       dba.configureInstance(), dba.createCluster()) reports the
       hostname as the value used which is inconsistent with the value
       reported by Group Replication. An error is now issued by AdminAPI
       if an empty value is set for the report_host system variable.
       (Bug #28285389)

     * In the event that dba.createCluster() failed and a
       rollback was performed to remove the created replication
       (recovery) users, the account created at localhost and any of the
       ipWhitelist addresses were not being removed.  The fix ensures
       that the replication accounts are removed whenever a rollback
       related to dba.createCluster() is performed. This work was based
       on a code contribution from Bin Hong. (Bug #94182, Bug #29308037)

On Behalf of Oracle/MySQL Release Engineering Team,
Nawaz Nazeer Ahamed

MySQL Cluster 7.4.24 has been released (no replies)

$
0
0

Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.  This
storage engine provides:

  - In-Memory storage - Real-time performance
  - Transparent Auto-Sharding - Read & write scalability
  - Active-Active/Multi-Master geographic replication
  - 99.999% 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 7.4 makes significant advances in performance; operational
efficiency (such as enhanced reporting and faster restarts and upgrades)
and conflict detection and resolution for active-active replication
between MySQL Clusters.

MySQL Cluster 7.4.24 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/7.4/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 7.4.24 (5.6.44-ndb-7.4.24) (2019-04-26, General Availability)

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

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

   For an overview of changes made in MySQL NDB Cluster 7.4, see
   What is New in NDB Cluster 7.4
(http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-what-is-new-7-4.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 5.6
   through MySQL 5.6.44 (see Changes in MySQL 5.6.44 (2019-04-25,
   General Availability)
   (http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-44.html)).


Functionality Added or Changed


     * Building with CMake3 is now supported by the
       compile-cluster script included in the NDB source
       distribution.

Bugs Fixed


     * When a pushed join executing in the DBSPJ block had to
       store correlation IDs during query execution, memory for
       these was allocated for the lifetime of the entire query
       execution, even though these specific correlation IDs are
       required only when producing the most recent batch in the
       result set. Subsequent batches require additional
       correlation IDs to be stored and allocated; thus, if the
       query took sufficiently long to complete, this led to
       exhaustion of query memory (error 20008). Now in such
       cases, memory is allocated only for the lifetime of the
       current result batch, and is freed and made available for
       re-use following completion of the batch. (Bug #29336777)
       References: See also: Bug #26995027.

     * In some cases, one and sometimes more data nodes
       underwent an unplanned shutdown while running
       ndb_restore. This occurred most often, but was not always
       restircted to, when restoring to a cluster having a
       different number of data nodes from the cluster on which
       the original backup had been taken.
       The root cause of this issue was exhaustion of the pool
       of SafeCounter objects, used by the DBDICT kernel block
       as part of executing schema transactions, and taken from
       a per-block-instance pool shared with protocols used for
       NDB event setup and subscription processing. The
       concurrency of event setup and subscription processing is
       such that the SafeCounter pool can be exhausted; event
       and subscription processing can handle pool exhaustion,
       but schema transaction processing could not, which could
       result in the node shutdown experienced during
       restoration.
       This problem is solved by giving DBDICT schema
       transactions an isolated pool of reserved SafeCounters
       which cannot be exhausted by concurrent NDB event
       activity. (Bug #28595915)

     * ndb_restore did not restore autoincrement values
       correctly when one or more staging tables were in use. As
       part of this fix, we also in such cases block applying of
       the SYSTAB_0 backup log, whose content continued to be
       applied directly based on the table ID, which could
       ovewrite the autoincrement values stored in SYSTAB_0 for
       unrelated tables. (Bug #27917769, Bug #27831990)
       References: See also: Bug #27832033.

     * ndb_restore employed a mechanism for restoring
       autoincrement values which was not atomic, and thus could
       yield incorrect autoincrement values being restored when
       multiple instances of ndb_restore were used in parallel.
       (Bug #27832033)
       References: See also: Bug #27917769, Bug #27831990.

     * An NDB table having both a foreign key on another NDB
       table using ON DELETE CASCADE and one or more TEXT or
       BLOB columns leaked memory. (Bug #27484882)

     * When executing the redo log in debug mode it was possible
       for a data node to fail when deallocating a row. (Bug
       #93273, Bug #28955797)

On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison

MySQL Cluster 7.3.25 has been released (no replies)

$
0
0
Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.  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
  - 99.999% 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 7.3.25 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/7.3/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 7.3.25 (5.6.44-ndb-7.3.25) (2019-04-26, General Availability)

   MySQL NDB Cluster 7.3.25 is a new release of NDB Cluster, based on
   MySQL Server 5.6 and including features from version 7.3 of the NDB
   storage engine, as well as fixing a number of recently discovered
   bugs in previous NDB Cluster releases.

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

   For an overview of changes made in MySQL NDB Cluster 7.3, see What is
   New in NDB Cluster 7.3
   (http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-what-is-new-7-3.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 5.6 through MySQL 5.6.44
   (see Changes in MySQL 5.6.44 (2019-04-25, General Availability)
   (http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-44.html)).

Functionality Added or Changed


     * Building with CMake3 is now supported by the
       compile-cluster script included in the NDB source distribution.

Bugs Fixed


     * An NDB table having both a foreign key on another NDB
       table using ON DELETE CASCADE and one or more TEXT or BLOB
       columns leaked memory. (Bug #27484882)


Enjoy and thanks for the support!

On behalf of the MySQL Release Team,
Nawaz Nazeer Ahamed

MySQL Cluster 7.5.14 has been released (no replies)

$
0
0
Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.
This storage engine provides:

  - In-Memory storage - Real-time performance (with optional
    check pointing to disk)
  - Transparent Auto-Sharding - Read & write scalability
  - Active-Active/Multi-Master geographic replication

  - 99.999% 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 7.5.14 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/7.5/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 7.5.14 (5.7.26-ndb-7.5.14) (2019-04-26, General Availability)

   MySQL NDB Cluster 7.5.14 is a new release of MySQL NDB
   Cluster 7.5, based on MySQL Server 5.7 and including features
   in version 7.5 of the NDB
   (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html)
   storage engine, as well as fixing recently discovered bugs in
   previous NDB Cluster releases.

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

   For an overview of changes made in MySQL NDB Cluster 7.5, see
   What is New in NDB Cluster 7.5
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new-7-5.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 5.7
   through MySQL 5.7.26 (see Changes in MySQL 5.7.26 (2019-04-26, General Availability)
(http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-26.html)).

Bugs Fixed

     * NDB Disk Data: NDB did not validate MaxNoOfOpenFiles
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnoofopenfiles)
       in relation to InitialNoOfOpenFiles
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-initialnoofopenfiles)
       correctly, leading data nodes to fail with an error
       message that did not make the nature of the problem clear
       to users. (Bug #28943749)

     * NDB Disk Data: Repeated execution of ALTER TABLESPACE ...
       ADD DATAFILE
(http://dev.mysql.com/doc/refman/5.7/en/alter-tablespace.html)
       against the same tablespace caused data nodes to hang and
       left them, after being killed manually, unable to restart.
       (Bug #22605467)

     * NDB Cluster APIs: NDB now identifies short-lived
       transactions not needing the reduction of lock contention
       provided by NdbBlob::close()
       (http://dev.mysql.com/doc/ndbapi/en/ndb-ndbblob-close.html)
       and no longer invokes this method in cases (such as when
       autocommit is enabled) in which unlocking merely causes
       extra work and round trips to be performed prior to
       committing or aborting the transaction. (Bug #29305592)
       References: See also: Bug #49190, Bug #11757181.

     * NDB Cluster APIs: When the most recently failed operation
       was released, the pointer to it held by NdbTransaction
       (http://dev.mysql.com/doc/ndbapi/en/ndb-ndbtransaction.html)
       became invalid and when accessed led to failure of the NDB
       API application. (Bug #29275244)

     * When a pushed join executing in the DBSPJ block had to
       store correlation IDs during query execution, memory for
       these was allocated for the lifetime of the entire query
       execution, even though these specific correlation IDs are
       required only when producing the most recent batch in the
       result set. Subsequent batches require additional
       correlation IDs to be stored and allocated; thus, if the
       query took sufficiently long to complete, this led to
       exhaustion of query memory (error 20008). Now in such
       cases, memory is allocated only for the lifetime of the
       current result batch, and is freed and made available for
       re-use following completion of the batch. (Bug #29336777)
       References: See also: Bug #26995027.

     * Added DUMP 406 (NdbfsDumpRequests) to provide NDB file
       system information to global checkpoint and local
       checkpoint stall reports in the node logs. (Bug
       #28922609)

     * A race condition between the DBACC and DBLQH kernel
       blocks occurred when different operations in a
       transaction on the same row were concurrently being
       prepared and aborted. This could result in DBTUP
       attempting to prepare an operation when a preceding
       operation had been aborted, which was unexpected and
       could thus lead to undefined behavior including potential
       data node failures. To solve this issue, DBACC and DBLQH
       now check that all dependencies are still valid before
       attempting to prepare an operation.
       Note
       This fix also supersedes a previous one made for a
       related issue which was originally reported as Bug
       #28500861.
       (Bug #28893633)

     * The ndbinfo.cpustat
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbinfo-cpustat.html)
       table reported inaccurate information
       regarding send threads. (Bug #28884157)

     * In some cases, one and sometimes more data nodes
       underwent an unplanned shutdown while running
       ndb_restore. This occurred most often, but was not always
       restircted to, when restoring to a cluster having a
       different number of data nodes from the cluster on which
       the original backup had been taken.
       The root cause of this issue was exhaustion of the pool
       of SafeCounter objects, used by the DBDICT kernel block
       as part of executing schema transactions, and taken from
       a per-block-instance pool shared with protocols used for
       NDB event setup and subscription processing. The
       concurrency of event setup and subscription processing is
       such that the SafeCounter pool can be exhausted; event
       and subscription processing can handle pool exhaustion,
       but schema transaction processing could not, which could
       result in the node shutdown experienced during
       restoration.
       This problem is solved by giving DBDICT schema
       transactions an isolated pool of reserved SafeCounters
       which cannot be exhausted by concurrent NDB event
       activity. (Bug #28595915)

     * After a commit failed due to an error, mysqld shut down
       unexpectedly while trying to get the name of the table
       involved. This was due to an issue in the internal
       function ndbcluster_print_error(). (Bug #28435082)

     * ndb_restore did not restore autoincrement values
       correctly when one or more staging tables were in use. As
       part of this fix, we also in such cases block applying of
       the SYSTAB_0 backup log, whose content continued to be
       applied directly based on the table ID, which could
       ovewrite the autoincrement values stored in SYSTAB_0 for
       unrelated tables. (Bug #27917769, Bug #27831990)
       References: See also: Bug #27832033.

     * ndb_restore employed a mechanism for restoring
       autoincrement values which was not atomic, and thus could
       yield incorrect autoincrement values being restored when
       multiple instances of ndb_restore were used in parallel.
       (Bug #27832033)
       References: See also: Bug #27917769, Bug #27831990.

     * An NDB table having both a foreign key on another NDB
       table using ON DELETE CASCADE and one or more TEXT
       (http://dev.mysql.com/doc/refman/5.7/en/blob.html) or
       BLOB (http://dev.mysql.com/doc/refman/5.7/en/blob.html)
       columns leaked memory. (Bug #27484882)

     * When query memory was exhausted in the DBSPJ kernel block
       while storing correlation IDs for deferred operations,
       the query was aborted with error status 20000 Query
       aborted due to out of query memory. (Bug #26995027)
       References: See also: Bug #86537.

     * MaxBufferedEpochs
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxbufferedepochs)
       is used on data nodes to avoid excessive buffering of row
       changes due to lagging NDB event API subscribers; when
       epoch acjknowledgements from one or more subscribers lag
       by this number of epochs, an asynchronous disconnection
       is triggered, allowing the data node to release the
       buffer space used for subscriptions. Since this
       disconnection is asynchronous, it may be the case that it
       has not completed before additional new epochs are
       completed on the data node, resulting in new epochs not
       being able to seize GCP completion records, generating
       warnings such as those shown here:
    [ndbd] ERROR    -- c_gcp_list.seize() failed...

    ...

    [ndbd] WARNING  -- ACK wo/ gcp record...

       And leading to the following warning:
    Disconnecting node %u because it has exceeded MaxBufferedEpochs
    (100 > 100), epoch ....

       This fix performs the following modifications:

          + Modifies the size of the GCP completion record pool
            to ensure that there is always some extra headroom
            to account for the asynchronous nature of the
            disconnect processing previously described, thus
            avoiding c_gcp_list seize failures.

          + Modifies the wording of the MaxBufferedEpochs
            warning to avoid the contradictory phrase "100 >
            100".
       (Bug #20344149)

     * When executing the redo log in debug mode it was possible
       for a data node to fail when deallocating a row. (Bug
       #93273, Bug #28955797)

Enjoy and thanks for the support!

On Behalf of MySQL/ORACLE RE Team
Sreedhar S 

MySQL Cluster 7.6.10 has been released (no replies)

$
0
0
Dear MySQL Users,

MySQL Cluster is the distributed, shared-nothing variant of MySQL.
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

  - 99.999% 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 7.6.10 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.

MySQL Cluster 7.6 is also available from our repository for Linux
platforms, go here for details:

  http://dev.mysql.com/downloads/repo/

The release notes are available from

  http://dev.mysql.com/doc/relnotes/mysql-cluster/7.6/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 7.6.10 (5.7.26-ndb-7.6.10) (2019-04-26, General Availability)

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

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

   For an overview of changes made in NDB Cluster 7.6, see What
   is New in NDB Cluster 7.6
(http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new-7-6.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 5.7
   through MySQL 5.7.26 (see Changes in MySQL 5.7.26 (2019-04-25, General Availability)
(http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-26.html)).

Bugs Fixed


     * NDB Disk Data: The error message returned when validation
       of MaxNoOfOpenFiles in relation to InitialNoOfOpenFiles
       failed has been improved to make the nature of the
       problem clearer to users. (Bug #28943749)

     * NDB Disk Data: Repeated execution of ALTER TABLESPACE ...
       ADD DATAFILE against the same tablespace caused data
       nodes to hang and left them, after being killed manually,
       unable to restart. (Bug #22605467)

     * NDB Cluster APIs: NDB now identifies short-lived
       transactions not needing the reduction of lock contention
       provided by NdbBlob::close() and no longer invokes this
       method in cases (such as when autocommit is enabled) in
       which unlocking merely causes extra work and round trips
       to be performed prior to committing or aborting the
       transaction. (Bug #29305592)
       References: See also: Bug #49190, Bug #11757181.

     * NDB Cluster APIs: When the most recently failed operation
       was released, the pointer to it held by NdbTransaction
       became invalid and when accessed led to failure of the
       NDB API application. (Bug #29275244)

     * When a pushed join executing in the DBSPJ block had to
       store correlation IDs during query execution, memory for
       these was allocated for the lifetime of the entire query
       execution, even though these specific correlation IDs are
       required only when producing the most recent batch in the
       result set. Subsequent batches require additional
       correlation IDs to be stored and allocated; thus, if the
       query took sufficiently long to complete, this led to
       exhaustion of query memory (error 20008). Now in such
       cases, memory is allocated only for the lifetime of the
       current result batch, and is freed and made available for
       re-use following completion of the batch. (Bug #29336777)
       References: See also: Bug #26995027.

     * API and data nodes running NDB 7.6 and later could not
       use an existing parsed configuration from an earlier
       release series due to being overly strict with regard to
       having values defined for configuration parameters new to
       the later release, which placed a restriction on possible
       upgrade paths. Now NDB 7.6 and later are less strict
       about having all new parameters specified explicitly in
       the configuration which they are served, and use
       hard-coded default values in such cases. (Bug #28993400)

     * Added DUMP 406 (NdbfsDumpRequests) to provide NDB file
       system information to global checkpoint and local
       checkpoint stall reports in the node logs. (Bug
       #28922609)

     * A race condition between the DBACC and DBLQH kernel
       blocks occurred when different operations in a
       transaction on the same row were concurrently being
       prepared and aborted. This could result in DBTUP
       attempting to prepare an operation when a preceding
       operation had been aborted, which was unexpected and
       could thus lead to undefined behavior including potential
       data node failures. To solve this issue, DBACC and DBLQH
       now check that all dependencies are still valid before
       attempting to prepare an operation.
       Note
       This fix also supersedes a previous one made for a
       related issue which was originally reported as Bug
       #28500861.
       (Bug #28893633)

     * The ndbinfo.cpustat table reported inaccurate information
       regarding send threads. (Bug #28884157)

     * Execution of an LCP_COMPLETE_REP signal from the master
       while the LCP status was IDLE led to an assertion. (Bug
       #28871889)

     * Issuing a STOP command in the ndb_mgm client caused
       ndbmtd processes which had recently been added to the
       cluster to hang in Phase 4 during shutdown. (Bug
       #28772867)

     * In some cases, one and sometimes more data nodes
       underwent an unplanned shutdown while running
       ndb_restore. This occurred most often, but was not always
       restircted to, when restoring to a cluster having a
       different number of data nodes from the cluster on which
       the original backup had been taken.
       The root cause of this issue was exhaustion of the pool
       of SafeCounter objects, used by the DBDICT kernel block
       as part of executing schema transactions, and taken from
       a per-block-instance pool shared with protocols used for
       NDB event setup and subscription processing. The
       concurrency of event setup and subscription processing is
       such that the SafeCounter pool can be exhausted; event
       and subscription processing can handle pool exhaustion,
       but schema transaction processing could not, which could
       result in the node shutdown experienced during
       restoration.
       This problem is solved by giving DBDICT schema
       transactions an isolated pool of reserved SafeCounters
       which cannot be exhausted by concurrent NDB event
       activity. (Bug #28595915)

     * After a commit failed due to an error, mysqld shut down
       unexpectedly while trying to get the name of the table
       involved. This was due to an issue in the internal
       function ndbcluster_print_error(). (Bug #28435082)

     * ndb_restore did not restore autoincrement values
       correctly when one or more staging tables were in use. As
       part of this fix, we also in such cases block applying of
       the SYSTAB_0 backup log, whose content continued to be
       applied directly based on the table ID, which could
       ovewrite the autoincrement values stored in SYSTAB_0 for
       unrelated tables. (Bug #27917769, Bug #27831990)
       References: See also: Bug #27832033.

     * ndb_restore employed a mechanism for restoring
       autoincrement values which was not atomic, and thus could
       yield incorrect autoincrement values being restored when
       multiple instances of ndb_restore were used in parallel.
       (Bug #27832033)
       References: See also: Bug #27917769, Bug #27831990.

     * Neither the MAX_EXECUTION_TIME optimizer hint nor the
       max_execution_time system variable was respected for DDL
       statements or queries against INFORMATION_SCHEMA tables
       while an NDB global schema lock was in effect. (Bug
       #27538139)

     * An NDB table having both a foreign key on another NDB
       table using ON DELETE CASCADE and one or more TEXT or
       BLOB columns leaked memory. (Bug #27484882)

     * When query memory was exhausted in the DBSPJ kernel block
       while storing correlation IDs for deferred operations,
       the query was aborted with error status 20000 Query
       aborted due to out of query memory. (Bug #26995027)
       References: See also: Bug #86537.

     * MaxBufferedEpochs is used on data nodes to avoid
       excessive buffering of row changes due to lagging NDB
       event API subscribers; when epoch acjknowledgements from
       one or more subscribers lag by this number of epochs, an
       asynchronous disconnection is triggered, allowing the
       data node to release the buffer space used for
       subscriptions. Since this disconnection is asynchronous,
       it may be the case that it has not completed before
       additional new epochs are completed on the data node,
       resulting in new epochs not being able to seize GCP
       completion records, generating warnings such as those
       shown here:
    [ndbd] ERROR    -- c_gcp_list.seize() failed...

    ...

    [ndbd] WARNING  -- ACK wo/ gcp record...

       And leading to the following warning:
    Disconnecting node %u because it has exceeded MaxBufferedEpochs
    (100 > 100), epoch ....

       This fix performs the following modifications:

          + Modifies the size of the GCP completion record pool
            to ensure that there is always some extra headroom
            to account for the asynchronous nature of the
            disconnect processing previously described, thus
            avoiding c_gcp_list seize failures.

          + Modifies the wording of the MaxBufferedEpochs
            warning to avoid the contradictory phrase "100 >
            100".
       (Bug #20344149)

     * When executing the redo log in debug mode it was possible
       for a data node to fail when deallocating a row. (Bug
       #93273, Bug #28955797)



MySQL Connector/ODBC 5.3.13 has been released (no replies)

$
0
0
Dear MySQL users,

MySQL Connector/ODBC 5.3.13, a new version of the ODBC driver for the
MySQL database management system, has been released.

The available downloads include both a Unicode driver and an ANSI
driver based on the same modern codebase. Please select the driver
type you need based on the type of your application - Unicode or ANSI.
Server-side prepared statements are enabled by default. It is suitable
for use with any MySQL version from 5.6.

This is the sixth release of the MySQL ODBC driver conforming to the
ODBC 3.8 specification. It contains implementations of key 3.8
features, including self-identification as a ODBC 3.8 driver,
streaming of output parameters (supported for binary types only), and
support of the SQL_ATTR_RESET_CONNECTION connection attribute (for the
Unicode driver only).

The release is now available in source and binary form for a number of
platforms from our download pages at

http://dev.mysql.com/downloads/connector/odbc/5.3.html

For information on installing, please see the documentation at

http://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html

Changes in MySQL Connector/ODBC 5.3.13 (2019-04-29, General Availability)

Bugs Fixed

     * Connector/ODBC 5.3 is now built with MySQL client library
       5.7.26, which includes OpenSSL 1.0.2R. Issues fixed in
       the new OpenSSL version are described at
       http://www.openssl.org/news/vulnerabilities.html. (Bug
       #29489006)

     * An exception was emitted when fetching contents of a
       BLOB/TEXT records after executing a statement as a
       server-side prepared statement with a bound parameter.
       The workaround is not using parameters or specifying
       NO_SSPS=1 in the connection string; this allows the
       driver to fetch the data. (Bug #29282638, Bug #29512548,
       Bug #28790708, Bug #93895, Bug #94545, Bug #92078)

On Behalf of Oracle/MySQL Release Engineering Team,
Hery Ramilison 

MySQL for Excel 1.3.8 has been released (no replies)

$
0
0
Dear MySQL users,

The MySQL Windows Experience Team is proud to announce the
release of MySQL for Excel version 1.3.8. This is a maintenance
release for 1.3.x. It can be used for production environments.

MySQL for Excel is an application plug-in enabling data analysts
to very easily access and manipulate MySQL data within Microsoft
Excel. It enables you to directly work with a MySQL database from
within Microsoft Excel so you can easily do tasks such as:

  * Importing MySQL Data into Excel

  * Exporting Excel data directly into MySQL to a new or existing table

  * Editing MySQL data directly within Excel


MySQL for Excel is installed using the MySQL Installer for Windows.

The MySQL Installer comes in 2 versions

- Full (400 MB) which includes a complete set of MySQL products with
  their binaries included in the download.

- Web (18 MB - a network install) which will just pull the MySQL for
  Excel over the web and install it when run.

You can download MySQL Installer from our official Downloads page at
http://dev.mysql.com/downloads/installer/

The MySQL for Excel product can also be downloaded by using the product
standalone installer found at this link
http://dev.mysql.com/downloads/windows/excel/

Changes in MySQL for Excel 1.3.8 (2019-06-10, General
Availability)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed

     * Previously, 1000 (first rows of a MySQL table) was the
       value limit for previewing a small amount of data in
       Excel. However, setting the value to 300 or greater
       generated an exception and prevented additional editing
       operations. The upper threshold now is 100, instead of
       1000 (see Advanced Import Data Options, General Tab
       (https://dev.mysql.com/doc/mysql-for-excel/en/mysql-for-e
       xcel-import-options-advanced.html#mysql-for-excel-import-
       options-advanced-general)). (Bug #29745518)

     * A new global option, Tolerance for FLOAT and DOUBLE
       comparisons in WHERE clause, provides a way to edit data
       of these types that enables proper row-matching in the
       database when it is used together with optimistic updates
       (see Global Options, Edit Sessions Tab
       (https://dev.mysql.com/doc/mysql-for-excel/en/mysql-for-e
       xcel-config-options.html#mysql-for-excel-global-options-e
       dit-sessions)). (Bug #29179195, Bug #93824)

     * The Import Data operation adds digits to floating-point
       numbers. For example, instead of rendering a value such
       as 5.3 precisely from the database, the operation
       displays 5.0000019073486 after importing the data. This
       behavior affects FLOAT and DOUBLE data types, which
       adhere to the IEEE-754 standard and are stored as
       approximate values.
       A new option now provides a way to import floating-point
       numbers using the DECIMAL data type, which then stores
       and displays the exact value from the database (see
       Advanced Import Data Options, Formatting Tab
       (https://dev.mysql.com/doc/mysql-for-excel/en/mysql-for-e
       xcel-import-options-advanced.html#mysql-for-excel-import-
       advanced-format)). (Bug #26008777)

     * Support was added for encrypted connections in the form
       of SSL certificates and SSH tunneling, without the
       requirement of having intermediate proxy software to
       create the tunnel. Encrypted connections can be
       configured from the MySQL for Excel add-in directly or
       they can be configured with MySQL Workbench and then used
       to open a connection from the add-in. (Bug #18550080)

     * The Import Data operation for stored procedures now
       enables the selection of individual columns to be
       imported from each returned result set, which is similar
       to the way imported column data already works for table
       and view data. (Bug #16239029)

Bugs Fixed


     * The Export and Append Data actions for a cell with data
       in a worksheet were transferred unexpectedly to a cell
       without data on a second worksheet when the active focus
       was shifted to the second worksheet. (Bug #29839647)

     * A lack of contrast between onscreen message data and the
       background obscured the connection information when some
       themes (such as Dark Gray) were set on the host. This fix
       extends the selected theme colors to the MySQL for Excel
       add-in for the following versions of Excel: 2007, 2010,
       2013, 2016, 365, and 2019. (Bug #29826900)

     * When mappings were stored for Append Data operations, the
       add-in did not check for blank and duplicate stored
       mapping names. Now, validation ensures that all names are
       unique and that existing names are not overwritten
       without permission. (Bug #29826762)

     * Microsoft Excel prompted users to save workbooks that
       were unchanged. This fix alters the way metadata for
       connection information (used by Import and Edit Data
       operations) is created and stored, and ignores unrelated
       actions. (Bug #29625731)

     * When schema information was retrieved using a stored
       procedure, the operation was unable to find the
       mysql.proc system table. The operation now retrieves
       schema information from INFORMATION_SCHEMA tables.
       (Bug#29215137, Bug #93814)

     * With the option to create Excel relationships for
       imported tables enabled, an attempt to import a table
       (with related tables) generated an exception when the
       tables had circular references. This fix modifies the way
       relationships are created for Import Data operations for
       multiple tables, such that relationships among tables
       that could create a circular reference are not added to
       the Excel data model. (Bug #29050558)

     * The Edit Data operation returned an error message
       intermittently (value not suitable to be converted to a
       DateTime data type), even for tables without a DATETIME
       column. This fix updates the library used for internal
       connections to MySQL 8.0 server instances and the
       caching_sha2_password plugin. In addition, the updated
       library resolves an error in which fetched schema
       information for columns returns the rows in alphabetical
       order, instead of ordinal order. (Bug #29030866,
       Bug#93501)

     * Data imported to a worksheet could not be refreshed if
       the worksheet was renamed after the import operation. The
       add-in now inspects the connection information of
       imported tables to determine whether the associated
       worksheet name changed, and if so, it updates the
       connection metadata. Also, it removes the connection
       information for missing or deleted worksheets.
       (Bug#27441407, Bug #89387)

     * After editing, committing, and then refreshing the data
       from the database, subsequent commits were not recognized
       by the Edit Data operation. (Bug #27365464, Bug #87642)

     * An error was generated when an Edit Data operation
       involved changing the value of a date or time field. Now
       the value of each date or time field is wrapped with
       single quotes and the edits are saved to the database.
       (Bug #26301455, Bug #86723)

     * When an existing workbook was opened, a second (blank)
       workbook instance was also opened. (Bug #26245818,
       Bug#86633)

     * Some unsupported connection methods were shown as valid
       options to select. (Bug #26025950)

     * The Windows automatic scaling of visual elements did not
       work as expected when the operating system was configured
       to use a DPI value other than 100%. (Bug #23218058,
       Bug#81003)

Quick links:
MySQL for Excel documentation: http://dev.mysql.com/doc/en/mysql-for-excel.html.
Inside MySQL blog (NEW blog home): http://insidemysql.com/
MySQL on Windows blog (OLD blog home): http://blogs.oracle.com/MySQLOnWindows.
MySQL for Excel forum: http://forums.mysql.com/list.php?172.
MySQL YouTube channel: http://www.youtube.com/user/MySQLChannel.

Enjoy and thanks for the support!
The MySQL on Windows team at Oracle.

MySQL Community Server 8.0.17 has been released (part 1/3) (no replies)

$
0
0

[Due to size limitation, this announcement is split in three parts. This is part 1]

Dear MySQL users,

MySQL Server 8.0.17, a new version of the popular Open Source
Database Management System, has been released. MySQL 8.0.17 is
recommended for use on production systems.

For an overview of what's new in MySQL 8.0, please see

http://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html

For information on installing MySQL 8.0.17 on new servers, please see
the MySQL installation documentation at

  http://dev.mysql.com/doc/refman/8.0/en/installing.html

MySQL Server 8.0.17 is available in source and binary form for a number of
platforms from our download pages at

  http://dev.mysql.com/downloads/mysql/

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

  http://dev.mysql.com/downloads/repo/

Windows packages are available via the Installer for Windows:

  http://dev.mysql.com/downloads/installer/

along with .ZIP (no-install) packages for more advanced needs.

8.0.17 also comes with a web installer as an alternative to the full
installer.

The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:

  http://bugs.mysql.com/report.php

The following link lists the changes in the MySQL 8.0 since
the release of MySQL 8.0.16. It may also be viewed
online at

http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-17.html

Enjoy!


Changes in MySQL 8.0.17 (2019-07-22, General Availability)


     * Audit Log Notes

     * C API Notes

     * Character Set Support

     * Component Notes

     * Configuration Notes

     * Debugging Notes

     * Deprecation and Removal Notes

     * Installation Notes

     * Keyring Notes

     * Packaging Notes

     * Performance Schema Notes

     * Plugin Notes

     * X Plugin Notes

     * Functionality Added or Changed

     * Bugs Fixed

Audit Log Notes


     * Encryption and decryption operations for encrypted MySQL
       Enterprise Audit log files use a password stored in the
       MySQL keyring. Previously, only a single password was
       stored. Generating a new password made the old password
       inaccessible, rendering MySQL Enterprise Audit unable to
       read log files encrypted with the old password. MySQL
       Enterprise Audit now archives old passwords to maintain a
       password history in the keyring, and includes in each
       encrypted log file name the ID of the password required
       to read the file. To enable expiration and cleanup of old
       archived passwords in the keyring, the new
       audit_log_password_history_keep_days system variable is
       available. See Audit Log Logging Configuration
(https://dev.mysql.com/doc/refman/8.0/en/audit-log-logging-configuration.html).

C API Notes


     * These C API changes were made:

          + HOSTNAME_LENGTH was changed from 60 to 255 and moved
            from include/mysql_com.h to include/my_hostname.h.

          + USER_HOST_BUFF_SIZE was moved from
            include/mysql_com.h to sql/auth/auth_common.h.
       (Bug #29590300)

Character Set Support


     * The utf8mb4 character set has a new binary collation,
       utf8mb4_0900_bin, which differs from the existing
       utf8mb4_bin binary collation as follows:

          + For collating weights, utf8mb4_bin uses code points,
            possibly with leading zero bytes added, whereas
            utf8mb4_0900_bin uses the utf8mb4 encoding bytes.
            The sort order is the same for both collations, but
            sorting for utf8mb4_0900_bin is much faster.

          + The pad attribute for utf8mb4_bin is PAD SPACE,
            whereas for utf8mb4_0900_bin it is NO PAD.
            Consequently, operations involving utf8mb4_0900_bin
            do not add trailing spaces, and comparisons
            involving strings with trailing spaces may differ
            for the two collations.
       For more information, see Unicode Character Sets
(https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html).

Component Notes


     * A new mysql_current_thread_reader component service is
       available to enable server components to obtain a handle
       to the current thread. For example, the service enables
       components to access properties of the current session by
       passing its thread handle to other services. For
       information about this service, see the Component
       Subsystem section of the MySQL Server Doxygen
       documentation, available at
       https://dev.mysql.com/doc/index-other.html.

Configuration Notes


     * The source files in the mysys_ssl directory have been
       moved to the mysys directory and the mysys_ssl library is
       no longer built. (Bug #29488066)

     * MySQL configuration now requires a minimum CMake version
       of 3.5.1. (Bug #29337090)

     * The maximum permitted length of host names throughout
       MySQL has been raised to 255 ASCII characters, up from
       the previous limit of 60 characters. This applies to, for
       example, host name-related columns in the data
       dictionary, mysql system schema, Performance Schema,
       INFORMATION_SCHEMA, and sys schema; the MASTER_HOST value
       for the CHANGE MASTER TO statement; the Host column in
       SHOW PROCESSLIST statement output; host names in account
       names (such as used in account-management statements and
       in DEFINER attributes); and host name-related command
       options and system variables.
       Caveats:

          + The increase in permitted host name length can
            affect tables with indexes on host name columns. For
            example, tables in the mysql system schema that
            index host names now have an explicit ROW_FORMAT
            attribute of DYNAMIC to accommodate longer index
            values.

          + Some file name-valued configuration settings might
            be constructed based on the server host name. The
            permitted values are constrained by the underlying
            operating system, which may not permit file names
            long enough to include 255-character host names.
            This affects the general_log_file, log_error,
            pid_file, relay_log, and slow_query_log_file system
            variables and corresponding options. If host
            name-based values are too long for the OS, explicit
            shorter values must be provided.

          + Although the server now supports 255-character host
            names, connections to the server established using
            the --ssl-mode=VERIFY_IDENTITY option are
            constrained by maximum host name length supported by
            OpenSSL. Host name matches pertain to two fields of
            SSL certificates, which have maximum lengths as
            follows: Common Name: maximum length 64; Subject
            Alternative Name: maximum length as per RFC#1034.
       Applications that expect host names to be a maximum of 60
       characters should be adjusted to account for this change.
       (Bug #13548245, Bug #63814, Bug #27925782, Bug #90601,
       Bug #27955121, Bug #29584642, Bug #29602081, Bug #94907)

Debugging Notes


     * The MySQL server is a multithreaded application that uses
       numerous internal locking primitives such as mutexes. To
       enable detection of lock-acquisition deadlocks and
       enforcement that runtime execution is free of them, MySQL
       now supports LOCK_ORDER tooling. This enables a
       lock-order dependency graph to be defined as part of
       server design, and server runtime checking to ensure that
       lock acquisition is acyclic and that execution paths
       comply with the graph. LOCK_ORDER support includes:

          + A lock_order_dependencies.txt file that defines the
            server lock-order dependency graph.

          + A WITH_LOCK_ORDER CMake option that configures
            whether MySQL is built with LOCK_ORDER tooling.

          + A set of system variables that configure LOCK_ORDER
            tool operation during server execution.

          + A --lock-order option for mysql-test-run.pl that
            controls whether to enable the LOCK_ORDER tool
            during test case execution.
       To use the LOCK_ORDER tool, you must build MySQL from
       source with tooling enabled. See The LOCK_ORDER Tool
(https://dev.mysql.com/doc/refman/8.0/en/lock-order-tool.html).
       It is intended for debugging the server, not for
       production use.

Deprecation and Removal Notes


     * FLOAT(M,D) and DOUBLE(M,D) syntax to specify the number
       of digits for columns of type FLOAT and DOUBLE (and any
       synonyms) is a nonstandard MySQL extension. This syntax
       is deprecated and support for it will be removed in a
       future MySQL version. (Bug #25328973, Bug #84363)

     * For string data types, the BINARY attribute is a
       nonstandard MySQL extension that is shorthand for
       specifying the binary (_bin) collation of the column
       character set (or of the table default character set if
       no column character set is specified). In MySQL 8.0, this
       nonstandard use of BINARY is ambiguous because the
       utf8mb4 character set has multiple _bin collations, so
       the BINARY attribute is deprecated and support for it
       will be removed in a future MySQL version. Applications
       should be adjusted to use an explicit _bin collation
       instead.
       The use of BINARY to specify a data type or character set
       remains unchanged.

     * The nonstandard C-style &&, ||, and ! operators that are
       synonyms for the standard SQL AND, OR, and NOT operators,
       respectively, are deprecated and support for them will be
       removed in a future MySQL version. Applications that use
       the nonstandard operators should be adjusted to use the
       standard operators.
       Note
       Use of || is deprecated unless the PIPES_AS_CONCAT SQL
       mode is enabled. In that case, || signifies the
       SQL-standard string concatenation operator).

     * The ZEROFILL attribute is deprecated for numeric data
       types, as is the display width attribute for integer data
       types. Support for ZEROFILL and display widths for
       integer data types will be removed in a future MySQL
       version. Consider using an alternative means of producing
       the effect of these attributes. For example, applications
       could use the LPAD() function to zero-pad numbers up to
       the desired width, or they could store the formatted
       numbers in CHAR columns.

     * The UNSIGNED attribute is deprecated for columns of type
       FLOAT, DOUBLE, and DECIMAL (and any synonyms) and will be
       removed in a future MySQL version. Consider using a
       simple CHECK constraint instead for such columns.

     * AUTO_INCREMENT support is deprecated for columns of type
       FLOAT and DOUBLE (and any synonyms) and will be removed
       in a future MySQL version. Consider removing the
       AUTO_INCREMENT attribute from such columns, or convert
       them to an integer type.

     * The SQL_CALC_FOUND_ROWS query modifier and accompanying
       FOUND_ROWS() function are now deprecated and will be
       removed in a future MySQL version. As a replacement,
       considering executing your query with LIMIT, and then a
       second query with COUNT(*) and without LIMIT to determine
       whether there are additional rows. For example, instead
       of these queries:
SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT FOUND_ROWS();

       Use these queries instead:
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;

       COUNT(*) is subject to certain optimizations.
       SQL_CALC_FOUND_ROWS causes some optimizations to be
       disabled.

Installation Notes


     * An automatic upgrade at server startup can take some time
       to complete. For better status notification in systemd
       environments, the server now sends messages to the system
       notification socket when upgrades start and end. (Status
       can be monitored with server mysqld status.) (Bug
       #29493201)

Keyring Notes


     * The keyring_aws plugin has been updated to use the latest
       AWS SDK and so that it works with OpenSSL 1.1.

Packaging Notes


     * To reduce the download size and disk footprint of
       mysql-community-server Linux packages, debug binaries and
       plugins have been moved to separate packages for these
       platforms:

          + EL8, Fedora: The mysql-community-server package with
            debug binaries and associated plugins is now split
            into a mysql-community-server package without debug
            binaries or plugins and a
            mysql-community-server-debug package with debug
            binaries and plugins.

          + Debian: The mysql-community-server package with
            debug binaries and associated plugins is now split
            into a mysql-community-server package without debug
            binaries or plugins, a mysql-community-server-debug
            package with debug binaries, and a
            mysql-community-test-debug package with debug
            plugins.
       In all cases, the debug packages are dependent on the
       corresponding mysql-community-server package. (Bug
       #29769061, Bug #28647754, Bug #92415, Bug #29702765, Bug
       #95169, Bug #29681301)

Performance Schema Notes


     * Performance Schema version checking at compile time was
       improved to prevent incompatibilities with the server
       version. (Bug #29550156)

     * Previously, the Performance Schema instrumentation for
       RWLOCK named priority read/write locks as rwlock (thus
       failing to distinguish plain from priority locks) and did
       not collect information about the kind of unlock
       operation performed. Priority read/write locks now are
       named prlock, so that events for them begin with
       wait/synch/prlock. Also, information about unlock
       operations is provided. (Bug #29270712)

Plugin Notes


     * Not all plugins can operate properly if loaded "early" in
       the server startup sequence using the --early-plugin-load
       option (that is, before InnoDB is initialized). However,
       InnoDB requires keyring backend plugins to operate on
       encrypted tables. To enable plugins to indicate to the
       server whether they can be loaded early, a new
       PLUGIN_OPT_ALLOW_EARLY flag is available for use in the
       plugin descriptor. See Server Plugin Library and Plugin
       Descriptors
(https://dev.mysql.com/doc/refman/8.0/en/plugin-data-structures.html#server-plugin-descriptors).
       Keyring plugins included in MySQL distributions now have the
       PLUGIN_OPT_ALLOW_EARLY flag enabled because InnoDB
       requires them, but the flag is not limited to keyring
       plugins. It can be set for other plugins that are able to
       initialize successfully early in the server startup
       sequence.
       This flag has no effect on whether a plugin can be loaded
       at server startup with the --plugin-load or
       --plugin-load-add option, or at runtime with the INSTALL
       PLUGIN statement.
       All plugins compiled using MySQL distributions prior to
       8.0.17 do not have this flag set. When loading these into
       pre-8.0.17 servers this does not matter, but attempts to
       use --early-plugin-load to load plugin binaries compiled
       using pre-8.0.17 MySQL distributions into a 8.0.17 or
       higher server will fail. The plugins must be recompiled
       against MySQL 8.0.17 or higher. (Bug #29040456, Bug
       #93550)

X Plugin Notes


     * The createIndex() method did not support the DOUBLE(M,D)
       syntax for specifying double-precision values due to a
       regression in MySQL 8.0.16. (Bug #29748841)

     * X Protocol's handling of messages with arguments encoded
       as octets was corrected to support non-scalar data such
       as an array of strings. (Bug #29721046)

     * When host name identity verification was active for SSL
       connections (--ssl-mode=VERIFY_IDENTITY), X Protocol did
       not check for matches to Subject Alternative Names (SANs)
       in the server Certificate Authority (CA) certificate.
       This could lead to connection requests being rejected
       unnecessarily because they used a valid host name that
       was specified as an SAN rather than as the certificate's
       Common Name value. (Bug #29691694)

     * When prepared statements were used with X Plugin, using
       IN or NOT IN in a modify or find operation produced
       invalid JSON, resulting in an error. (Bug #29259501)

     * On Windows, X Plugin logged some messages that were
       unnecessary or insufficiently informative. The messages
       have been removed or improved as appropriate. (Bug
       #27839153)

     * X Plugin's list of SQL functions was out of date, and has
       been updated to add new functions and remove functions
       that are no longer available. (Bug #26574971)

Functionality Added or Changed


     * InnoDB; JSON: InnoDB now supports multi-valued indexes on
       JSON arrays. A multi-valued index is an index in which
       multiple index records can point to the same data record.
       This can be useful for indexing JSON documents such as
       {user:"Bob",zipcode:[94477,94536]} in which, if we wish
       to search all zip codes, it is necessary to have two
       index records for each zip code in the document. We can
       create such an index on the zipcode array using a CREATE
       INDEX statement such as this one:
CREATE INDEX zips ON t1( (CAST(data->'$.zipcode' AS UNSIGNED ARRAY)) )

       Effectively, this is a functional index using the CAST()
       function, which has been extended with the ARRAY keyword
       to enable casting of JSON arrays to SQL data type arrays.
       The path expression must be a valid JSON path, and must
       point to an array in the JSON document in order to be
       effective. All type specifiers supported by CAST() can be
       used except for BINARY. Such usage of the CAST() function
       is supported only by InnoDB, and only for creating
       multi-valued indexes on JSON arrays.
       As part of this work, MySQL adds a new function
       JSON_OVERLAPS() as well as a new MEMBER OF() operator for
       working with JSON documents, as described here:

          + JSON_OVERLAPS() compares two JSON documents. If they
            contain any key-value pairs or array elements in
            common, the function returns TRUE (1); otherwise it
            returns FALSE (0). If both values are scalars, the
            function performs a simple test for equality. If one
            argument is a JSON array and the other is a scalar,
            the scalar is treated as an array element. Thus,
            JSON_OVERLAPS() acts as a complement to
            JSON_CONTAINS().

          + MEMBER OF() tests whether the first operand (a
            scalar or JSON document) is a member of the JSON
            array passed as the second operand, returning TRUE
            (1) if it is, and FALSE (0) if it is not. No type
            conversion of the operand is performed.
       The MySQL optimizer uses multi-valued indexes
       automatically for any suitable query---that is, a query
       using in its WHERE clause any of JSON_CONTAINS(),
       JSON_OVERLAPS(), or MEMBER OF() on an array within a JSON
       column. You can see whether such an index is actually
       used by checking the output of EXPLAIN for the given
       query.
       Multi-Valued Indexes
(https://dev.mysql.com/doc/refman/8.0/en/create-index.html#create-index-multi-valued),
       provides more detailed information about multi-valued indexes, including
       examples. For more information about JSON_OVERLAPS() and
       MEMBER OF(), with examples of use, see Functions That
       Search JSON Values
(https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html).

     * Microsoft Windows: A new warning message now reminds DBAs
       that connections made using the MySQL named pipe on
       Windows has limited the permissions a connector can
       request on the named pipe.
       Previously, the named_pipe_full_access_group system
       variable was set to a value that maps to the built-in
       Windows Everyone group (SID S-1-1-0) by default. However,
       this group is not ideal and should be replaced with a
       group that restricts its membership for connectors that
       are unable to request fewer permissions on the MySQL
       named pipe.
       The new warning is written to the error log at startup if
       the string value assigned to named_pipe_full_access_group
       is '*everyone*' (or the Windows System Language
       equivalent) and named pipes are enabled. In addition, the
       warning is written to the error log and raised to the
       client if the system variable is reset to the Everyone
       group at runtime.

     * X DevAPI: For Collection objects, the following methods
       have been deprecated and are scheduled to be removed in a
       future release:

          + Collection.find().where()

          + Collection.modify().where()

          + Collection.remove().where()
       Any Collection code relying on the .where() method should
       be updated and the expression in the .where() method
       should be provided directly in the appropriate .find(),
       .remove(), and .modify() method.

     * JSON: MySQL now supports JSON schema validation using two
       functions JSON_SCHEMA_VALID() and
       JSON_SCHEMA_VALIDATION_REPORT(), both of which validate a
       JSON document against a JSON schema conforming to Draft 4
       of the JSON Schema specification. JSON_SCHEMA_VALID()
       returns true if the document validates against the schema
       and false if it does not. JSON_SCHEMA_VALIDATION_REPORT()
       returns a JSON document containing detailed information
       about the results of the validation.
       For both of these functions, the following statements
       apply:

          + required attributes are supported.

          + Regular expressions are supported (invalid
            expressions are silently ignored).

          + External resources in schemas and the $ref keyword
            are not supported.
       For more information, including examples, see JSON Schema
       Validation Functions
(https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html).

     * The time_zone session variable is now hintable using the
       SET_VAR optimizer hint. (Bug #29776464)

     * The minor version of the libmysqlclient.so C client
       library has been increased to 1 (21.0 to 21.1), to signal
       that new symbols have been added. This was done to
       correct an oversight in the MySQL 8.0.16 release. To
       address compatibility concerns, the version of all
       symbols is unchanged. This means the filename of the
       library is libmysqlclient.so.21.1.17, whereas all symbols
       inside the library are tagged as 21_0 (unchanged from the
       8.0.16 release). (Bug #29584073, Bug #29642146)

     * Thanks to Josh Braden, Daniël van Eeden, Simon Mudd, and
       Zhou Mengkang, who contributed corrections to comments
       and messages in the MySQL source code. (Bug #29403708,
       Bug #94464, Bug #29428435, Bug #94527, Bug #29262200, Bug
       #94049, Bug #29468128, Bug #94625)

     * The mysql client program now sends os_user and
       os_sudouser connection attributes, when available, to
       indicate the name of the operating system user running
       the program and the value of the SUDO_USER environment
       variable, respectively. For general information about
       connection attributes, see Performance Schema Connection
       Attribute Tables
(https://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html).
       Thanks to Daniël van Eeden for the contribution on which this feature was
       based. (Bug #29210935, Bug #93916)

     * Password hash values displayed in the IDENTIFIED WITH
       clause of output from SHOW CREATE USER may contain
       unprintable characters that have adverse effects on
       terminal displays and in other environments. Enabling the
       new print_identified_with_as_hex system variable causes
       SHOW CREATE USER to display such hash values as
       hexadecimal strings rather than as regular string
       literals. Hash values that do not contain unprintable
       characters still display as regular string literals, even
       with this variable enabled. For compatibility with this
       change, CREATE USER and ALTER USER now accept hash values
       specified either as regular string literals or as
       hexadecimal strings. (Bug #28053446, Bug #90947)

     * In MySQL 8.0, the lower_case_table_names variable can
       only be configured when the MySQL server is initialized.
       Because a MySQL server installation on Debian and Ubuntu
       performed using APT initializes the MySQL server for you,
       there was no opportunity to enable
       lower_case_table_names. To work around this issue, you
       can now use the debconf-set-selection utility to enable
       lower_case_table_names (set lower_case_table_names=1)
       prior to installing MySQL using APT.
       To enable lower_case_table_names prior to installing
       MySQL using APT, execute the following command:
shell> sudo debconf-set-selections <<< "mysql-server mysql-server/lowe
rcase-table-names select Enabled

       (Bug #27948395, Bug #90695)

     * The server now checks the SSL server certificate better
       at startup and writes a warning to the error log if it
       finds a problem. (Bug #25945005)

     * The umask for files created using SELECT ... INTO OUTFILE
       or SELECT ... INTO DUMPFILE was changed from 0666 to
       0640. The LOAD_FILE() function no longer requires files
       to be world-readable, just readable by the server. (Bug
       #24513720)

     * The mysqldump option --set-gtid-purged controls whether
       or not a SET @@GLOBAL.gtid_purged statement is added to
       the mysqldump output. The statement updates the value of
       gtid_purged on a server where the dump file is reloaded,
       to add the GTID set from the source server's
       gtid_executed system variable. A new choice
       --set-gtid-purged=COMMENTED is now available. When this
       value is set, if GTIDs are enabled on the server you are
       backing up, SET @@GLOBAL.gtid_purged is added to the
       output (unless gtid_executed is empty), but it is
       commented out. This means that the value of gtid_executed
       is available in the output, but no action is taken
       automatically when the dump file is reloaded. With
       COMMENTED, you can control the use of the gtid_executed
       set manually or through automation. For example, you
       might prefer to do this if you are migrating data to
       another server that already has different active
       databases. Thanks to Facebook for this contribution. (Bug
       #94332, Bug #29357665)

     * MySQL now supports explicit casts to DOUBLE, FLOAT, and
       REAL using either of the functions CAST() or CONVERT().
       For more information, see Cast Functions and Operators
(https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html).
       (Bug #30524, Bug #11747058)

     * InnoDB now supports redo log archiving. Backup utilities
       that copy redo log records may sometimes fail to keep
       pace with redo log generation while a backup operation is
       in progress, resulting in lost redo log records due to
       those records being overwritten. The redo log archiving
       feature addresses this issue by sequentially writing redo
       log records to an archive file. Backup utilities can copy
       redo log records from the archive file as necessary,
       thereby avoiding the potential loss of data.
       For more information, see Redo Log Archiving
(https://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html#innodb-redo-log-archiving).

     * To provide additional indexing options for JSON data,
       InnoDB now supports multi-value indexes. A multi-value
       index is a secondary index defined on a column that
       contains an array of values.

     * MySQL now provides a clone plugin that permits cloning
       InnoDB data locally or from a remote MySQL server
       instance. A local cloning operation stores cloned data on
       the same server or node where the MySQL instance runs. A
       remote cloning operation transfers cloned data over the
       network from a donor MySQL server instance to the
       recipient server or node where the cloning operation was
       initiated.
       The clone plugin supports replication. In addition to
       cloning data, a cloning operation extracts and transfers
       replication coordinates from the donor and applies them
       on the recipient, which enables using the clone plugin
       for provisioning Group Replication members and
       replication slaves. Using the clone plugin for
       provisioning is considerably faster and more efficient
       than replicating a large number of transactions. Group
       Replication members can also be configured to use the
       clone plugin as an alternative method of recovery, so
       that members automatically choose the most efficient way
       to retrieve group data from seed members.
       For more information, see The Clone Plugin
(https://dev.mysql.com/doc/refman/8.0/en/clone-plugin.html),
       and Cloning for Distributed Recovery
(https://dev.mysql.com/doc/refman/8.0/en/group-replication-cloning.html).

     * The compatibility policies that Group Replication
       implements for member versions in groups now consider the
       patch version of a member's MySQL Server release.
       Previously, only the major version was considered. Using
       the patch version means Group Replication can better
       maintain replication safety for mixed version groups
       during group reconfigurations and upgrade procedures.
       The compatibility policies are applied when a member
       joins the group, either for the first time or following
       its upgrade, when a donor is selected for state transfer,
       and when a primary member election takes place. Members
       running MySQL 8.0.16 or lower, or MySQL 5.7, only take
       into account the major version in these situations. For a
       primary member election, so that all members come to the
       same decision, members running releases from MySQL 8.0.17
       adjust their policies to match members running lower
       releases if any are in the group.
       In a multi-primary mode group where members running
       multiple MySQL Server versions are online, for example
       during a rolling online upgrade procedure, Group
       Replication now automatically manages the read-write and
       read-only status of members running releases from MySQL
       8.0.17. If a member leaves the group, the members running
       the version that is now the lowest are automatically set
       to read-write mode. When you change a mixed version group
       that was running in single-primary mode to run in
       multi-primary mode, using the
       group_replication_switch_to_multi_primary_mode() UDF,
       Group Replication automatically sets members to
       read-write or read-only mode depending on their MySQL
       server version.
       The improved compatibility policies influence the
       behavior of group members during an online upgrade
       procedure from one patch version to another, in the same
       ways as the behavior during upgrades from one major
       version to another was influenced previously. For a
       multi-primary mode group, the number of members in
       read-write mode is reduced during the upgrade procedure,
       but Group Replication now automatically manages their
       read-write status when the upgrade is complete. For a
       single-primary mode group, if you want the primary to
       remain as the primary, it must be upgraded last.

     * Group Replication can now use a remote cloning operation
       for state transfer to a joining member during distributed
       recovery. The remote cloning operation lets you add new
       members to the group without transferring the group's
       data to the server manually beforehand. To use this
       functionality, you must install the Clone plugin on the
       donor and joining member, grant the BACKUP_ADMIN
       permission to the replication user for distributed
       recovery, and set the new
       group_replication_clone_threshold system variable to an
       appropriate level. Group Replication automatically
       configures the required Clone plugin settings and manages
       the remote cloning operation. When cloning is complete
       and the joining member has restarted, the transactions
       that the group applied while the remote cloning operation
       was in progress are transferred to the joining member by
       replication from a donor's binary log, to complete
       distributed recovery.

     * Data that is held in the binary log transaction and
       statement caches during a transaction is in unencrypted
       format in the memory buffer that stores the cache. The
       data is written to a temporary file on disk if it exceeds
       the space available in the memory buffer. From MySQL
       8.0.17, when binary log encryption is active on the
       server (binlog_encryption=ON), the temporary files used
       for the binary log cache are now encrypted using AES-CTR
       (AES Counter mode) for stream encryption. Because the
       temporary files are volatile and tied to a single
       process, they are encrypted using single-tier encryption,
       using a randomly generated file password and
       initialization vector that exist only in memory and are
       never stored on disk or in the keyring. After each
       transaction is committed, the binary log cache is reset:
       the memory buffer is cleared, any temporary file used to
       hold the binary log cache is truncated, and a new file
       password and initialization vector are randomly generated
       for use with the next transaction. This reset also takes
       place when the server is restarted after a normal
       shutdown or an unexpected halt.

     * An incomplete SQL predicate has the form WHERE value, in
       which value is a column name or constant expression and
       no comparison operator is used. MySQL now rewrites any
       predicate of this type internally as WHERE value != 0
       during the contextualization phase, so that the query
       resolver, query optimizer, and query executor need work
       only with complete predicates. The principal visible
       effect of this change is that, for Boolean values,
       EXPLAIN output now shows true and false, rather than 1
       and 0.

     * The optimizer now transforms a WHERE condition having NOT
       IN (subquery), NOT EXISTS (subquery), IN (subquery) IS
       NOT TRUE, or EXISTS (subquery) IS NOT TRUE internally
       into an antijoin, thus removing the subquery. This is
       similar to the existing IS NULL (Not exists) outer join
       optimization; see EXPLAIN Extra Information
(https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain-extra-information),
       for further information.
       In addition, the semijoin materialization can now be used
       for a WHERE condition having IN (subquery) IS TRUE, or
       EXISTS (subquery) IS TRUE, or when the IN condition
       belongs to a left join such as SELECT * FROM t1 LEFT JOIN
       t2 ON t2.x IN (SELECT * FROM t3). See Optimizing IN and
       EXISTS Subquery predicates with Semijoin Transformations
       (https://dev.mysql.com/doc/refman/8.0/en/semijoins.html).
       Also as a result of this work, MySQL is now able to
       simplify a condition of the form (x IS TRUE) IS FALSE as
       x IS NOT TRUE, which can be tested more quickly and
       optimized more easily than the condition as originally
       written.

     * InnoDB parallel read thread performance for large data
       sets was improved through better utilization of read
       threads, through a reduction in read thread I/O for
       prefetch activity that occurs during parallel scans, and
       through support for parallel scanning of partitions.
       The parallel read thread feature is controlled by the
       innodb_parallel_read_threads variable. The maximum
       setting is now 256, which is the total number of threads
       for all client connections. If the thread limit is
       reached, connections fall back to using a single thread.

     * mysqlbinlog now supports the --compress (or -C) option to
       enable compression in the client/server protocol.


[To be continued]

MySQL Community Server 8.0.17 has been released (part 2/3) (no replies)

$
0
0

[This is part 2 of the announcement]

Bugs Fixed


     * NDB Cluster: Compile times for NDB Cluster using the
       included compile_cluster build script have been improved
       by removing options for software components not strictly
       necessary for running MySQL Cluster. (Bug #29355872)

     * NDB Cluster: Attempting to change an NDB table's column
       properties (such as COLUMN_FORMAT) using ALTER TABLE
       ALGORITHM=INPLACE was rejected, which is correct
       behavior, but which raised a misleading error message.
       (Bug #28929906)

     * InnoDB: A failure occurred when attempting to kill a
       process that was executing a row count. (Bug #29939617)

     * InnoDB: Due to a regression introduced in MySQL 8.0.14,
       in-place upgrade on a case sensitive file system from
       MySQL 5.7 or a MySQL 8.0 release prior to MySQL 8.0.14 to
       MySQL 8.0.16 failed for instances with partitioned tables
       and lower_case_table_names=1. The failure was caused by a
       case mismatch issue related to partitioned table file
       names. The fix that introduced the regression was
       reverted, which permits upgrades to MySQL 8.0.17 from
       MySQL 5.7 or MySQL 8.0 releases prior to MySQL 8.0.14 to
       function as normal. However, the regression is still
       present in the MySQL 8.0.14, 8.0.15, and 8.0.16 releases.
       In-place upgrade on a case sensitive file system from
       MySQL 8.0.14, 8.0.15, or 8.0.16 to MySQL 8.0.17 fails
       with the following error when starting the server after
       upgrading binaries or packages to MySQL 8.0.17 if
       partitioned tables are present and
       lower_case_table_names=1:
Upgrading from server version version_number with
partitioned tables and lower_case_table_names == 1 on a case sensitive
 file
system may cause issues, and is therefore prohibited. To upgrade anywa
y,
restart the new server version with the command line option 'upgrade=F
ORCE'.
When upgrade is completed, please execute 'RENAME TABLE part_table_nam
e
TO new_table_name; RENAME TABLE new_table_name
TO part_table_name;' for each of the partitioned tables.
Please see the documentation for further information.

       If you encounter this error when upgrading to MySQL
       8.0.17, perform the following workaround:

         1. Restart the server with --upgrade=FORCE to force the
            upgrade operation to proceed.

         2. Identify partitioned table file names with lowercase
            suffixes:
mysql> SELECT FILE_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME
LIKE '%#p#%' OR FILE_NAME LIKE '%#sp#%';

         3. For each file identified, rename the associated
            table using a temporary name, then rename the table
            back to its original name.
mysql> RENAME TABLE table_name TO temporary_table_name;
mysql> RENAME TABLE temporary_table_name TO table_name;


         4. Verify that there are no partitioned table file
            names with lowercase suffixes (an empty result set
            should be returned).
mysql> SELECT FILE_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_NAME
LIKE '%#p#%' OR FILE_NAME LIKE '%#sp#%';
Empty set (0.00 sec)


         5. Run ANALYZE TABLE on each renamed table to update
            the optimizer statistics in the
            mysql.innodb_index_stats and
            mysql.innodb_table_stats tables.
       Because of the regression still present in the MySQL
       8.0.14, 8.0.15, and 8.0.16 releases, importing
       partitioned tables from MySQL 8.0.14, 8.0.15, or 8.0.16
       to MySQL 8.0.17 is not supported on case sensitive file
       systems where lower_case_table_names=1. Attempting to do
       so results in a "Tablespace is missing for table" error.
       (Bug #29823032, Bug #29917793, Bug #95834)
       References: This issue is a regression of: Bug #26925260.

     * InnoDB: lock_sys mutex contention caused by lock-wait
       functions (lock_wait_suspend_thread() and
       lock_wait_table_release_slot()) was reduced. (Bug
       #29814339)

     * InnoDB: The fseg_n_reserved_pages_low() function, which
       determines the number of pages reserved by a segment, did
       not validate results read from the segment inode. (Bug
       #29761998)

     * InnoDB: Creation of the transaction rollback list
       (hit_list) was decoupled from lock acquisition calls
       (lock_rec_lock calls) to permit the use of different
       latching schemes. (Bug #29753800)

     * InnoDB: Disabling Performance Schema consumers caused an
       ALTER TABLESPACE ... ENCRYPTION operation to assert. (Bug
       #29646974, Bug #95005)

     * InnoDB: Error messages were revised to remove references
       to .frm files, which are not used in MySQL 8.0. (Bug
       #29639655)

     * InnoDB: It was possible for a background thread to check
       the encryption status of an undo tablespace before the
       undo tablespace was fully initialized and the encryption
       flag set. (Bug #29600309)

     * InnoDB: A table name parsing function call returned false
       when parsing serialized dictionary information (SDI)
       tables names, which are not formatted to include a
       database name. The buffer that holds the database name
       remained uninitialized, causing Valgrind errors. (Bug
       #29550527)

     * InnoDB: The space reserved in the mini-transaction (mtr)
       log buffer for dynamic metadata logging was insufficient.
       (Bug #29524260)

     * InnoDB: Inaccuracies in the Variance-Aware Transaction
       Scheduling (VATS) implementation raised a signed integer
       overflow error in an UBSan build of MySQL. (Bug
       #29508517, Bug #91959)

     * InnoDB: Insufficient memory barriers in the rw-lock
       implementation caused deadlocks on ARM.
       Thanks to Yibo Cai from Arm Technology for the
       contribution. (Bug #29508001, Bug #94699)

     * InnoDB: The INFORMATION_SCHEMA.INNODB_TABLESPACES
       ENCRYPTION column was not updated after enabling undo
       tablespace encryption. (Bug #29492911, Bug #94665)

     * InnoDB: A relocated table could not be accessed due to
       incorrect parsing of a schema or table name that included
       a forward slash character (/), which the server
       incorrectly interpreted as a directory separator. (Bug
       #29492113)

     * InnoDB: Various fixes and revisions were applied to the
       InnoDB memcached source code. (Bug #29485891)

     * InnoDB: To enable global access, the value of
       innodb_directories variable is now stored internally as a
       global variable instead of a static variable. (Bug
       #29471990)

     * InnoDB: In debug builds, the thd_innodb_tmpdir() function
       did not accept a NULL argument. (Bug #29471846)

     * InnoDB: A subtraction operation in the file space
       allocation code incorrectly stored the result as an
       unsigned variable, which raised an assertion failure.
       (Bug #29466680)

     * InnoDB: After moving or deleting default undo tablespaces
       and restarting the server with a new
       innodb_undo_directory value, MySQL recreated the undo
       tablespaces in the new location but failed to update the
       undo directory path in the data dictionary. (Bug
       #29461900)

     * InnoDB: A previously freed LOB page was accessed while
       rolling back a transaction during recovery. (Bug
       #29440408)

     * InnoDB: A request was issued during recovery to read
       pages into the buffer pool when there were no pages to be
       read. A check was added to avoid the unnecessary read
       request. (Bug #29440208)

     * InnoDB: A regression introduced in MySQL 8.0.14 caused a
       "Invalid (old?) table or database name" error when
       creating a partitioned table on a MySQL instance with
       lower_case_table_names=1. The change that caused the
       regression has been reverted. (Bug #29426720, Bug #94519)
       References: This issue is a regression of: Bug #26925260.

     * InnoDB: A FULLTEXT index table created in MySQL 5.6 in a
       database with a hyphen in its name caused a startup
       failure after upgrading from MySQL 5.7 to MySQL 8.0.
       Tablespace file paths for FULLTEXT auxiliary tables were
       not found in the data dictionary, and the hyphen in the
       database name was not handled correctly in subsequently
       generated file paths. (Bug #29411899, Bug #94431)

     * InnoDB: There was potential for data loss to occur if the
       redo log was not logically empty and comprised a single
       block, and the server exited during recovery after an
       insert buffer merge generated new redo records but before
       the new records could be flushed to disk. (Bug #29411832,
       Bug #94448)

     * InnoDB: InnoDB returned an unknown generic error when
       attempting to create a tablespace for which the path and
       file name exceeded the MAX_PATH limit on Windows. InnoDB
       now returns a more meaningful error. (Bug #29341634)

     * InnoDB: An undo tablespace file was not found after being
       moved to a different directory. (Bug #29328158)

     * InnoDB: The server failed to start with an
       innodb_buffer_pool_size=default setting. The default
       value was not checked for compatibility with dependent
       system variable settings. (Bug #29267814, Bug #94065)

     * InnoDB: The CREATE TABLESPACE ... ADD DATAFILE clause no
       longer permits circular directory references. For
       example, the circular directory reference (/../) in the
       following statement is not permitted:
CREATE TABLESPACE ts1 ADD DATAFILE ts1.ibd 'any_directory/../ts1.ibd';

       An exception to this restriction exists on Linux, where a
       circular directory reference is permitted if the
       preceding directory is a symbolic link. For example, the
       data file path in the example above is permitted if
       any_directory is a symbolic link. (It is still permitted
       for data file paths to begin with '../'.)
       To avoid upgrade issues, remove any circular directory
       references from tablespace data file paths before
       upgrading to MySQL 8.0.17 or higher. To inspect
       tablespace paths, query the
       INFORMATION_SCHEMA.INNODB_DATAFILES table. (Bug
       #29157265)

     * InnoDB: Manually changing the system time while the MySQL
       server was running caused page cleaner thread delays.
       (Bug #29138644, Bug #93708)

     * InnoDB: UPDATE statements did not always disable
       semi-consistent reads properly when encountering errors,
       which could lead to assertion errors in debug mode. (Bug
       #29047894)

     * InnoDB: When purging a deleted row, the logic that
       governs lock inheritance did not correctly determine the
       type of lock that should be inherited to satisfy
       constraint checks by active transactions. (Bug #29004362)

     * InnoDB: An unnecessary read lock was taken on implicitly
       opened data dictionary tables when executing a prepared
       statement in LOCK TABLES mode. (Bug #28875646)

     * InnoDB: During log application, after an OPTIMIZE TABLE
       operation, InnoDB did not populate virtual columns before
       checking for virtual column index updates. (Bug
       #28834208)

     * InnoDB: An operation that copied data from the clustered
       index was performed incorrectly, causing spatial indexes
       to use spatial rows with stale pointers to the clustered
       index. (Bug #28758961)

     * InnoDB: An INSERT operation involving a generated virtual
       BLOB column resulted a secondary index being updated with
       an incorrect value. (Bug #28652826)

     * InnoDB: Configuring innodb_data_file_path and
       innodb_temp_data_file_path using SET PERSIST_ONLY =
       default incorrectly set the variable values to NULL. (Bug
       #28590014)

     * InnoDB: A CREATE TABLE ... REPLACE SELECT operation
       raised a lock_rec_get_rec_not_gap(lock) assertion
       failure. The operation set a flag on the transaction
       object indicating that a REPLACE operation was requested,
       but did not clear the flag before updating dependent
       views, causing a subsequent INSERT operation to be
       interpreted as a REPLACE operation, leading to the wrong
       row locks being taken. (Bug #28523025, Bug #92068)

     * InnoDB: With super_read_only enabled, an attempted RENAME
       TABLE operation on a temporary table raised an assertion
       instead of returning an error. (Bug #28490368, Bug
       #91975)

     * InnoDB: Valgrind errors were reported due to
       uninitialized bytes read during a virtual index prefix
       search. (Bug #28184025)

     * InnoDB: InnoDB initialization failed when attempting to
       create an system tablespace greater than 2GB in size.
       (Bug #27538464)

     * InnoDB: A full-text cache lock taken when data is
       synchronized was not released if the full-text cache size
       exceeded the full-text cache size limit. (Bug #25289359)

     * InnoDB: The INNODB_METRICS metadata_table_reference_count
       counter reported a negative value. (Bug #20584149, Bug
       #75966)

     * InnoDB: Client sessions using different
       auto_increment_increment values while performing
       concurrent insert operations could cause a duplicate key
       error. (Bug #15851528, Bug #67526)
       References: Reverted patches: Bug #14049391, Bug #65225.

     * Partitioning: For partitioned tables, an ALTER TABLE
       statement could cause incorrect query results under these
       conditions:

          + The statement swapped columns by renaming them,
            either directly with RENAME COLUMN or by replacement
            with DROP COLUMN/ADD COLUMN.

          + A swapped column was used in a partitioning
            expression.

          + The alteration was performed as an in-place
            operation that did not redistribute rows between
            partitions.
       Such column renames are now prohibited unless the same
       ALTER TABLE statement satisfies one of these conditions:

          + The statement makes the table nonpartitioned.

          + The statement redefines the table partitioning or
            partitioning expression (which causes a table
            rebuild that redistributes rows). This enables
            supporting existing scenarios in which partitioning
            expressions are updated to follow column renaming.

          + Partitioning is specified using PARTITION BY KEY()
            with an empty column list. This partitions using the
            primary key, which tracks column renaming.
       (Bug #29541665, Bug #94792)

     * Partitioning: ALTER TABLE ... EXCHANGE PARTITION failed
       with the error Non matching attribute 'ROW_FORMAT'
       between partition and table when the partitioned table
       had partitions using different row formats, even when the
       partition to be exchanged used the same row format as the
       non-partitioned table. (Bug #28687608)

     * Replication: When message fragmentation is in use for
       large Group Replication messages (which is available, and
       the default, from MySQL 8.0.16), if a fragmented message
       sent by the group member with the highest node identifier
       in XCom was partially delivered, and one or more members
       then left the group prior to the delivery of the
       remaining message fragments, reassembly of the message
       caused Group Replication to stop working. The loss of
       members meant that the node identifier of the original
       sender was no longer valid in the new view of the group.
       To correct this issue, reassembly of fragmented messages
       now uses the delivery information from the last fragment
       that was delivered, which reflects the new situation
       after the view change, rather than from the first
       fragment that was delivered, which reflects the old
       situation before the view change. (Bug #29716639)

     * Replication: The error message that is issued for a
       discrepancy between the number of group members and the
       auto-increment interval incorrectly referred to the
       group_replication_auto_increment_increment system
       variable, instead of the auto_increment_increment system
       variable. The value of auto_increment_increment is
       changed to the value specified by
       group_replication_auto_increment_increment when Group
       Replication starts, but only if auto_increment_increment
       and auto_increment_offset have their default values, and
       from MySQL 8.0, only in multi-primary mode. The value of
       auto_increment_increment was always the value that was
       checked for the error message, and it has now been
       corrected to give the accurate system variable name. (Bug
       #29542425)

     * Replication: Group Replication cannot be started
       following a MySQL Server upgrade that uses the MINIMAL
       option (--upgrade=MINIMAL), which does not upgrade system
       tables on which the replication internals depend.
       Previously, in this situation, the server was waiting
       indefinitely for Group Replication to start. The
       situation is now handled correctly by unblocking the
       waiting thread and issuing the expected error
       ER_GRP_RPL_START_GRP_RPL_FAILED. (Bug #29423358)

     * Replication: In Group Replication's Group Communication
       System (GCS), a change to the processing of suspicions by
       a member that is leaving the group, which reduced the
       execution time for some test cases, caused an issue in
       the event that recovery failed, because it led to a
       circular dependency between the recovery failure and the
       view change notification. Now, if an error makes recovery
       impossible, GCS takes the handling actions in an
       appropriate sequence. The member leaves the group, the
       view change is applied, and then the recovery thread is
       terminated. (Bug #29417365, Bug #29628909)

     * Replication: When events generated by one MySQL server
       instance were written to the binary log of another
       instance, the second server implicitly assumed that the
       first server supported the same number of binary log
       event types as itself. Where this was not the case, the
       event header was handled incorrectly. The issue has now
       been fixed. Thanks to Facebook for the contribution. (Bug
       #29417234)

     * Replication: In Group Replication, joining members could
       wrongly identify themselves as incompatible with an
       existing replication group even if there were members at
       the same version already in the group, because they
       checked against all other members, including the member
       at the highest version. Joining members also included
       their own version in the compatibility check. Now,
       joining members only compare themselves with the existing
       group member at the lowest version, and do not count
       their own version. (Bug #29390946)

     * Replication: If a LOCK INSTANCE FOR BACKUP statement was
       used to acquire an instance-level backup lock, then a
       STOP SLAVE statement was issued, a deadlock could be
       created with the SQL thread waiting on the backup lock
       and the STOP SLAVE statement waiting on the SQL thread to
       complete its current action. To prevent this situation,
       the STOP SLAVE process now tries to acquire the backup
       lock before proceeding, and returns an error if the lock
       cannot be acquired. (Bug #29386503, Bug #93649)

     * Replication: From MySQL 8.0.13, if any replication
       channel has open temporary tables, the binary logging
       format cannot be changed using SET @@global.binlog_format
       or SET @@persist.binlog_format. Previously, if this
       operation was attempted after the new restriction was
       implemented, the wrong error message was returned to the
       client (referencing a running replication channel applier
       as the issue, rather than an open temporary table). The
       appropriate error message is now returned. (Bug
       #29370024, Bug #94340)

     * Replication: Binary log checksums were handled
       incorrectly when de-serializing a format description
       event. (Bug #29355110)

     * Replication: With row-based replication in use, when the
       replication applier thread unpacked a row change event,
       index values for any functional indexes were calculated
       for both the "before" image and the "after" image. In the
       case of the "before" image, the values were not
       necessary. This calculation has therefore been removed
       for the before image in order to optimize row unpacking.
       (Bug #29304076)

     * Replication: When a MEMORY table is implicitly deleted on
       a master following a server restart, the master writes a
       DELETE statement to the binary log so that slaves also
       empty the table. This generated event now includes a
       comment in the binary log so that the reason for the
       DELETE statement is easy to identify. Thanks to Daniël
       van Eeden for the contribution. (Bug #29157796, Bug
       #93771)

     * Replication: If an invalid starting offset was provided
       in a SHOW BINLOG EVENTS FROM statement, the invalid
       offset was returned in place of the correct starting
       position for the first returned event. (Bug #29039732,
       Bug #93544)

     * Replication: The Group Replication UDFs for configuring
       an online group sometimes did not return an error if an
       issue arose during main execution. The UDFs also now
       check whether the Group Replication plugin is stopping
       before they start to initialize. (Bug #28978767)

     * Replication: Replication could stop with a "record not
       found" error when the value INDEX_SCAN,HASH_SCAN (the
       default in MySQL 8.0) was set for the
       slave_rows_search_algorithms system variable, and an
       update event contained two updates to the same row in a
       table that did not have a unique key, meaning that the
       hash scan was used. In this situation, the second update
       was missed by the hash scan due to the row change. Now,
       after updating a row, the hash scan operation searches
       for the updated row in the hash map, and applies any
       further update.
       When the value TABLE_SCAN,HASH_SCAN is set for the
       slave_rows_search_algorithms system variable, so that the
       search cannot use an index, the "record not found" error
       can occur in the above situation whether or not the table
       has a unique key. Also, with this setting, when a hash
       scan is used on a table that has a unique key, in the
       case of an update event containing two row updates that
       are order-dependent, the updates might be applied out of
       order, causing replication to stop with a duplicate key
       error. To avoid these issues, the documentation has been
       updated to state that the value TABLE_SCAN,HASH_SCAN
       should not be used. (Bug #28846386)

     * Replication: When binary logging is enabled on a
       replication slave, the combination of the
       --replicate-same-server-id and --log-slave-updates
       options on the slave can cause infinite loops in
       replication if the server is part of a circular
       replication topology. (In MySQL 8.0, binary logging is
       enabled by default, and slave update logging is the
       default when binary logging is enabled.) However, the use
       of global transaction identifiers (GTIDs) prevents this
       situation by skipping the execution of transactions that
       have already been applied. The restriction on this
       combination of options has therefore now been removed
       when gtid_mode=ON is set. With any other GTID mode, the
       server still does not start with this combination of
       options. As a safeguard against creating the problem
       situation after the server has started, you now cannot
       change the GTID mode to anything other than ON on a
       running server that has this combination of options set.
       Thanks to Facebook for the contribution. (Bug #28782370,
       Bug #92754)

     * Replication: The group communication engine for Group
       Replication (XCom, a Paxos variant) did not handle out of
       memory errors in an appropriate way. If memory could not
       be allocated to make a copy of the payload for a message,
       an error was logged but the message was still sent, with
       a null payload. The Group Communication System (GCS) on
       the receiving member discarded the message as empty, and
       the XCom instance on the receiving member accepted this
       action and did not retry, resulting in the message
       effectively being skipped. This caused the GTID set on
       the receiving member to diverge from the group, leading
       to replication errors. XCom now terminates gracefully if
       it experiences an out of memory error, so that this
       situation cannot occur. (Bug #28702320)

     * Replication: In query log events in the binary log, the
       thread ID used for the execution of DROP TABLE and DELETE
       statements was identified incorrectly or not at all. On a
       multi-threaded replication slave, where temporary tables
       were involved (which require the correct thread ID as
       they are session specific), this omission resulted in
       errors when using mysqlbinlog to replay the binary log
       for point-in-time recovery. The thread ID is now set
       correctly. (Bug #28642318, Bug #92398)

     * Replication: When a trigger invoked an INSERT or UPDATE
       statement that set a column to its default value, and the
       DEFAULT expression of that column was non-deterministic,
       the expected warning was not raised when the trigger
       fired under statement-based replication. In addition, if
       the binary logging format was MIXED, the
       non-deterministic statements were logged in the format
       used for STATEMENT rather than that used for ROW.
       The statement that causes the trigger to fire checks at
       resolution time whether any of the triggered statements
       are non-deterministic. At this time, the triggered
       statements have been parsed, but not resolved, so the
       only check that can be performed is whether the triggered
       statements directly reference any non-deterministic
       operators. When the non-deterministic operator is used by
       a DEFAULT expression, the non-determinism is not visible
       until the triggered statement has been resolved, which
       happens when the trigger fires.
       This is fixed by adding an extra check when determining
       the logging format, where a statement is flagged as
       unsafe if any of its substatements can write to a table
       that has a column with a non-deterministic DEFAULT
       expression. Since it is not yet known at this point
       whether the DEFAULT expression will be used by the
       substatement, this check flags the statement as unsafe
       even if the substatement provides an explicit value for
       the column with a non-deterministic DEFAULT expression.
       (Bug #28297486)

     * Replication: When a slave server logs master status and
       connection information to a table
       (master_info_repository=TABLE), which is the default in
       MySQL 8.0, the mysql.slave_master_info table was not
       being updated on shutdown if the server was in super read
       only mode (super_read_only=ON). No error was written to
       the error log at this time, but replication failed after
       server startup because the master log file and master log
       position information was out of date. The thread that
       updates the master info log at shutdown is now excluded
       from read-only checks like other replication threads are,
       so it can update the table even if the server is in super
       read only mode. Error handling for a slave that is
       shutting down has also been improved so that any failure
       to write to the slave status logs results in an error in
       the error log. (Bug #27675107, Bug #89987)

     * Replication: If a replication slave tried to connect to
       the master using an incorrect user name, host, or port,
       the original error message specifying the reason for the
       connection failure was overwritten with a generic
       message. The issue has now been corrected in the output
       from the SHOW SLAVE STATUS statement and in the
       Performance Schema table replication_connection_status.
       (Bug #26580064)

     * macOS: For macOS installations performed using DMG
       packages, launchd operation was problematic:

          + Previously, SHUTDOWN caused a restart if MySQL was
            configured to start at boot time via the preference
            pane. This also affected the mysqladmin shutdown
            command. Server shutdown initiated in these ways now
            works correctly.

          + Previously, RESTART did not work. It now works
            correctly.

          + Previously, unexpected server exits did not cause
            automatic restart if the server was not configured
            to start at boot time. Exits with a nonzero exit
            status now cause a restart regardless of boot-time
            startup configuration.
       (Bug #29789857)

     * JSON: MAX() and MIN() used on expressions returning JSON
       data sometimes compared these values as strings rather
       than JSON values, which caused unexpected results; this
       was particularly evident when the JSON values were
       numbers.
       This was due to the fact that GROUP BY when using
       temporary tables with indexes did not compare JSON values
       correctly. (Bug #28947381)

     * JSON: JSON_TABLE() returned the error Unknown database ''
       when executed from a stored function.
       The root cause of this issue was that, when merging
       tables from a select that used JSON_TABLE(), MySQL
       checked only for derived tables. This caused the result
       table returned by JSON_TABLE() to be noted as a regular
       table, so that when attempting to execute the query, the
       server failed to open it. Now MySQL checks whether the
       table to be added is not an internal table, that is, not
       a derived table, a JSON_TABLE() result table, or a
       reference to a recursive common table expression. (Bug
       #92976, Bug #28851656)

     * Some foreign key error messages could differ depending on
       whether the user had the GRANT OPTION privilege. (Bug
       #29868844)

     * During upgrade operations, upgrades of the help tables
       failed if autocommit was disabled. (Bug #29865428, Bug
       #95620)

     * Fetching dynamically allocated dictionary objects into a
       vector during upgrade while operating with a small
       table_open_cache size caused data dictionary tables to be
       reopened, triggering a garbage collection mechanism that
       incorrectly freed collected objects. Subsequent attempts
       to access the freed objects caused a segmentation fault.
       (Bug #29823053)

     * For upgrades from MySQL 5.7 to 8.0, the upgrade process
       did not close the innodb_*_stats_backup57.ibd files in
       the mysql system schema before removing them, resulting
       in errors for subsequent file system operations. (Bug
       #29791350)

     * mysqld --initialize would fail if the file system was
       mounted at the data directory mount point and a
       lost+found file or directory was present. The lost+found
       file or directory is now ignored during data directory
       initialization. (Bug #29780434)

     * MySQL upgrades did not assign the AUDIT_ADMIN privilege
       to accounts that had the SUPER privilege. (Bug #29770732)

     * The REGEXP_REPLACE() function did not handle empty
       strings correctly in all cases. (Bug #29763554)

     * An overly strict assertion could be raised during sorting
       of stored program local objects. (Bug #29759547, Bug
       #95062)

     * The group_replication_get_communication_protocol() UDF,
       which is used to query the group's communication protocol
       version, failed if any group members were in RECOVERING
       state, which was an unnecessary restriction. The UDF can
       now be used provided that the member where it runs is in
       ONLINE state, and is in contact with a majority of the
       group. (Bug #29754967)

     * For some arguments to REPEAT(), maximum length
       calculations were not always handled correctly. (Bug
       #29739778)

     * UPDATE statements for tables with CHECK constraints could
       fail to enforce the constraints. (Bug #29706621, Bug
       #95189)

     * For installation from RPM or Debian packages, if the
       mysql_upgrade_info file in the data directory is found to
       exist but is owned by root, it is now changed to the same
       owner as the data directory. The correct SELinux file
       context is also set. (Bug #29704041)

     * Installing from RPM packages could result in an error log
       with incorrect permissions. (Bug #29702462)

     * A mysql_upgrade_info file created by the mysql_upgrade
       program during a previous upgrade could only be modified
       the operating system user that executed the mysql_upgrade
       program, causing an upgrade error. A warning is now
       issued instead of an error, which permits the upgrade
       operation to proceed. The mysql_upgrade_info file is
       deprecated and will be removed in a future MySQL version.
       (Bug #29702060, Bug #95165)

     * A replication group member that was unable to contact a
       majority of the group before the
       group_replication_unreachable_majority_timeout setting
       was reached, and then exhausted the number of auto-rejoin
       attempts specified by the
       group_replication_autorejoin_tries system variable
       without successfully rejoining, was sometimes unable to
       carry out the action specified by the
       group_replication_exit_state_action system variable. The
       member tries to carry out the action using the current
       session, which sometimes failed. The member now ensures
       that the session is initialized before using it to
       connect to the server to carry out the exit state action.
       (Bug #29698754)

     * When performing a upgrade, server-side SQL statements
       that update data dictionary tables used a non-default
       collation, causing an upgrade failure. (Bug #29697670,
       Bug #95144)

     * Starting the server with --skip-grant-tables and invoking
       ROLES_GRAPHML() could lead to a server exit. (Bug
       #29681975)

     * SELECT DISTINCT when using fixed-length keys did not
       deduplicate records properly in all cases. (Bug
       #29628699)

     * Client programs that used asynchronous C API functions
       could access freed memory after occurrence of a fatal
       error such as connection failure or receipt of a
       too-large packet. (Bug #29596244)

     * For failed data directory initialization, the server
       could produce a message indicating that the directory
       could be removed, even if the server itself did not
       create it. The message now indicates that only files in
       the directory created by the server can be removed. (Bug
       #29594082, Bug #94880)

     * In MySQL 8.0, the keyring_encypted_file plugin could not
       read a file created by a MySQL 5.7 keyring_encypted_file
       plugin. (Bug #29588345)

     * In builds with Undefined Behavior Sanitizer enabled,
       runtime errors occurred in my_strtoll10_mb2() and
       val_decimal(). (Bug #29585648, Bug #29594951)

     * Some diagnostics produced by the server while checking
       grant table structure at startup were written as errors
       rather than warnings. (Bug #29558993)

     * The comp_err utility could read uninitialized data. (Bug
       #29550442)

     * Enabling audit log encryption could cause a server exit.
       (Bug #29549327)

     * RPM package obsoletes were updated to enable successful
       upgrades from MariaDB to MySQL on EL8. (Bug #29549127,
       Bug #29623146, Bug #29623201, Bug #29659212)

     * In a join of the form LEFT JOIN t ON column WHERE t.x=0
       IS NOT TRUE, MySQL evaluated IS NOT TRUE as FALSE for a
       NULL argument in a null-complemented row, and rejected
       it. This caused an invalid conversion of the left join to
       an inner join, so that there were missing rows in the
       result. The same issue affected joins of the same form
       but having IS NOT FALSE in the WHERE condition. (Bug
       #29540230)

     * If the read_only system variable was enabled, its value
       improperly was applied against updates to the character
       set and collation data dictionary tables. (Bug #29533590,
       Bug #94769)

[To be continued]

MySQL Community Server 8.0.17 has been released (part 3/3) (no replies)

$
0
0


[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
       performance_schema.events_statements_summary_by_digest
       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
       row.
       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
       query.
       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
       #29531472)

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

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

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

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

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

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

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

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

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

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

     * 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
       COLUMN.
       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
       conditions:

          + 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
       #92727)

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

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

     * 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
       more of MODE_NO_ZERO_IN_DATE, MODE_NO_ZERO_DATE, 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


MySQL Router 8.0.17 for MySQL Server 8.0 and 5.7 has been released (no replies)

$
0
0
 
Dear MySQL users,

MySQL Router 8.0.17 is a new release for MySQL Router 8.0 series.

MySQL Router 8.0 is highly recommended for use with MySQL Server 8.0 and 5.7.
Please upgrade to MySQL Router 8.0.17.

The MySQL Router is a new building block for high availability solutions
based on MySQL InnoDB clusters.

By taking advantage of the new Group Replication technology, and
combined with the MySQL Shell, InnoDB clusters provide an integrated
solution for high availability and scalability for InnoDB based MySQL
databases, that does not require advanced MySQL expertise.

The deployment of applications with high availability requirements is
greatly simplified by MySQL Router. MySQL client connections are
transparently routed to online members of a InnoDB cluster, with MySQL
server outages and cluster reconfigurations being automatically handled
by the Router.

To download MySQL Router 8.0.17, see the "Generally Available (GA)
Releases" tab at http://dev.mysql.com/downloads/router. Package
binaries are available for several platforms and also as a source code
download.

Documentation for MySQL Router can be found at
http://dev.mysql.com/doc/mysql-router/en/

Enjoy!

Changes in MySQL Router 8.0.17 (2019-07-22)


     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Added the use_gr_notifications [metadata-cache] option to
       enable Group Replication notifications, which is disabled
       by default. It supports
       group_replication/membership/quorum_loss,
       group_replication/membership/view,
       group_replication/status/role_change, and
       group_replication/status/state_change.
       Optionally use the new --conf-use-gr-notifications
       bootstrap command-line to enable this option in the
       generated configuration file.

     * Added a REST API that follows the OpenAPI 2.0
       specification and is implemented as a plugin; load the
       plugin using [rest_api] in the configuration file. It
       also requires the http_server plugin. Use the optional
       require_realm configuration option (string) to define the
       authentication realm.
       The base-path for all REST endpoints is "api" followed by
       a numeric API version that is defined as the release
       date, such as "/api/20190722/". The system follows
       camelCase naming rules and errors follow RFC 7807. The
       system exposes a swagger.json file as /api/
       {apiVersion}/swagger.json.

Bugs Fixed


     * Bootstrapping could misclassify a hostname as IPv6 and
       surround it with square brackets in the state
       (state.json) file; and this produced a "Configuration
       error: cluster-metadata-servers is incorrect" error. A
       workaround was to disable ipv6 support on the system.
       (Bug #29876948, Bug #95531)

     * Starting the http_server plugin against a port that was
       already bound would yield a confusing error, such as
       "Error: bind('0.0.0.0:10100) failed: The operation
       completed successfully." (Bug #29823472)

     * Improved the connection counter logic to prevent a
       potential unexpected halt before completing the shutdown
       process. (Bug #29820725)

     * Requesting the metadata-cache health immediately after
       start up could cause an expected exit by
       get_destinations() if metadata_cache's cache-api was not
       yet initialized. (Bug #29820155)

     * Bootstrapping would fail on hosts that defined multiple
       network interfaces. (Bug #29814629)

     * Optimized logging mechanism; system generated log
       messages independent of the log level. Now log messages
       are only prepared if configured to do so. (Bug #29798420)

     * Fixed potential blocking during shutdown by adding proper
       libmysqlclient deinitialisation where needed. This bug
       only affected DEBUG builds. (Bug #29635378)

     * harness/CMakeLists.txt was renamed to
       harness/src/CMakeLists.txt. (Bug #29629788)

     * The loaded plugin message level was changed from level
       "info" to "debug". (Bug #29616101)

     * The bootstrap "invalid URI" error message was improved.
       (Bug #29609170)

     * HTTPS connections with ECDHE ciphers to Router's
       http_server component failed if built against OpenSSL
       1.0.1. (Bug #29609052)

     * The file generated by mysqlrouter_passwd was
       world-readable, and is now user-readable (Bug #29589127)

     * For the REST API, unsupported query parameters now return
       the 400 HTTP status code; and remain ignored. (Bug
       #29556935)

     * Log lines above 512 characters were truncated. (Bug
       #29540910)

     * For the REST API, OPTION, TRACE, and CONNECT requests now
       return the application/problem+json Content-Type and 405
       HTTP status code. (Bug #29539557)

     * The HTTP server component now supports .jpg/.jpeg image
       files, and file extension matches are now
       case-insensitive. (Bug #29508595)

     * Added Visual Studio 2019 support. (Bug #29454252)

     * An unknown [http_auth_realm] backend yielded an unclear
       error. (Bug #29421759)

     * An uncaught exception was generated if a client socket
       was shutdown the client peer address was retrieved. (Bug
       #29382585)

     * Misleading "Potential changes detected in cluster"
       warnings were added to Router's log file. Node order
       differences no longer cause these errors. (Bug #29264764,
       Bug #94060)

     * Router would start if bootstrap_server_addresses was
       empty or not set. Now Router fails to start in this case
       if cluster-metadata-servers (a dynamic-config attribute)
       is also empty. (Bug #28352482)

     * The .ini configuration file locations are now detected
       and displayed in --help output. (Bug #28261802)

     * With Debian packages, the bootstrap process could fail
       when used with the --directory option. (Bug #27034449)


MySQL Enterprise Backup 8.0.17 has been released (no replies)

$
0
0

Dear MySQL users,

MySQL Enterprise Backup 8.0.17, a new version of the online MySQL backup
tool, is now available for download from the My Oracle Support (MOS) website
as our latest GA release. This release will be available on eDelivery (OSDC)
after the next upload cycle. MySQL Enterprise Backup is a commercial
extension to the MySQL family of products.
 
MySQL Enterprise Backup 8.0.17 supports only the MySQL Server 8.0.17.
For earlier versions of MySQL 8.0, use the MySQL Enterprise Backup
version with the same version number as the server. For MySQL server
5.7, please use MySQL Enterprise Backup 4.1, and for MySQL Server 5.6
and 5.5, please use MySQL Enterprise Backup 3.12.
 
A brief summary of the changes in MySQL Enterprise Backup (MEB)
version 8.0.17 is given below.

Changes in MySQL Enterprise Backup 8.0.17 (2019-07-22, General
Availability)

     * Functionality Added or Changed

     * Bugs Fixed

Functionality Added or Changed


     * Before the current release, when backing up a server that
       used the keyring_okv
(https://dev.mysql.com/doc/refman/8.0/en/keyring-okv-plugin.html)
       plugin for InnoDB table encryption, mysqlbackup
       must not be run by a sudo user of its operating system.
       This restriction has now been removed. (Bug #29020232)

     * The --datadir option is no longer required for restoring
       a TTS backup
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/restore-use-tts.html).
       If the option is specified and
       its value does not match with that of the target server,
       the restore will be aborted. (Bug #28546760)

     * The --incremental-base option now accepts a new value,
       history:last_full_backup, which makes it easy to create a
       differential backup
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/glossary.html#glos_differential_backup).
       See the description of --incremental-base for details.

     * To avoid mysqlbackup failing to catch up with the growing
       redo log during a backup operation and missing redo log
       data, mysqlbackup now utilizes redo log archiving
(https://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html#innodb-redo-log-archiving),
       a new feature available on MySQL Server 8.0.17. Redo log archiving can be
       disabled using the new mysqlbackup option
       --no-redo-log-archive. See Backing up Using Redo Log Archiving
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-redo-log-archiving.html)
       for details.

     * mysqlbackup now supports encrypted InnoDB redo logs
(https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-encryption.html#innodb-tablespace-encryption-redo-log).
       The encrypted redo tablespaces are handled the same way
       as the encrypted tablespaces for InnoDB tables. See
       Working with Encrypted InnoDB Tablespaces
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-encrypted-innodb.html)
       for details.


 Bugs Fixed


     * A backup failed when the value of the server's system
       variable innodb_undo_directory contained in itself the
       file path for the server's data directory. It was due to
       a mishandling of the file path prefix of the undo
       tablespace directory by mysqlbackup, which has been
       corrected by this fix. (Bug #29849566)

     * Restore of an incremental backup failed if its base full
       backup had been restored with the --skip-binlog option.
       (Bug #29757701)

     * If a relative path was used with the
       backup_innodb_data_home_dir option when backing up a
       server, the whole directory specified by the option was
       being copied into the target server's data directory
       during a restore of the backup. Not only was that not the
       expected behavior of mysqlbackup, but it also made
       subsequent backups of the server failed when the same
       argument for backup_innodb_data_home_dir was used again.
       (Bug #29613025)

     * When the binary log on the server was more than one level
       below the data directory on the directory tree,
       mysqlbackup failed to copy the binary log into a backup.
       This was due to an error on parsing the path of the
       binary log directory, which has been corrected by this
       fix. (Bug #29710251)

     * During a backup operation, when a table or database name
       contains a slash (/), mysqlbackup always treated the
       corresponding tablespace as an external tablespace; if
       that was not actually the case, restore for the backup
       was going to fail. With this fix, mysqlbackup checks if
       the tablespace is really external and then handles it
       appropriately. (Bug #29472939)

     * External undo tablespaces were missing after a restore of
       a backup directory extracted from a backup image using
       the image-to-backup-dir command. It was because of the
       mishandling of the tracker file for external tablespaces
(https://dev.mysql.com/doc/mysql-enterprise-backup/8.0/en/meb-files-backed-up-summary.html#meb_file_tablespace-tracker)
       by the image-to-backup-dir command, which has been
       corrected by this fix. (Bug #29401027)

     * While no upgrade path exists between MySQL Enterprise
       Backup 4.1 and 8.0, an attempt to update the mysqlbackup
       package from release 4.1.3 to 8.0.16 on Ubuntu failed
       with the complaint that the update tried to overwrite the
       installation directory for mysqlbackup. With this fix,
       package conflict information has been added so that at
       the same attempt, the old package is uninstalled (with
       the user's consent) before the new package is installed.
       (Bug #29314267)

     * When using MySQL Enterprise Backup 8.0 to back up MySQL
       Server 5.7, an error was thrown, and the error message
       suggested a wrong version of MySQL Enterprise Backup to
       be used for the Server. With this fix, the appropriate
       version of MySQL Enterprise Backup is suggested. (Bug
       #29195233)

     * When backing up a server that used the keyring_okv
(https://dev.mysql.com/doc/refman/8.0/en/keyring-okv-plugin.html)
       plugin for InnoDB table encryption, if the
       --host, --user and --port options were not specified with
       the mysqlbackup command via the command line or a
       configuration file, the backup failed. It was because in
       that case, mysqlbackup had no values for those options
       that it could use to connect to the server for keyring
       operations. With this fix, default values are now set, so
       that mysqlbackup connects to the server on localhost as
       root and on port 3306 for keyring operations when those
       options are not specified. (Bug #29015923)

     * A copy-back-and-apply-log operation for a compressed
       backup created using the --backup_innodb_data_home_dir
       option with a relative file path terminated with signal 6.
       (Bug #28967141)

     * mysqlbackup hung during a restore operation when the
       backup contained more than a hundred InnoDB tablespaces.
       (Bug #28884254, Bug #29674585)

     * A restore operation for a compressed backup failed with
       an unexpected end of file error when the backup was
       created using --compress-method=zlib and the
       innodb_page_size was smaller than 16KB. (Bug #28623215)

     * A backup created on an EL7 platform containing InnoDB
       tables encrypted with MySQL Enterprise Transparent Data
       Encryption (TDE) could not be restored to a server on a
       Solaris platform. It was because in this case, the source
       and the target platforms of the backup used different
       byte ordering formats, causing difficulties in loading
       the encryption key from the backup. This fix prevents the
       issue by adding detection and conversion utilities for
       different system architectures. (Bug #28569367)

     * Using the --uncompress option for restoring a backup not
       created with the --compress option caused the operation
       to fail with the error No such file or directory. With
       this fix, the proper error is thrown in the situation.
       (Bug #28334690)

     * A backup failed with the error Log scan was only able to
       reach... when there was a large amount of DML activities
       occurring in parallel on the server that was being backed
       up. (Bug #27555969)

     * During the InnoDB buffer pool dump in a backup operation,
       mysqlbackup sometimes reported failure for the dump while
       it was actually still in progress. The fix prevents the
       problem by improving the way mysqlbackup checks for the
       status of the dump. (Bug #27185901)
  

Viewing all 1041 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>