row0mysql.h, ha_innodb.cc:

  Sergey Petrunia's ROR code fails to tell handlers that they should retrieve the primary key columns; let InnoDB ALWAYS retrieve them, to fix many bugs and potential bugs
parent 0285686f
...@@ -547,7 +547,10 @@ struct row_prebuilt_struct { ...@@ -547,7 +547,10 @@ struct row_prebuilt_struct {
format */ format */
ulint hint_need_to_fetch_extra_cols; ulint hint_need_to_fetch_extra_cols;
/* normally this is set to 0; if this /* 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 then we should at least retrieve all
columns in the primary key; if this columns in the primary key; if this
is set to ROW_RETRIEVE_ALL_COLS, then is set to ROW_RETRIEVE_ALL_COLS, then
...@@ -620,6 +623,9 @@ struct row_prebuilt_struct { ...@@ -620,6 +623,9 @@ struct row_prebuilt_struct {
/* Values for hint_need_to_fetch_extra_cols */ /* Values for hint_need_to_fetch_extra_cols */
#define ROW_RETRIEVE_PRIMARY_KEY 1 #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 #define ROW_RETRIEVE_ALL_COLS 2
......
...@@ -2208,7 +2208,13 @@ build_template( ...@@ -2208,7 +2208,13 @@ build_template(
ulint n_fields; ulint n_fields;
ulint n_requested_fields = 0; ulint n_requested_fields = 0;
ibool fetch_all_in_key = FALSE; 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; ulint i;
if (prebuilt->select_lock_type == LOCK_X) { if (prebuilt->select_lock_type == LOCK_X) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment