17
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
#ifndef DRIZZLED_NESTED_JOIN_H
21
#define DRIZZLED_NESTED_JOIN_H
22
23
#include <drizzled/item.h>
23
24
#include <drizzled/lex_string.h>
34
This constructor serves for creation of NestedJoin instances
49
37
/* list of elements in the nested join */
50
38
List<TableList> join_list;
52
40
/* bitmap of tables in the nested join */
53
41
table_map used_tables;
55
43
/* tables that rejects nulls */
56
44
table_map not_null_tables;
65
53
by the join optimizer.
66
54
Before each use the counters are zeroed by reset_nj_counters.
71
58
/* Bit used to identify this nested join*/
72
59
std::bitset<64> nj_map;
75
True if this join nest node is completely covered by the query execution
76
plan. This means two things.
78
1. All tables on its @c join_list are covered by the plan.
80
2. All child join nest nodes are fully covered.
83
bool is_fully_covered() const { return join_list.size() == counter_; }
85
/* To get the table_map sj_depends_on */
86
table_map getSjDependsOn() const
91
/* To set the table_map sj_depends_on */
92
void setSjDependsOn(const table_map &in_sj_depends_on)
94
sj_depends_on= in_sj_depends_on;
97
/* To get the table_map sj_corr_tables */
98
table_map getSjCorrTables() const
100
return sj_corr_tables;
103
/* To set the table_map sj_corr_tables */
104
void setSjCorrTables(const table_map &in_sj_corr_tables)
106
sj_corr_tables= in_sj_corr_tables;
109
/* To get the List sj_outer_expr_list */
110
const List<Item>& getSjOuterExprList() const
112
return sj_outer_expr_list;
115
/* To set the List sj_outer_expr_list */
116
void setSjOuterExprList(const List<Item> &in_sj_outer_expr_list)
118
sj_outer_expr_list= in_sj_outer_expr_list;
123
62
(Valid only for semi-join nests) Bitmap of tables outside the semi-join
124
63
that are used within the semi-join's ON condition.
126
65
table_map sj_depends_on;
128
66
/* Outer non-trivially correlated tables */
129
67
table_map sj_corr_tables;
131
69
List<Item> sj_outer_expr_list;
72
True if this join nest node is completely covered by the query execution
73
plan. This means two things.
75
1. All tables on its @c join_list are covered by the plan.
77
2. All child join nest nodes are fully covered.
79
bool is_fully_covered() const { return join_list.elements == counter_; }
135
82
} /* namespace drizzled */
84
#endif /* DRIZZLED_NESTED_JOIN_H */