diff options
author | Annamalai Gurusami <annamalai.gurusami@oracle.com> | 2014-08-05 17:25:57 +0530 |
---|---|---|
committer | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2018-05-16 15:03:09 +0530 |
commit | 21e02b2c92e83a0c3fea1e97db85aca0feb9261e (patch) | |
tree | 34c6a9cbcb6abf192736e41e24790e3dcbc22785 | |
parent | 6e76b402d46a7454a0ca0fb1482c06b9f612ad03 (diff) | |
download | mariadb-git-21e02b2c92e83a0c3fea1e97db85aca0feb9261e.tar.gz |
Bug #19077964 ASSERT PAGE_SIZE.EQUALS_TO SPACE_PAGE_SIZE BTR_COPY_BLOB_PREFIX
Problem:
The function row_build_index_entry_low() takes a dtuple_t object ('row') and
dict_index_t object ('index') as input and returns a new dtuple_t object
('entry') as output. The dtuple_t object 'row' that is given as input might
have been constructed from a different dict_index_t object (!= index). So
when accessing the externally stored data of the given 'row' we need to make
use of the correct index object.
Solution:
Store the page size information in the associated row_ext_t object.
rb#6086 approved by Vasil and Jimmy.
-rw-r--r-- | mysql-test/suite/innodb/r/alter_page_size.result | 19 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/alter_page_size.test | 36 |
2 files changed, 55 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/r/alter_page_size.result b/mysql-test/suite/innodb/r/alter_page_size.result new file mode 100644 index 00000000000..656369e9538 --- /dev/null +++ b/mysql-test/suite/innodb/r/alter_page_size.result @@ -0,0 +1,19 @@ +# +# Bug #19077964 ASSERT PAGE_SIZE.EQUALS_TO SPACE_PAGE_SIZE +# BTR_COPY_BLOB_PREFIX +# +set global innodb_file_format=Barracuda; +create table t1 (f1 int primary key, f3 linestring not null, +spatial key(f3)) engine=innodb row_format=compressed key_block_size=1; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f3` linestring NOT NULL, + PRIMARY KEY (`f1`), + SPATIAL KEY `f3` (`f3`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1 +insert into t1 values (1, linefromtext(concat('linestring', '( 0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8, 9 9, 10 10, 11 11, 12 12, 13 13, 14 14, 15 15, 16 16, 17 17, 18 18, 19 19, 20 20, 21 21, 22 22, 23 23, 24 24, 25 25, 26 26, 27 27, 28 28, 29 29, 30 30, 31 31, 32 32, 33 33, 34 34, 35 35, 36 36, 37 37, 38 38, 39 39, 40 40, 41 41, 42 42, 43 43, 44 44, 45 45, 46 46, 47 47, 48 48, 49 49, 50 50, 51 51, 52 52, 53 53, 54 54, 55 55, 56 56, 57 57, 58 58, 59 59, 60 60, 61 61, 62 62, 63 63, 64 64, 65 65, 66 66, 67 67, 68 68, 69 69, 70 70, 71 71, 72 72, 73 73, 74 74, 75 75, 76 76, 77 77, 78 78, 79 79, 9999 9999)')));; +alter table t1 row_format=dynamic, key_block_size=0, algorithm=inplace; +drop table t1; +set global innodb_file_format=default; diff --git a/mysql-test/suite/innodb/t/alter_page_size.test b/mysql-test/suite/innodb/t/alter_page_size.test new file mode 100644 index 00000000000..6f2359ee3a3 --- /dev/null +++ b/mysql-test/suite/innodb/t/alter_page_size.test @@ -0,0 +1,36 @@ + +--source include/have_innodb.inc + +--echo # +--echo # Bug #19077964 ASSERT PAGE_SIZE.EQUALS_TO SPACE_PAGE_SIZE +--echo # BTR_COPY_BLOB_PREFIX +--echo # + +set global innodb_file_format=Barracuda; + +create table t1 (f1 int primary key, f3 linestring not null, + spatial key(f3)) engine=innodb row_format=compressed key_block_size=1; +show create table t1; + +let $points = 80; +let $x = 0; +let $y = 0; +let $linestr = (; + +while ($points) +{ + let $linestr = $linestr $x $y,; + dec $points; + inc $x; + inc $y; +} + +let $linestr = $linestr 9999 9999); + +--eval insert into t1 values (1, linefromtext(concat('linestring', '$linestr'))); + +alter table t1 row_format=dynamic, key_block_size=0, algorithm=inplace; + +drop table t1; + +set global innodb_file_format=default; |