summaryrefslogtreecommitdiff
path: root/sql/sql_class.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r--sql/sql_class.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 90c550d6a30..a9eec4fcf29 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -2370,7 +2370,11 @@ CHANGED_TABLE_LIST* THD::changed_table_dup(const char *key, long key_length)
int THD::send_explain_fields(select_result *result, uint8 explain_flags, bool is_analyze)
{
List<Item> field_list;
- make_explain_field_list(field_list, explain_flags, is_analyze);
+ if (lex->explain_json)
+ make_explain_json_field_list(field_list);
+ else
+ make_explain_field_list(field_list, explain_flags, is_analyze);
+
result->prepare(field_list, NULL);
return (result->send_result_set_metadata(field_list,
Protocol::SEND_NUM_ROWS |
@@ -2378,6 +2382,13 @@ int THD::send_explain_fields(select_result *result, uint8 explain_flags, bool is
}
+void THD::make_explain_json_field_list(List<Item> &field_list)
+{
+ Item *item= new Item_empty_string("EXPLAIN", 78, system_charset_info);
+ field_list.push_back(item);
+}
+
+
/*
Populate the provided field_list with EXPLAIN output columns.
this->lex->describe has the EXPLAIN flags