Commit 778088a5 authored by unknown's avatar unknown

fix for bug #14381

(BDB keylength limitted to 255)


mysql-test/r/bdb.result:
  fix bdb test after fixing the maximal length of BDB keys to 2^32-1
sql/ha_berkeley.h:
  use the maximal possible length of 2^32 - 1
parent d5a81fdc
...@@ -1584,8 +1584,6 @@ g 10 ...@@ -1584,8 +1584,6 @@ g 10
h 10 h 10
i 10 i 10
alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v); alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v);
Warnings:
Warning 1071 Specified key was too long; max key length is 255 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -1594,7 +1592,7 @@ t1 CREATE TABLE `t1` ( ...@@ -1594,7 +1592,7 @@ t1 CREATE TABLE `t1` (
`t` text, `t` text,
KEY `c` (`c`), KEY `c` (`c`),
KEY `t` (`t`(10)), KEY `t` (`t`(10)),
KEY `v` (`v`(255)) KEY `v` (`v`)
) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1 ) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1
select count(*) from t1 where v='a'; select count(*) from t1 where v='a';
count(*) count(*)
...@@ -1616,19 +1614,19 @@ count(*) ...@@ -1616,19 +1614,19 @@ count(*)
9 9
explain select count(*) from t1 where v='a '; explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 258 const # Using where 1 SIMPLE t1 ref v v 303 const # Using where
explain select count(*) from t1 where v like 'a%'; explain select count(*) from t1 where v like 'a%';
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range v v 258 NULL # Using where 1 SIMPLE t1 range v v 303 NULL # Using where
explain select count(*) from t1 where v between 'a' and 'a '; explain select count(*) from t1 where v between 'a' and 'a ';
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 258 const # Using where 1 SIMPLE t1 ref v v 303 const # Using where
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n'; explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 258 const # Using where 1 SIMPLE t1 ref v v 303 const # Using where
explain select * from t1 where v='a'; explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 258 const # Using where 1 SIMPLE t1 ref v v 303 const # Using where
select v,count(*) from t1 group by v limit 10; select v,count(*) from t1 group by v limit 10;
v count(*) v count(*)
a 1 a 1
...@@ -1656,15 +1654,15 @@ i 10 ...@@ -1656,15 +1654,15 @@ i 10
select sql_big_result v,count(t) from t1 group by v limit 10; select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t) v count(t)
a 1 a 1
a 10 a 10
b 10 b 10
c 10 c 10
d 10 d 10
e 10 e 10
f 10 f 10
g 10 g 10
h 10 h 10
i 10 i 10
alter table t1 drop key v, add key v (v(30)); alter table t1 drop key v, add key v (v(30));
show create table t1; show create table t1;
Table Create Table Table Create Table
...@@ -1746,8 +1744,6 @@ g 10 ...@@ -1746,8 +1744,6 @@ g 10
h 10 h 10
i 10 i 10
alter table t1 modify v varchar(600), drop key v, add key v (v); alter table t1 modify v varchar(600), drop key v, add key v (v);
Warnings:
Warning 1071 Specified key was too long; max key length is 255 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -1756,7 +1752,7 @@ t1 CREATE TABLE `t1` ( ...@@ -1756,7 +1752,7 @@ t1 CREATE TABLE `t1` (
`t` text, `t` text,
KEY `c` (`c`), KEY `c` (`c`),
KEY `t` (`t`(10)), KEY `t` (`t`(10)),
KEY `v` (`v`(255)) KEY `v` (`v`)
) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1 ) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1
select v,count(*) from t1 group by v limit 10; select v,count(*) from t1 group by v limit 10;
v count(*) v count(*)
...@@ -1785,15 +1781,15 @@ i 10 ...@@ -1785,15 +1781,15 @@ i 10
select sql_big_result v,count(t) from t1 group by v limit 10; select sql_big_result v,count(t) from t1 group by v limit 10;
v count(t) v count(t)
a 1 a 1
a 10 a 10
b 10 b 10
c 10 c 10
d 10 d 10
e 10 e 10
f 10 f 10
g 10 g 10
h 10 h 10
i 10 i 10
drop table t1; drop table t1;
create table t1 (a char(10), unique (a)); create table t1 (a char(10), unique (a));
insert into t1 values ('a '); insert into t1 values ('a ');
...@@ -1874,7 +1870,7 @@ a b ...@@ -1874,7 +1870,7 @@ a b
drop table t1; drop table t1;
create table t1 (v varchar(65530), key(v)); create table t1 (v varchar(65530), key(v));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 255 bytes Warning 1071 Specified key was too long; max key length is 1024 bytes
drop table if exists t1; drop table if exists t1;
create table t1 (v varchar(65536)); create table t1 (v varchar(65536));
Warnings: Warnings:
......
...@@ -94,8 +94,8 @@ class ha_berkeley: public handler ...@@ -94,8 +94,8 @@ class ha_berkeley: public handler
uint max_supported_keys() const { return MAX_KEY-1; } uint max_supported_keys() const { return MAX_KEY-1; }
uint extra_rec_buf_length() { return BDB_HIDDEN_PRIMARY_KEY_LENGTH; } uint extra_rec_buf_length() { return BDB_HIDDEN_PRIMARY_KEY_LENGTH; }
ha_rows estimate_rows_upper_bound(); ha_rows estimate_rows_upper_bound();
uint max_supported_key_length() const { return MAX_KEY_LENGTH; } uint max_supported_key_length() const { return 4294967295L; }
uint max_supported_key_part_length() const { return MAX_KEY_LENGTH; } uint max_supported_key_part_length() const { return 4294967295L; }
const key_map *keys_to_use_for_scanning() { return &key_map_full; } const key_map *keys_to_use_for_scanning() { return &key_map_full; }
bool has_transactions() { return 1;} bool has_transactions() { return 1;}
......
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