summaryrefslogtreecommitdiff
path: root/sql/sql_explain.h
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_explain.h')
-rw-r--r--sql/sql_explain.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/sql/sql_explain.h b/sql/sql_explain.h
index 852dc2df604..73b9eb19435 100644
--- a/sql/sql_explain.h
+++ b/sql/sql_explain.h
@@ -212,6 +212,8 @@ public:
#ifndef DBUG_OFF
select_lex(NULL),
#endif
+ linkage(UNSPECIFIED_TYPE),
+ is_lateral(false),
message(NULL),
having(NULL), having_value(Item::COND_UNDEF),
using_temporary(false), using_filesort(false),
@@ -219,11 +221,15 @@ public:
aggr_tree(NULL)
{}
+ void add_linkage(Json_writer *writer);
+
public:
#ifndef DBUG_OFF
SELECT_LEX *select_lex;
#endif
const char *select_type;
+ enum sub_select_type linkage;
+ bool is_lateral;
/*
If message != NULL, this is a degenerate join plan, and all subsequent
@@ -326,7 +332,9 @@ public:
/////////////////////////////////////////////////////////////////////////////
-/*
+extern const char *unit_operation_text[4];
+
+/*
Explain structure for a UNION.
A UNION may or may not have "Using filesort".
@@ -342,6 +350,7 @@ public:
{}
enum explain_node_type get_type() { return EXPLAIN_UNION; }
+ unit_common_op operation;
int get_select_id()
{
@@ -592,8 +601,8 @@ public:
key_name= NULL;
key_len= (uint)-1;
}
- void set(MEM_ROOT *root, KEY *key_name, uint key_len_arg);
- void set_pseudo_key(MEM_ROOT *root, const char *key_name);
+ bool set(MEM_ROOT *root, KEY *key_name, uint key_len_arg);
+ bool set_pseudo_key(MEM_ROOT *root, const char *key_name);
inline const char *get_key_name() const { return key_name; }
inline uint get_key_len() const { return key_len; }