2766 Marc Alff 2009-01-12 [merge]
Merge mysql-6.0 --> mysql-6.0-perf
modified:
.bzr-mysql/default.conf
mysql-test/r/innodb_mrr.result
mysql-test/r/join_cache.result
mysql-test/r/subselect3.result
mysql-test/r/subselect3_jcl6.result
mysql-test/t/innodb_mrr.test
mysql-test/t/join_cache.test
mysql-test/t/subselect3.test
sql/ha_ndbcluster.cc
sql/ha_partition.h
sql/handler.h
sql/sql_join_cache.cc
sql/sql_select.cc
sql/sql_select.h
storage/innobase/handler/ha_innodb.cc
storage/myisam/ha_myisam.cc
storage/myisam/ha_myisam.h
2765 Marc Alff 2009-01-12
Added missing files
added:
storage/perfschema/pse_misc.cc
storage/perfschema/pse_misc.h
=== modified file '.bzr-mysql/default.conf'
--- a/.bzr-mysql/default.conf 2009-01-06 18:36:34 +0000
+++ b/.bzr-mysql/default.conf 2009-01-12 18:55:11 +0000
@@ -1,5 +1,5 @@
[MYSQL]
tree_location = bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0-perf
-post_commit_to = commits@stripped
-post_push_to = commits@stripped
-tree_name = mysql-6.0-perf
+post_commit_to = "commits@stripped"
+post_push_to = "commits@stripped"
+tree_name = "mysql-6.0-perf"
=== modified file 'mysql-test/r/innodb_mrr.result'
--- a/mysql-test/r/innodb_mrr.result 2008-09-05 14:36:37 +0000
+++ b/mysql-test/r/innodb_mrr.result 2008-12-29 03:42:30 +0000
@@ -351,3 +351,32 @@ pk
1
5
drop table t1;
+#
+# BUG#39447: Error with NOT NULL condition and LIMIT 1
+#
+CREATE TABLE t1 (
+id int(11) NOT NULL,
+parent_id int(11) DEFAULT NULL,
+name varchar(10) DEFAULT NULL,
+PRIMARY KEY (id),
+KEY ind_parent_id (parent_id)
+) ENGINE=InnoDB;
+insert into t1 (id, parent_id, name) values
+(10,NULL,'A'),
+(20,10,'B'),
+(30,10,'C'),
+(40,NULL,'D'),
+(50,40,'E'),
+(60,40,'F'),
+(70,NULL,'J');
+SELECT id FROM t1 WHERE parent_id IS NOT NULL ORDER BY id DESC LIMIT 1;
+id
+60
+This must show type=index, extra=Using where
+explain SELECT * FROM t1 WHERE parent_id IS NOT NULL ORDER BY id DESC LIMIT 1;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ind_parent_id PRIMARY 4 NULL 2 Using where
+SELECT * FROM t1 WHERE parent_id IS NOT NULL ORDER BY id DESC LIMIT 1;
+id parent_id name
+60 40 F
+drop table t1;
=== modified file 'mysql-test/r/join_cache.result'
--- a/mysql-test/r/join_cache.result 2008-12-07 20:44:24 +0000
+++ b/mysql-test/r/join_cache.result 2009-01-08 05:47:10 +0000
@@ -3576,3 +3576,46 @@ AVG(c)
set join_buffer_size=default;
set join_cache_level=default;
DROP TABLE t1, t2;
+#
+# Bug #41894: big join buffer of level 7 used to join records
+# with null values in place of varchar strings
+#
+CREATE TABLE t1 (a int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+b varchar(127) DEFAULT NULL);
+INSERT INTO t1(a) VALUES (1);
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+CREATE TABLE t2 (a int NOT NULL PRIMARY KEY, b varchar(127) DEFAULT NULL);
+INSERT INTO t2 SELECT * FROM t1;
+CREATE TABLE t3 (a int NOT NULL PRIMARY KEY, b varchar(127) DEFAULT NULL);
+INSERT INTO t3 SELECT * FROM t1;
+set join_cache_level=7;
+set join_buffer_size=1024*1024;
+EXPLAIN
+SELECT COUNT(*) FROM t1,t2,t3
+WHERE t1.a=t2.a AND t2.a=t3.a AND
+t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 16384 Using where
+1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1 Using where; Using join buffer
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.a 1 Using where; Using join buffer
+SELECT COUNT(*) FROM t1,t2,t3
+WHERE t1.a=t2.a AND t2.a=t3.a AND
+t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
+COUNT(*)
+16384
+set join_buffer_size=default;
+set join_cache_level=default;
+DROP TABLE t1,t2,t3;
=== modified file 'mysql-test/r/subselect3.result'
--- a/mysql-test/r/subselect3.result 2008-12-23 04:05:29 +0000
+++ b/mysql-test/r/subselect3.result 2008-12-28 15:00:21 +0000
@@ -1190,3 +1190,36 @@ a
9
set join_cache_level=@save_join_cache_level;
drop table t0, t1;
+#
+# BUG#32665 Query with dependent subquery is too slow
+#
+create table t1 (
+idIndividual int primary key
+);
+insert into t1 values (1),(2);
+create table t2 (
+idContact int primary key,
+contactType int,
+idObj int
+);
+insert into t2 values (1,1,1),(2,2,2),(3,3,3);
+create table t3 (
+idAddress int primary key,
+idContact int,
+postalStripped varchar(100)
+);
+insert into t3 values (1,1, 'foo'), (2,2,'bar');
+The following must be converted to a semi-join:
+explain extended SELECT a.idIndividual FROM t1 a
+WHERE a.idIndividual IN
+( SELECT c.idObj FROM t3 cona
+INNER JOIN t2 c ON c.idContact=cona.idContact
+WHERE cona.postalStripped='T2H3B2'
+ );
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY cona ALL NULL NULL NULL NULL 2 100.00 Using where; Start materialize; Scan
+1 PRIMARY c eq_ref PRIMARY PRIMARY 4 test.cona.idContact 1 100.00 End materialize
+1 PRIMARY a index PRIMARY PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join
buffer
+Warnings:
+Note 1003 select `test`.`a`.`idIndividual` AS `idIndividual` from `test`.`t1` `a` semi
join (`test`.`t3` `cona` join `test`.`t2` `c`) where ((`test`.`c`.`idContact` =
`test`.`cona`.`idContact`) and (`test`.`a`.`idIndividual` = `test`.`c`.`idObj`) and
(`test`.`cona`.`postalStripped` = 'T2H3B2'))
+drop table t1,t2,t3;
=== modified file 'mysql-test/r/subselect3_jcl6.result'
--- a/mysql-test/r/subselect3_jcl6.result 2008-12-23 04:05:29 +0000
+++ b/mysql-test/r/subselect3_jcl6.result 2008-12-28 15:00:21 +0000
@@ -1195,6 +1195,39 @@ a
9
set join_cache_level=@save_join_cache_level;
drop table t0, t1;
+#
+# BUG#32665 Query with dependent subquery is too slow
+#
+create table t1 (
+idIndividual int primary key
+);
+insert into t1 values (1),(2);
+create table t2 (
+idContact int primary key,
+contactType int,
+idObj int
+);
+insert into t2 values (1,1,1),(2,2,2),(3,3,3);
+create table t3 (
+idAddress int primary key,
+idContact int,
+postalStripped varchar(100)
+);
+insert into t3 values (1,1, 'foo'), (2,2,'bar');
+The following must be converted to a semi-join:
+explain extended SELECT a.idIndividual FROM t1 a
+WHERE a.idIndividual IN
+( SELECT c.idObj FROM t3 cona
+INNER JOIN t2 c ON c.idContact=cona.idContact
+WHERE cona.postalStripped='T2H3B2'
+ );
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY cona ALL NULL NULL NULL NULL 2 100.00 Using where; Start materialize; Scan
+1 PRIMARY c eq_ref PRIMARY PRIMARY 4 test.cona.idContact 1 100.00 End materialize; Using
join buffer
+1 PRIMARY a index PRIMARY PRIMARY 4 NULL 2 100.00 Using where; Using index; Using join
buffer
+Warnings:
+Note 1003 select `test`.`a`.`idIndividual` AS `idIndividual` from `test`.`t1` `a` semi
join (`test`.`t3` `cona` join `test`.`t2` `c`) where ((`test`.`c`.`idContact` =
`test`.`cona`.`idContact`) and (`test`.`a`.`idIndividual` = `test`.`c`.`idObj`) and
(`test`.`cona`.`postalStripped` = 'T2H3B2'))
+drop table t1,t2,t3;
set join_cache_level=default;
show variables like 'join_cache_level';
Variable_name Value
=== modified file 'mysql-test/t/innodb_mrr.test'
--- a/mysql-test/t/innodb_mrr.test 2008-09-05 14:36:37 +0000
+++ b/mysql-test/t/innodb_mrr.test 2008-12-29 03:42:30 +0000
@@ -99,3 +99,28 @@ select pk from t1 WHERE `varchar_key` >
select pk from t1 WHERE `int_nokey` IS NULL OR `varchar_key` > 'kr' group by pk;
drop table t1;
+--echo #
+--echo # BUG#39447: Error with NOT NULL condition and LIMIT 1
+--echo #
+CREATE TABLE t1 (
+ id int(11) NOT NULL,
+ parent_id int(11) DEFAULT NULL,
+ name varchar(10) DEFAULT NULL,
+ PRIMARY KEY (id),
+ KEY ind_parent_id (parent_id)
+) ENGINE=InnoDB;
+
+insert into t1 (id, parent_id, name) values
+(10,NULL,'A'),
+(20,10,'B'),
+(30,10,'C'),
+(40,NULL,'D'),
+(50,40,'E'),
+(60,40,'F'),
+(70,NULL,'J');
+
+SELECT id FROM t1 WHERE parent_id IS NOT NULL ORDER BY id DESC LIMIT 1;
+--echo This must show type=index, extra=Using where
+explain SELECT * FROM t1 WHERE parent_id IS NOT NULL ORDER BY id DESC LIMIT 1;
+SELECT * FROM t1 WHERE parent_id IS NOT NULL ORDER BY id DESC LIMIT 1;
+drop table t1;
=== modified file 'mysql-test/t/join_cache.test'
--- a/mysql-test/t/join_cache.test 2008-12-07 20:44:24 +0000
+++ b/mysql-test/t/join_cache.test 2009-01-08 05:47:10 +0000
@@ -976,3 +976,50 @@ set join_buffer_size=default;
set join_cache_level=default;
DROP TABLE t1, t2;
+
+--echo #
+--echo # Bug #41894: big join buffer of level 7 used to join records
+--echo # with null values in place of varchar strings
+--echo #
+
+CREATE TABLE t1 (a int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+ b varchar(127) DEFAULT NULL);
+
+INSERT INTO t1(a) VALUES (1);
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+INSERT INTO t1(b) SELECT b FROM t1;
+
+CREATE TABLE t2 (a int NOT NULL PRIMARY KEY, b varchar(127) DEFAULT NULL);
+INSERT INTO t2 SELECT * FROM t1;
+
+CREATE TABLE t3 (a int NOT NULL PRIMARY KEY, b varchar(127) DEFAULT NULL);
+INSERT INTO t3 SELECT * FROM t1;
+
+set join_cache_level=7;
+set join_buffer_size=1024*1024;
+
+EXPLAIN
+SELECT COUNT(*) FROM t1,t2,t3
+ WHERE t1.a=t2.a AND t2.a=t3.a AND
+ t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
+
+SELECT COUNT(*) FROM t1,t2,t3
+ WHERE t1.a=t2.a AND t2.a=t3.a AND
+ t1.b IS NULL AND t2.b IS NULL AND t3.b IS NULL;
+
+set join_buffer_size=default;
+set join_cache_level=default;
+
+DROP TABLE t1,t2,t3;
=== modified file 'mysql-test/t/subselect3.test'
--- a/mysql-test/t/subselect3.test 2008-12-22 20:10:35 +0000
+++ b/mysql-test/t/subselect3.test 2008-12-28 15:00:21 +0000
@@ -976,3 +976,35 @@ set join_cache_level=6;
select * from t0 where t0.a in (select t1.a from t1 where t1.b=0);
set join_cache_level=@save_join_cache_level;
drop table t0, t1;
+
+--echo #
+--echo # BUG#32665 Query with dependent subquery is too slow
+--echo #
+create table t1 (
+ idIndividual int primary key
+);
+insert into t1 values (1),(2);
+
+create table t2 (
+ idContact int primary key,
+ contactType int,
+ idObj int
+);
+insert into t2 values (1,1,1),(2,2,2),(3,3,3);
+
+create table t3 (
+ idAddress int primary key,
+ idContact int,
+ postalStripped varchar(100)
+);
+
+insert into t3 values (1,1, 'foo'), (2,2,'bar');
+
+--echo The following must be converted to a semi-join:
+explain extended SELECT a.idIndividual FROM t1 a
+WHERE a.idIndividual IN
+ ( SELECT c.idObj FROM t3 cona
+ INNER JOIN t2 c ON c.idContact=cona.idContact
+ WHERE cona.postalStripped='T2H3B2'
+ );
+drop table t1,t2,t3;
=== modified file 'sql/ha_ndbcluster.cc'
--- a/sql/ha_ndbcluster.cc 2008-12-24 11:48:48 +0000
+++ b/sql/ha_ndbcluster.cc 2009-01-12 18:55:11 +0000
@@ -6603,7 +6603,6 @@ void ha_ndbcluster::get_auto_increment(u
HA_NULL_IN_KEY | \
HA_AUTO_PART_KEY | \
HA_NO_PREFIX_CHAR_KEYS | \
- HA_NEED_READ_RANGE_BUFFER | \
HA_CAN_GEOMETRY | \
HA_CAN_BIT_FIELD | \
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION | \
=== modified file 'sql/ha_partition.h'
--- a/sql/ha_partition.h 2009-01-06 18:36:34 +0000
+++ b/sql/ha_partition.h 2009-01-12 18:55:11 +0000
@@ -728,18 +728,6 @@ public:
Is the storage engine capable of handling bit fields?
(MyISAM, NDB)
- HA_NEED_READ_RANGE_BUFFER:
- Is Read Multi-Range supported => need multi read range buffer
- This parameter specifies whether a buffer for read multi range
- is needed by the handler. Whether the handler supports this
- feature or not is dependent of whether the handler implements
- read_multi_range* calls or not. The only handler currently
- supporting this feature is NDB so the partition handler need
- not handle this call. There are methods in handler.cc that will
- transfer those calls into index_read and other calls in the
- index scan module.
- (NDB)
-
HA_PRIMARY_KEY_REQUIRED_FOR_POSITION:
Does the storage engine need a PK for position?
Used with hidden primary key in InnoDB.
=== modified file 'sql/handler.h'
--- a/sql/handler.h 2009-01-06 18:36:34 +0000
+++ b/sql/handler.h 2009-01-12 18:55:11 +0000
@@ -167,14 +167,11 @@ typedef Bitmap<HA_MAX_ALTER_FLAGS> HA_AL
#define HA_FILE_BASED (1 << 26)
#define HA_NO_VARCHAR (1 << 27)
#define HA_CAN_BIT_FIELD (1 << 28) /* supports bit fields */
-#define HA_NEED_READ_RANGE_BUFFER (1 << 29) /* for read_multi_range */
#define HA_ANY_INDEX_MAY_BE_UNIQUE (1 << 30)
#define HA_NO_COPY_ON_ALTER (LL(1) << 31)
#define HA_HAS_RECORDS (LL(1) << 32) /* records() gives exact count*/
/* Has it's own method of binlog logging */
#define HA_HAS_OWN_BINLOGGING (LL(1) << 33)
-#define HA_MRR_CANT_SORT (LL(1) << 34)
-
/*
Engine is capable of row-format and statement-format logging,
respectively
=== modified file 'sql/sql_join_cache.cc'
--- a/sql/sql_join_cache.cc 2008-12-22 19:03:25 +0000
+++ b/sql/sql_join_cache.cc 2009-01-08 05:47:10 +0000
@@ -2446,9 +2446,16 @@ int JOIN_CACHE_BKA_UNIQUE::init()
uint n= buff_size / (pack_length+key_entry_length+size_of_key_ofs);
+ /*
+ TODO: Make a better estimate for this upper bound of
+ the number of records in in the join buffer.
+ */
+ uint max_n= buff_size / (pack_length-length+
+ key_entry_length+size_of_key_ofs);
+
hash_entries= (uint) (n / 0.7);
- if (offset_size(n*key_entry_length) <=
+ if (offset_size(max_n*key_entry_length) <=
size_of_key_ofs)
break;
}
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2008-12-31 13:49:36 +0000
+++ b/sql/sql_select.cc 2009-01-10 10:56:50 +0000
@@ -18734,9 +18734,9 @@ test_if_skip_sort_order(JOIN_TAB *tab,OR
}
if (tab->pre_idx_push_select_cond)
{
+ tab->select_cond= tab->pre_idx_push_select_cond;
if (tab->select)
tab->select->cond= tab->select_cond;
- tab->select_cond= tab->pre_idx_push_select_cond;
}
table->file->ha_index_or_rnd_end();
if (join->select_options & SELECT_DESCRIBE)
=== modified file 'sql/sql_select.h'
--- a/sql/sql_select.h 2008-12-27 19:17:35 +0000
+++ b/sql/sql_select.h 2009-01-08 05:47:10 +0000
@@ -397,12 +397,6 @@ private:
/* Size of the offset of a field within a record in the cache */
uint size_of_fld_ofs;
- /*
- The total maximal length of the fields stored for a record in the cache.
- For blob fields only the sizes of the blob lengths are taken into account.
- */
- uint length;
-
protected:
/* 3 functions below actually do not use the hidden parameter 'this' */
@@ -433,6 +427,12 @@ protected:
}
/*
+ The total maximal length of the fields stored for a record in the cache.
+ For blob fields only the sizes of the blob lengths are taken into account.
+ */
+ uint length;
+
+ /*
Representation of the executed multi-way join through which all needed
context can be accessed.
*/
@@ -891,7 +891,7 @@ public:
attached to the corresponding key entry in the hash table, or without any
association link. When the next record is returned by a call to the MRR
function multi_range_read_next without any association (because if was not
- passed with together with the key) then the key value is extracted from the
+ passed together with the key) then the key value is extracted from the
returned record and searched for it in the hash table. If there is any records
with such key the chain of them will be yielded as the result of this search.
@@ -923,22 +923,23 @@ public:
| V | | | | |
| |key_1|[*]|[*]| | | ... |[*]| ... |[*]| ... | |
+----------------------------------------------------------------------------+
- ^
- |
+ ^ ^ ^
+ | i-th entry j-th entry
hash table
i-th hash entry:
- circular record chain for key_3:
- record_2_1
- record_2_2 (points to record_2_1)
-
- j-th hash entry:
circular record chain for key_1:
record_1_1
record_1_2
record_1_3 (points to record_1_1)
circular record chain for key_3:
record_3_1 (points to itself)
+
+ j-th hash entry:
+ circular record chain for key_2:
+ record_2_1
+ record_2_2 (points to record_2_1)
+
*/
class JOIN_CACHE_BKA_UNIQUE :public JOIN_CACHE_BKA
=== modified file 'storage/innobase/handler/ha_innodb.cc'
--- a/storage/innobase/handler/ha_innodb.cc 2008-12-24 11:48:48 +0000
+++ b/storage/innobase/handler/ha_innodb.cc 2009-01-12 18:55:11 +0000
@@ -999,8 +999,7 @@ ha_innobase::ha_innobase(handlerton *hto
HA_PRIMARY_KEY_IN_READ_INDEX |
HA_BINLOG_ROW_CAPABLE |
HA_CAN_GEOMETRY | HA_PARTIAL_COLUMN_READ |
- HA_TABLE_SCAN_ON_INDEX | HA_NEED_READ_RANGE_BUFFER |
- HA_MRR_CANT_SORT),
+ HA_TABLE_SCAN_ON_INDEX),
primary_key(0), /* needs initialization because index_flags() may be called
before this is set to the real value. It's ok to have any
value here because it doesn't matter if we return the
=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc 2008-12-24 11:48:48 +0000
+++ b/storage/myisam/ha_myisam.cc 2009-01-12 18:55:11 +0000
@@ -550,8 +550,7 @@ ha_myisam::ha_myisam(handlerton *hton, T
HA_DUPLICATE_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY |
HA_FILE_BASED | HA_CAN_GEOMETRY | HA_NO_TRANSACTIONS |
HA_CAN_INSERT_DELAYED | HA_CAN_BIT_FIELD | HA_CAN_RTREEKEYS |
- HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT |
- HA_NEED_READ_RANGE_BUFFER | HA_MRR_CANT_SORT),
+ HA_HAS_RECORDS | HA_STATS_RECORDS_IS_EXACT),
can_enable_indexes(1)
{}
@@ -1602,23 +1601,6 @@ int ha_myisam::index_next_same(uchar *bu
return error;
}
-int ha_myisam::read_range_first(const key_range *start_key,
- const key_range *end_key,
- bool eq_range_arg,
- bool sorted /* ignored */)
-{
- int res;
- res= handler::read_range_first(start_key, end_key, eq_range_arg, sorted);
- return res;
-}
-
-
-int ha_myisam::read_range_next()
-{
- int res= handler::read_range_next();
- return res;
-}
-
int ha_myisam::rnd_init(bool scan)
{
@@ -1683,7 +1665,6 @@ int ha_myisam::info(uint flag)
stats.max_data_file_length= misam_info.max_data_file_length;
stats.max_index_file_length= misam_info.max_index_file_length;
stats.create_time= misam_info.create_time;
- stats.mrr_length_per_rec= misam_info.reflength + 8; // 8 = max(sizeof(void *))
/*
We want the value of stats.mrr_length_per_rec to be platform independent.
The size of the chunk at the end of the join buffer used for MRR needs
=== modified file 'storage/myisam/ha_myisam.h'
--- a/storage/myisam/ha_myisam.h 2008-08-26 20:38:29 +0000
+++ b/storage/myisam/ha_myisam.h 2009-01-09 16:38:52 +0000
@@ -150,9 +150,6 @@ class ha_myisam: public handler
{
return file;
}
- int read_range_first(const key_range *start_key, const key_range *end_key,
- bool eq_range_arg, bool sorted);
- int read_range_next();
public:
/**
* Multi Range Read interface
| Thread |
|---|
| • bzr push into mysql-6.0-perf branch (marc.alff:2765 to 2766) | Marc Alff | 12 Jan 2009 |