Commit fd9bd580 authored by unknown's avatar unknown

Monty's fix for Maria's table scan sometimes not seeing all rows;

without the fix, only 896 rows were inserted into t2 in maria-big.test.


storage/maria/ma_blockrec.c:
  due to wrong test we were skipping some rows when scanning
mysql-test/r/maria-big.result:
  result for new test
mysql-test/t/maria-big.test:
  test for a bug where we missed some rows when scanning
parent 9f903637
set storage_engine=maria;
affected rows: 0
drop table if exists t1, t2;
affected rows: 0
create table t1(a char(3));
affected rows: 0
insert into t1 values("abc");
affected rows: 1
insert into t1 select "def" from t1;
affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
insert into t1 select "ghi" from t1;
affected rows: 2
info: Records: 2 Duplicates: 0 Warnings: 0
insert into t1 select "jkl" from t1;
affected rows: 4
info: Records: 4 Duplicates: 0 Warnings: 0
insert into t1 select "mno" from t1;
affected rows: 8
info: Records: 8 Duplicates: 0 Warnings: 0
insert into t1 select "pqr" from t1;
affected rows: 16
info: Records: 16 Duplicates: 0 Warnings: 0
insert into t1 select "stu" from t1;
affected rows: 32
info: Records: 32 Duplicates: 0 Warnings: 0
insert into t1 select "vwx" from t1;
affected rows: 64
info: Records: 64 Duplicates: 0 Warnings: 0
insert into t1 select "yza" from t1;
affected rows: 128
info: Records: 128 Duplicates: 0 Warnings: 0
insert into t1 select "ceg" from t1;
affected rows: 256
info: Records: 256 Duplicates: 0 Warnings: 0
insert into t1 select "ikm" from t1;
affected rows: 512
info: Records: 512 Duplicates: 0 Warnings: 0
insert into t1 select "oqs" from t1;
affected rows: 1024
info: Records: 1024 Duplicates: 0 Warnings: 0
select count(*) from t1;
count(*)
2048
affected rows: 1
insert into t1 select "uwy" from t1;
affected rows: 2048
info: Records: 2048 Duplicates: 0 Warnings: 0
create table t2 select * from t1;
affected rows: 4096
info: Records: 4096 Duplicates: 0 Warnings: 0
select count(*) from t1;
count(*)
4096
affected rows: 1
select count(*) from t2;
count(*)
4096
affected rows: 1
drop table t1, t2;
affected rows: 0
# Test of scenarios potentially too big for --valgrind or --mem
enable_info;
set storage_engine=maria;
disable_warnings;
drop table if exists t1, t2;
enable_warnings;
create table t1(a char(3));
insert into t1 values("abc");
insert into t1 select "def" from t1;
insert into t1 select "ghi" from t1;
insert into t1 select "jkl" from t1;
insert into t1 select "mno" from t1;
insert into t1 select "pqr" from t1;
insert into t1 select "stu" from t1;
insert into t1 select "vwx" from t1;
insert into t1 select "yza" from t1;
insert into t1 select "ceg" from t1;
insert into t1 select "ikm" from t1;
insert into t1 select "oqs" from t1;
select count(*) from t1;
insert into t1 select "uwy" from t1;
create table t2 select * from t1;
select count(*) from t1;
select count(*) from t2;
drop table t1, t2;
disable_info;
...@@ -3454,7 +3454,8 @@ int _ma_scan_block_record(MARIA_HA *info, byte *record, ...@@ -3454,7 +3454,8 @@ int _ma_scan_block_record(MARIA_HA *info, byte *record,
for (data+= 6; data < info->scan.bitmap_end; data+= 6) for (data+= 6; data < info->scan.bitmap_end; data+= 6)
{ {
bits= uint6korr(data); bits= uint6korr(data);
if (bits && ((bits & LL(04444444444444444)) != LL(04444444444444444))) /* Skip not allocated pages and blob / full tail pages */
if (bits && bits != LL(07777777777777777))
break; break;
} }
bit_pos= 0; bit_pos= 0;
......
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