diff options
Diffstat (limited to 'sql/sql_lex.h')
-rw-r--r-- | sql/sql_lex.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 057d59d3ccf..d8549be44c7 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -1799,6 +1799,28 @@ typedef struct st_lex : public Query_tables_list bool table_or_sp_used(); bool is_partition_management() const; + + /** + @brief check if the statement is a single-level join + @return result of the check + @retval TRUE The statement doesn't contain subqueries, unions and + stored procedure calls. + @retval FALSE There are subqueries, UNIONs or stored procedure calls. + */ + bool is_single_level_stmt() + { + /* + This check exploits the fact that the last added to all_select_list is + on its top. So select_lex (as the first added) will be at the tail + of the list. + */ + if (&select_lex == all_selects_list && !sroutines.records) + { + DBUG_ASSERT(!all_selects_list->next_select_in_list()); + return TRUE; + } + return FALSE; + } } LEX; struct st_lex_local: public st_lex |