diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2015-04-08 10:55:51 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2015-04-08 10:55:51 +0400 |
commit | 313a970cbe9ac523b0584d293e40bff66d4fbafc (patch) | |
tree | e03a162f968ae20eede7f9d78d4f929bbe86bc0c /sql/table.cc | |
parent | 7d9e94e2e6c32b906d1d8469e58bc04b8da1c121 (diff) | |
download | mariadb-git-bb-mdev7922.tar.gz |
MDEV-7922 - ERROR 1939 (HY000): Engine PERFORMANCE_SCHEMA failed to discoverbb-mdev7922
table
Performance schema discovery fails if connection has no active database set.
This happened due to restriction in SQL parser: table name with no database name
is ambiguous in such case.
Fixed by temporary substitution of default database with being discovered table
database.
Diffstat (limited to 'sql/table.cc')
-rw-r--r-- | sql/table.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/table.cc b/sql/table.cc index 5c85d5668ed..54a686197b0 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -2158,6 +2158,7 @@ int TABLE_SHARE::init_from_sql_statement_string(THD *thd, bool write, uint unused2; handlerton *hton= plugin_hton(db_plugin); LEX_CUSTRING frm= {0,0}; + LEX_STRING db_backup= { thd->db, thd->db_length }; DBUG_ENTER("TABLE_SHARE::init_from_sql_statement_string"); @@ -2185,6 +2186,7 @@ int TABLE_SHARE::init_from_sql_statement_string(THD *thd, bool write, else thd->set_n_backup_active_arena(arena, &backup); + thd->reset_db(db.str, db.length); lex_start(thd); if ((error= parse_sql(thd, & parser_state, NULL) || @@ -2213,6 +2215,7 @@ int TABLE_SHARE::init_from_sql_statement_string(THD *thd, bool write, ret: my_free(const_cast<uchar*>(frm.str)); lex_end(thd->lex); + thd->reset_db(db_backup.str, db_backup.length); thd->lex= old_lex; if (arena) thd->restore_active_arena(arena, &backup); |