summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--innobase/include/row0mysql.h8
-rw-r--r--sql/ha_innodb.cc8
2 files changed, 14 insertions, 2 deletions
diff --git a/innobase/include/row0mysql.h b/innobase/include/row0mysql.h
index d4634482752..ce86efa2fc7 100644
--- a/innobase/include/row0mysql.h
+++ b/innobase/include/row0mysql.h
@@ -547,7 +547,10 @@ struct row_prebuilt_struct {
format */
ulint hint_need_to_fetch_extra_cols;
/* normally this is set to 0; if this
- is set to ROW_RETRIEVE_PRIMARY_KEY,
+ is set to ROW_RETRIEVE_PRIMARY_KEY
+ (that value is obsolete starting from
+ 5.0.2, because we always fetch the
+ primary key cols),
then we should at least retrieve all
columns in the primary key; if this
is set to ROW_RETRIEVE_ALL_COLS, then
@@ -620,6 +623,9 @@ struct row_prebuilt_struct {
/* Values for hint_need_to_fetch_extra_cols */
#define ROW_RETRIEVE_PRIMARY_KEY 1
+ /* value 1 is obsolete starting from
+ 5.0.2, because we always fetch the
+ primary key cols */
#define ROW_RETRIEVE_ALL_COLS 2
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc
index c7384857d79..f40421092da 100644
--- a/sql/ha_innodb.cc
+++ b/sql/ha_innodb.cc
@@ -2208,7 +2208,13 @@ build_template(
ulint n_fields;
ulint n_requested_fields = 0;
ibool fetch_all_in_key = FALSE;
- ibool fetch_primary_key_cols = FALSE;
+ ibool fetch_primary_key_cols = TRUE; /* The ROR code in
+ opt_range.cc assumes that the
+ primary key cols are always
+ retrieved. Starting from
+ MySQL-5.0.2, let us always
+ fetch them, even though it
+ wastes some CPU. */
ulint i;
if (prebuilt->select_lock_type == LOCK_X) {