diff options
Diffstat (limited to 'sql/sql_lex.cc')
-rw-r--r-- | sql/sql_lex.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index b8ce3b6720e..82cdd4ead7b 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -975,6 +975,7 @@ int MYSQLlex(void *arg, void *yythd) lip->lookahead_token= -1; *yylval= *(lip->lookahead_yylval); lip->lookahead_yylval= NULL; + lip->m_digest_psi= MYSQL_ADD_TOKEN(lip->m_digest_psi, token, yylval); return token; } @@ -992,8 +993,12 @@ int MYSQLlex(void *arg, void *yythd) token= lex_one_token(arg, yythd); switch(token) { case CUBE_SYM: + lip->m_digest_psi= MYSQL_ADD_TOKEN(lip->m_digest_psi, WITH_CUBE_SYM, + yylval); return WITH_CUBE_SYM; case ROLLUP_SYM: + lip->m_digest_psi= MYSQL_ADD_TOKEN(lip->m_digest_psi, WITH_ROLLUP_SYM, + yylval); return WITH_ROLLUP_SYM; default: /* @@ -1002,6 +1007,7 @@ int MYSQLlex(void *arg, void *yythd) lip->lookahead_yylval= lip->yylval; lip->yylval= NULL; lip->lookahead_token= token; + lip->m_digest_psi= MYSQL_ADD_TOKEN(lip->m_digest_psi, WITH, yylval); return WITH; } break; @@ -1009,6 +1015,7 @@ int MYSQLlex(void *arg, void *yythd) break; } + lip->m_digest_psi= MYSQL_ADD_TOKEN(lip->m_digest_psi, token, yylval); return token; } @@ -2593,7 +2600,8 @@ bool LEX::can_be_merged() if (tmp_unit->first_select()->parent_lex == this && (tmp_unit->item == 0 || (tmp_unit->item->place() != IN_WHERE && - tmp_unit->item->place() != IN_ON))) + tmp_unit->item->place() != IN_ON && + tmp_unit->item->place() != SELECT_LIST))) { selects_allow_merge= 0; break; |