From: Date: September 30 2005 12:20pm Subject: bk commit into 5.0 tree (sergefp:1.2028) BUG#13081 List-Archive: http://lists.mysql.com/internals/30554 X-Bug: 13081 Message-Id: <20050930102022.B15AC37AFF@newbox.mylan> Below is the list of changes that have just been committed into a local 5.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 1.2028 05/09/30 14:20:15 sergefp@stripped +3 -0 BUG#13081: Disable ROR-index_merge for NDB tables (by adding a HA_KEY_SCAN_NOT_ROR index flag) as NDB index scans are not guaranteed to be ROR scans. sql/opt_range.cc 1.190 05/09/30 14:20:11 sergefp@stripped +2 -0 BUG#13081: Disable ROR-index_merge for NDB tables (by adding a HA_KEY_SCAN_NOT_ROR index flag) as NDB index scans are not guaranteed to be ROR scans. sql/handler.h 1.155 05/09/30 14:20:11 sergefp@stripped +7 -0 BUG#13081: Disable ROR-index_merge for NDB tables (by adding a HA_KEY_SCAN_NOT_ROR index flag) as NDB index scans are not guaranteed to be ROR scans. sql/ha_ndbcluster.cc 1.210 05/09/30 14:20:10 sergefp@stripped +2 -1 BUG#13081: Disable ROR-index_merge for NDB tables (by adding a HA_KEY_SCAN_NOT_ROR index flag) as NDB index scans are not guaranteed to be ROR scans. # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: sergefp # Host: newbox.mylan # Root: /home/psergey/mysql-5.0-sept30-test --- 1.154/sql/handler.h 2005-09-23 03:58:04 +04:00 +++ 1.155/sql/handler.h 2005-09-30 14:20:11 +04:00 @@ -98,6 +98,13 @@ #define HA_ONLY_WHOLE_INDEX 16 /* Can't use part key searches */ #define HA_KEYREAD_ONLY 64 /* Support HA_EXTRA_KEYREAD */ +/* + Index scan will not return records in rowid order. Not guaranteed to be + set for unordered (e.g. HASH) indexes. +*/ +#define HA_KEY_SCAN_NOT_ROR 128 + + /* operations for disable/enable indexes */ #define HA_KEY_SWITCH_NONUNIQ 0 #define HA_KEY_SWITCH_ALL 1 --- 1.189/sql/opt_range.cc 2005-09-21 21:36:11 +04:00 +++ 1.190/sql/opt_range.cc 2005-09-30 14:20:11 +04:00 @@ -5117,6 +5117,8 @@ if (cpk_scan) param->is_ror_scan= TRUE; } + if (param->table->file->index_flags(key, 0, TRUE) & HA_KEY_SCAN_NOT_ROR) + param->is_ror_scan= FALSE; DBUG_PRINT("exit", ("Records: %lu", (ulong) records)); DBUG_RETURN(records); } --- 1.209/sql/ha_ndbcluster.cc 2005-09-28 13:34:49 +04:00 +++ 1.210/sql/ha_ndbcluster.cc 2005-09-30 14:20:10 +04:00 @@ -1209,7 +1209,8 @@ DBUG_ENTER("ha_ndbcluster::index_flags"); DBUG_PRINT("info", ("idx_no: %d", idx_no)); DBUG_ASSERT(get_index_type_from_table(idx_no) < index_flags_size); - DBUG_RETURN(index_type_flags[get_index_type_from_table(idx_no)]); + DBUG_RETURN(index_type_flags[get_index_type_from_table(idx_no)] | + HA_KEY_SCAN_NOT_ROR); } static void shrink_varchar(Field* field, const byte* & ptr, char* buf)