[ 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 …