summaryrefslogtreecommitdiff
path: root/sql/table.h
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2011-05-29 12:58:44 +0400
committerSergey Petrunya <psergey@askmonty.org>2011-05-29 12:58:44 +0400
commit5cd18326c2167ddf1fe989154c519809cd26f175 (patch)
tree0166109cba0ae1b9b6bfa81d8c38ecd1a0fe2276 /sql/table.h
parent8ce2e1bcbe1f00b6030b1c82ea62b3a64b1d0de9 (diff)
parent4efe046352f61cc7b8a44a604f96f8b68cf155c0 (diff)
downloadmariadb-git-5cd18326c2167ddf1fe989154c519809cd26f175.tar.gz
Merge 5.3->main -> 5.3-mwl90
Diffstat (limited to 'sql/table.h')
-rw-r--r--sql/table.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/sql/table.h b/sql/table.h
index 4278c3c9c35..4e198116fe2 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -66,7 +66,8 @@ typedef struct st_order {
bool counter_used; /* parameter was counter of columns */
Field *field; /* If tmp-table group */
char *buff; /* If tmp-table group */
- table_map used, depend_map;
+ table_map used; /* NOTE: the below is only set to 0 but is still used by eq_ref_table */
+ table_map depend_map;
} ORDER;
/**
@@ -966,6 +967,12 @@ struct st_table {
file->extra(HA_EXTRA_KEYREAD);
DBUG_VOID_RETURN;
}
+ /*
+ Returns TRUE if the table is filled at execution phase (and so, the
+ optimizer must not do anything that depends on the contents of the table,
+ like range analysis or constant table detection)
+ */
+ bool is_filled_at_execution();
inline void disable_keyread()
{
DBUG_ENTER("disable_keyread");
@@ -1194,7 +1201,7 @@ class Item_in_subselect;
1) table (TABLE_LIST::view == NULL)
- base table
(TABLE_LIST::derived == NULL)
- - subquery - TABLE_LIST::table is a temp table
+ - FROM-clause subquery - TABLE_LIST::table is a temp table
(TABLE_LIST::derived != NULL)
- information schema table
(TABLE_LIST::schema_table != NULL)
@@ -1213,6 +1220,8 @@ class Item_in_subselect;
(TABLE_LIST::natural_join != NULL)
- JOIN ... USING
(TABLE_LIST::join_using_fields != NULL)
+ - semi-join nest (sj_on_expr!= NULL && sj_subq_pred!=NULL)
+ 4) jtbm semi-join (jtbm_subselect != NULL)
*/
class Index_hint;
@@ -1255,8 +1264,15 @@ struct TABLE_LIST
*/
table_map sj_inner_tables;
/* Number of IN-compared expressions */
- uint sj_in_exprs;
+ uint sj_in_exprs;
+
+ /* If this is a non-jtbm semi-join nest: corresponding subselect predicate */
Item_in_subselect *sj_subq_pred;
+
+ /* If this is a jtbm semi-join object: corresponding subselect predicate */
+ Item_in_subselect *jtbm_subselect;
+ uint jtbm_table_no;
+
SJ_MATERIALIZATION_INFO *sj_mat_info;
/*