From: Date: November 16 2007 5:39pm Subject: bk commit into 6.0 tree (sergefp:1.2661) WL#2771 List-Archive: http://lists.mysql.com/commits/37971 Message-Id: <20071116163935.3C67F75808A@foxhole.localdomain> Below is the list of changes that have just been committed into a local 6.0 repository of psergey. When psergey does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet@stripped, 2007-11-16 19:39:21+03:00, sergefp@stripped +3 -0 Temporary fix: make "read before update" optimization work with changes in MRR interface. This code will need to be removed when this is merged together with WL#2771 Batched Key Access sql/ha_ndbcluster.cc@stripped, 2007-11-16 19:39:12+03:00, sergefp@stripped +3 -2 Temporary fix: make "read before update" optimization work with changes in MRR interface. This code will need to be removed when this is merged together with WL#2771 Batched Key Access sql/handler.h@stripped, 2007-11-16 19:39:12+03:00, sergefp@stripped +1 -0 Temporary fix: make "read before update" optimization work with changes in MRR interface. This code will need to be removed when this is merged together with WL#2771 Batched Key Access sql/opt_range.cc@stripped, 2007-11-16 19:39:12+03:00, sergefp@stripped +5 -0 Temporary fix: make "read before update" optimization work with changes in MRR interface. This code will need to be removed when this is merged together with WL#2771 Batched Key Access diff -Nrup a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc --- a/sql/ha_ndbcluster.cc 2007-11-13 23:31:09 +03:00 +++ b/sql/ha_ndbcluster.cc 2007-11-16 19:39:12 +03:00 @@ -11032,10 +11032,11 @@ int ha_ndbcluster::multi_range_read_next { DBUG_PRINT("info", ("using read before write removal optimisation")); KEY* key_info= table->key_info + active_index; - key_restore(table->record[0], (uchar*)multi_range_curr->start_key.key, + key_restore(table->record[0], + mrr_get_lookup_key(mrr_iter, first_running_range), key_info, key_info->key_length); table->status= 0; - multi_range_curr++; + //multi_range_curr++; DBUG_RETURN(0); } else if (mrr_persistent_flag_storage(mrr_iter, first_running_range) & UNIQUE_RANGE) diff -Nrup a/sql/handler.h b/sql/handler.h --- a/sql/handler.h 2007-11-12 16:20:22 +03:00 +++ b/sql/handler.h 2007-11-16 19:39:12 +03:00 @@ -1007,6 +1007,7 @@ typedef struct st_range_seq_if } RANGE_SEQ_IF; uint16 &mrr_persistent_flag_storage(range_seq_t seq, uint idx); +uchar *mrr_get_lookup_key(range_seq_t seq, uint idx); char* &mrr_get_ptr_by_idx(range_seq_t seq, uint idx); class COST_VECT diff -Nrup a/sql/opt_range.cc b/sql/opt_range.cc --- a/sql/opt_range.cc 2007-10-25 11:39:53 +04:00 +++ b/sql/opt_range.cc 2007-11-16 19:39:12 +03:00 @@ -8401,6 +8401,11 @@ uint16 &mrr_persistent_flag_storage(rang return ctx->first[idx]->flag; } +uchar *mrr_get_lookup_key(range_seq_t seq, uint idx) +{ + QUICK_RANGE_SEQ_CTX *ctx= (QUICK_RANGE_SEQ_CTX*)seq; + return ctx->first[idx]->min_key; +} /* MRR range sequence interface: array impl: utility func for NDB