diff options
author | Sergey Glukhov <sergey.glukhov@oracle.com> | 2011-08-02 11:33:45 +0400 |
---|---|---|
committer | Sergey Glukhov <sergey.glukhov@oracle.com> | 2011-08-02 11:33:45 +0400 |
commit | de3693a1cd292af3efd8841414da866ee2c2e1de (patch) | |
tree | 12ae3424978cad870dff4198962862e5c0573ab0 /sql/sql_lex.h | |
parent | 7841c3f574a7a12b8ed44001b92da7f28764de63 (diff) | |
download | mariadb-git-de3693a1cd292af3efd8841414da866ee2c2e1de.tar.gz |
Bug#11766594 59736: SELECT DISTINCT.. INCORRECT RESULT WITH DETERMINISTIC FUNCTION IN WHERE C
There is an optimization of DISTINCT in JOIN::optimize()
which depends on THD::used_tables value. Each SELECT statement
inside SP resets used_tables value(see mysql_select()) and it
leads to wrong result. The fix is to replace THD::used_tables
with LEX::used_tables.
Diffstat (limited to 'sql/sql_lex.h')
-rw-r--r-- | sql/sql_lex.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/sql_lex.h b/sql/sql_lex.h index b4dbbc5162e..035fa1fde91 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -1836,6 +1836,16 @@ typedef struct st_lex : public Query_tables_list uint create_select_pos; bool create_select_in_comment; + /* + The set of those tables whose fields are referenced in all subqueries + of the query. + TODO: possibly this it is incorrect to have used tables in LEX because + with subquery, it is not clear what does the field mean. To fix this + we should aggregate used tables information for selected expressions + into the select_lex. + */ + table_map used_tables; + st_lex(); virtual ~st_lex() |