summaryrefslogtreecommitdiff
path: root/sql/sql_select.h
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2014-11-29 01:08:18 +0300
committerSergei Petrunia <psergey@askmonty.org>2014-11-29 01:08:18 +0300
commit0b5d989c894a14ebcb786940fafd025e31523d8b (patch)
treed1798a98c1f8f89f9ab9000e2d5e9be4e3e7a845 /sql/sql_select.h
parent2ac3b39e68bf6bf1b56e6eafd290c0a78368d0be (diff)
downloadmariadb-git-0b5d989c894a14ebcb786940fafd025e31523d8b.tar.gz
EXPLAIN FORMAT=JSON: Add support for non-merged semi-joins
Diffstat (limited to 'sql/sql_select.h')
-rw-r--r--sql/sql_select.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/sql/sql_select.h b/sql/sql_select.h
index 9463005b2ba..42b2e6b31c2 100644
--- a/sql/sql_select.h
+++ b/sql/sql_select.h
@@ -527,6 +527,21 @@ typedef struct st_join_table {
bool preread_init();
bool is_sjm_nest() { return MY_TEST(bush_children); }
+
+ /*
+ If this join_tab reads a non-merged semi-join (also called jtbm), return
+ the select's number. Otherwise, return 0.
+ */
+ int get_non_merged_semijoin_select() const
+ {
+ Item_in_subselect *subq;
+ if (table->pos_in_table_list &&
+ (subq= table->pos_in_table_list->jtbm_subselect))
+ {
+ return subq->unit->first_select()->select_number;
+ }
+ return 0; /* Not a merged semi-join */
+ }
bool access_from_tables_is_allowed(table_map used_tables,
table_map sjm_lookup_tables)