summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2011-05-16 22:39:43 -0700
committerIgor Babaev <igor@askmonty.org>2011-05-16 22:39:43 -0700
commit704f97035fed1a454ea3300d2ad5dda906dbce50 (patch)
tree7204d0246b026782b99b8effe9a0ec682e90e209 /sql/field.cc
parent7b797fe66d7167a8f5cbb071a06a640a627f2186 (diff)
parenta8be09a9f26b43139ad84ead314898d23394f673 (diff)
downloadmariadb-git-704f97035fed1a454ea3300d2ad5dda906dbce50.tar.gz
Merged the code of MWL#106 into 5.3
Resolved all conflicts, bad merges and fixed a few minor bugs in the code. Commented out the queries from multi_update, view, subselect_sj, func_str, derived_view, view_grant that failed either with crashes in ps-protocol or with wrong results. The failures are clear indications of some bugs in the code and these bugs are to be fixed.
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 461d6c1eda2..3329d21f9d3 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -10484,3 +10484,27 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code,
field_name);
}
}
+
+
+/*
+ @brief
+ Return possible keys for a field
+
+ @details
+ Return bit map of keys over this field which can be used by the range
+ optimizer. For a field of a generic table such keys are all keys that starts
+ from this field. For a field of a materialized derived table/view such keys
+ are all keys in which this field takes a part. This is less restrictive as
+ keys for a materialized derived table/view are generated on the fly from
+ present fields, thus the case when a field for the beginning of a key is
+ absent is impossible.
+
+ @return map of possible keys
+*/
+
+key_map Field::get_possible_keys()
+{
+ DBUG_ASSERT(table->pos_in_table_list);
+ return (table->pos_in_table_list->is_materialized_derived() ?
+ part_of_key : key_start);
+}