A new, simple way to figure out why your recursive CTE is running away

In MySQL 8.0.1, we introduced support for recursive common table expressions (CTE). There are quite a few blog entries showcasing the feature, starting from this one, and there is also a complete documentation. Today, I would like to present a solution to a problem which nearly everybody meets when writing queries with recursive CTE’s: when infinite recursion happens, how to debug ?…

MySQL Shell 8.0.19 – What’s New?

The MySQL Development team is proud to announce version 8.0.19 of the MySQL Shell, with the following features:

  • Admin API
    • MySQL InnoDB ReplicaSet
    • MySQL Router Management Functions
    • Metadata Upgrade
    • Router Management Functions
  • Shell JavaScript Plugins: require() function enhancements.
  • Upgrade Checker Updates

MySQL InnoDB ReplicaSet

Similar to MySQL InnoDB Cluster (based on Group Replication), this release of the Shell introduces the MySQL InnoDB Replicaset which provides an easy to use management solution for MySQL Replication.…

The all new MySQL InnoDB ReplicaSet

Following MySQL InnoDB Cluster as our first, fully integrated MySQL High Availability solution based on Group Replication, MySQL Shell 8.0.19 includes MySQL InnoDB ReplicaSet which delivers another complete solution, this time based on MySQL Replication.

The basic idea for InnoDB ReplicaSet is to do the same for classic MySQL Replication as InnoDB Cluster did for Group Replication.…

Antijoin in MySQL 8

In MySQL 8.0.17, we made an observation in the well-known TPC-H benchmark for one particular query. The query was executing 20% faster than in MySQL 8.0.16. This improvement is because of the “antijoin” optimization which I implemented. Here is its short mention in the release notes:

“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.”