summaryrefslogtreecommitdiff
path: root/sql/sql_lex.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_lex.cc')
-rw-r--r--sql/sql_lex.cc10
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;