diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2011-05-29 12:58:44 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2011-05-29 12:58:44 +0400 |
commit | 5cd18326c2167ddf1fe989154c519809cd26f175 (patch) | |
tree | 0166109cba0ae1b9b6bfa81d8c38ecd1a0fe2276 /sql/table.h | |
parent | 8ce2e1bcbe1f00b6030b1c82ea62b3a64b1d0de9 (diff) | |
parent | 4efe046352f61cc7b8a44a604f96f8b68cf155c0 (diff) | |
download | mariadb-git-5cd18326c2167ddf1fe989154c519809cd26f175.tar.gz |
Merge 5.3->main -> 5.3-mwl90
Diffstat (limited to 'sql/table.h')
-rw-r--r-- | sql/table.h | 22 |
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; /* |