Articles

MySQL 8.0 Labs: [Recursive] Common Table Expressions in MySQL (CTEs), Part Two and Three

I did more CTE blogging: check it out here and here !

MySQL 8.0 Labs: [Recursive] Common Table Expressions in MySQL (CTEs)

I realize that these last months I have not published anything... it's because I was quite busy developing a prominent feature: [Recursive] Common Table Expressions , also known as [recursive] CTE , [recursive] subquery factoring , WITH [RECURSIVE] clause. This feature is available today, in a Labs release of the MySQL Server. In my post here , you will find more information: syntax, capacities, examples... Feels good to have this big piece of work finally out!

Using the aggregate functions ANY, SOME, EVERY with MySQL

Hello! I have posted this entry on the MySQL Server team's blog: Using the aggregate functions ANY, SOME, EVERY with MySQL   .

Storing UUID Values in MySQL Tables

Hello! I have posted this entry on the MySQL Server team's blog: Storing UUID Values in MySQL Tables

When ONLY_FULL_GROUP_BY Won’t See the Query Is Deterministic…

Hi! Just to say I wrote this new post about only_full_group_by tricks, on the MySQL Server team's blog.

MySQL 5.7: only_full_group_by Improved, Recognizing Functional Dependencies, Enabled by Default!

I just posted on the Server team's blog , an account on my recent only_full_group_by work. We have made significant improvements in 5.7.5, worth a look!

Re-factoring some internals of prepared statements in 5.7

[ this is a re-posting of what I published on the  MySQL server team blog a few days ago ]   When the MySQL server receives a SELECT query, the query goes through several consecutive phases: parsing : SQL words are recognized, the query is split into different parts following the SQL grammar rules: a list of selected expressions, a list of tables to read, a WHERE condition, … resolution : the output of the parsing stage contains names of columns and names of tables. Resolution is about making sense out of this. For example, in “ WHERE foo=3 “, “foo” is a column name without a table name; by applying SQL name resolution rules, we discover the table who contains “foo” (it can be complicated if subqueries or outer joins are involved). optimization : finding the best way to read tables: the best order of tables, and for each table, the best way to access it (index lookup, index scan, …). The output is the so-called “plan”. execution : we read tables as dictated ...