diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-12-14 13:58:45 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-12-14 14:05:25 +0200 |
commit | cfe8386296f1b104c55e538d408e2e4a9d08f4bb (patch) | |
tree | 7348360a2f5d7e4d40cf6cad26e13146ff7a2054 | |
parent | f6e16bdc62d80a1b26a955aafb1b60fafa912beb (diff) | |
parent | dbb39a778d43bb69c6dccbf6f6000010860d1850 (diff) | |
download | mariadb-git-cfe8386296f1b104c55e538d408e2e4a9d08f4bb.tar.gz |
Merge 10.2 into 10.3
-rw-r--r-- | extra/CMakeLists.txt | 3 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innochecksum.result | 5 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb_zip_innochecksum.result | 91 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb_zip_innochecksum2.result | 160 | ||||
-rw-r--r-- | mysql-test/suite/innodb/r/innodb_zip_innochecksum3.result | 227 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innochecksum.test | 32 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt | 3 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_zip_innochecksum.test | 243 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt | 3 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_zip_innochecksum2.test | 118 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt | 1 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_zip_innochecksum3.test | 406 | ||||
-rw-r--r-- | sql/sql_parse.cc | 3 | ||||
-rw-r--r-- | tests/mysql_client_test.c | 62 |
14 files changed, 66 insertions, 1291 deletions
diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index cd099dedf63..05b89290a6d 100644 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -72,6 +72,9 @@ IF(WITH_INNOBASE_STORAGE_ENGINE) # We use the InnoDB code directly in case the code changes. ADD_DEFINITIONS("-DUNIV_INNOCHECKSUM") + IF(WITH_INNODB_BUG_ENDIAN_CRC32) + ADD_DEFINITIONS(-DINNODB_BUG_ENDIAN_CRC32) + ENDIF() # Avoid generating Hardware Capabilities due to crc32 instructions IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") diff --git a/mysql-test/suite/innodb/r/innochecksum.result b/mysql-test/suite/innodb/r/innochecksum.result deleted file mode 100644 index 2d8a2652309..00000000000 --- a/mysql-test/suite/innodb/r/innochecksum.result +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB; -INSERT INTO t1 (b) VALUES ('corrupt me'); -INSERT INTO t1 (b) VALUES ('corrupt me'); -# Run innochecksum on t1 -DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb_zip_innochecksum.result b/mysql-test/suite/innodb/r/innodb_zip_innochecksum.result deleted file mode 100644 index 31d9450df80..00000000000 --- a/mysql-test/suite/innodb/r/innodb_zip_innochecksum.result +++ /dev/null @@ -1,91 +0,0 @@ -# Set the environmental variables -call mtr.add_suppression("InnoDB: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts"); -call mtr.add_suppression("InnoDB: Warning: database page corruption or a failed"); -CREATE TABLE tab1(c1 INT PRIMARY KEY,c2 VARCHAR(20)) ENGINE=InnoDB; -CREATE INDEX idx1 ON tab1(c2(10)); -INSERT INTO tab1 VALUES(1, 'Innochecksum InnoDB1'); -CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; -insert into t1 values(1,"i"); -insert into t1 values(2,"am"); -insert into t1 values(3,"compressed table"); -# Shutdown the Server -# Server Default checksum = innodb -[1b]: check the innochecksum without --strict-check -[2]: check the innochecksum with full form --strict-check=crc32 -[3]: check the innochecksum with short form -C crc32 -[4]: check the innochecksum with --no-check ignores algorithm check, warning is expected -FOUND 1 /Error: --no-check must be associated with --write option./ in my_restart.err -[5]: check the innochecksum with short form --no-check ignores algorithm check, warning is expected -FOUND 1 /Error: --no-check must be associated with --write option./ in my_restart.err -[6]: check the innochecksum with full form strict-check & no-check , an error is expected -FOUND 1 /Error: --strict-check option cannot be used together with --no-check option./ in my_restart.err -[7]: check the innochecksum with short form strict-check & no-check , an error is expected -FOUND 1 /Error: --strict-check option cannot be used together with --no-check option./ in my_restart.err -[8]: check the innochecksum with short & full form combination -# strict-check & no-check, an error is expected -FOUND 1 /Error: --strict-check option cannot be used together with --no-check option./ in my_restart.err -[9]: check the innochecksum with full form --strict-check=innodb -[10]: check the innochecksum with full form --strict-check=none -# when server Default checksum=crc32 -[11]: check the innochecksum with short form -C innodb -# when server Default checksum=crc32 -[12]: check the innochecksum with short form -C none -# when server Default checksum=crc32 -[13]: check strict-check with invalid values -FOUND 1 /Error while setting value \'strict_innodb\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'strict_innodb\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'strict_crc32\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'strict_crc32\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'strict_none\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'strict_none\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'InnoBD\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'InnoBD\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'crc\' to \'strict-check\'/ in my_restart.err -FOUND 1 /Error while setting value \'no\' to \'strict-check\'/ in my_restart.err -[14a]: when server default checksum=crc32 rewrite new checksum=crc32 with innochecksum -# Also check the long form of write option. -[14b]: when server default checksum=crc32 rewrite new checksum=innodb with innochecksum -# Also check the long form of write option. -# start the server with innodb_checksum_algorithm=InnoDB -INSERT INTO tab1 VALUES(2, 'Innochecksum CRC32'); -SELECT c1,c2 FROM tab1 order by c1,c2; -c1 c2 -1 Innochecksum InnoDB1 -2 Innochecksum CRC32 -# Stop the server -[15]: when server default checksum=crc32 rewrite new checksum=none with innochecksum -# Also check the short form of write option. -# Start the server with checksum algorithm=none -INSERT INTO tab1 VALUES(3, 'Innochecksum None'); -SELECT c1,c2 FROM tab1 order by c1,c2; -c1 c2 -1 Innochecksum InnoDB1 -2 Innochecksum CRC32 -3 Innochecksum None -DROP TABLE t1; -# Stop the server -[16]: rewrite into new checksum=crc32 with innochecksum -# Restart the DB server with innodb_checksum_algorithm=crc32 -SELECT * FROM tab1; -c1 c2 -1 Innochecksum InnoDB1 -2 Innochecksum CRC32 -3 Innochecksum None -DELETE FROM tab1 where c1=3; -SELECT c1,c2 FROM tab1 order by c1,c2; -c1 c2 -1 Innochecksum InnoDB1 -2 Innochecksum CRC32 -# Stop server -[17]: rewrite into new checksum=InnoDB -# Restart the DB server with innodb_checksum_algorithm=InnoDB -DELETE FROM tab1 where c1=2; -SELECT * FROM tab1; -c1 c2 -1 Innochecksum InnoDB1 -# Stop server -[18]:check Innochecksum with invalid write options -FOUND 1 /Error while setting value \'strict_crc32\' to \'write\'/ in my_restart.err -FOUND 1 /Error while setting value \'strict_innodb\' to \'write\'/ in my_restart.err -FOUND 1 /Error while setting value \'crc23\' to \'write\'/ in my_restart.err -DROP TABLE tab1; diff --git a/mysql-test/suite/innodb/r/innodb_zip_innochecksum2.result b/mysql-test/suite/innodb/r/innodb_zip_innochecksum2.result deleted file mode 100644 index 582bb42f0cb..00000000000 --- a/mysql-test/suite/innodb/r/innodb_zip_innochecksum2.result +++ /dev/null @@ -1,160 +0,0 @@ -SET GLOBAL innodb_compression_level=0; -SELECT @@innodb_compression_level; -@@innodb_compression_level -0 -CREATE TABLE t1 (j LONGBLOB) ENGINE = InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; -INSERT INTO t1 VALUES (repeat('abcdefghijklmnopqrstuvwxyz',200)); -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -INSERT INTO t1 SELECT * from t1; -# stop the server - -Variables (--variable-name=value) -and boolean options {FALSE|TRUE} Value (after reading options) ---------------------------------- ---------------------------------------- -verbose TRUE -debug FALSE -count FALSE -start-page 0 -end-page 0 -page 0 -strict-check crc32 -no-check FALSE -allow-mismatches 0 -write crc32 -page-type-summary FALSE -page-type-dump MYSQLTEST_VARDIR/tmp/dump.txt -per-page-details FALSE -log (No default value) -leaf FALSE -merge 0 -[1]:# check the both short and long options for "help" -[2]:# Run the innochecksum when file isn't provided. -# It will print the innochecksum usage similar to --help option. -innochecksum Ver #.#.# -Copyright (c) YEAR, YEAR , Oracle, MariaDB Corporation Ab and others. - -InnoDB offline file checksum utility. -Usage: innochecksum [-c] [-s <start page>] [-e <end page>] [-p <page>] [-i] [-v] [-a <allow mismatches>] [-n] [-C <strict-check>] [-w <write>] [-S] [-D <page type dump>] [-l <log>] [-l] [-m <merge pages>] <filename or [-]> - -?, --help Displays this help and exits. - -I, --info Synonym for --help. - -V, --version Displays version information and exits. - -v, --verbose Verbose (prints progress every 5 seconds). - -c, --count Print the count of pages in the file and exits. - -s, --start-page=# Start on this page number (0 based). - -e, --end-page=# End at this page number (0 based). - -p, --page=# Check only this page (0 based). - -C, --strict-check=name - Specify the strict checksum algorithm by the user.. One - of: crc32, crc32, innodb, innodb, none, none - -n, --no-check Ignore the checksum verification. - -a, --allow-mismatches=# - Maximum checksum mismatch allowed. - -w, --write=name Rewrite the checksum algorithm by the user.. One of: - crc32, crc32, innodb, innodb, none, none - -S, --page-type-summary - Display a count of each page type in a tablespace. - -D, --page-type-dump=name - Dump the page type info for each page in a tablespace. - -i, --per-page-details - Print out per-page detail information. - -l, --log=name log output. - -f, --leaf Examine leaf index pages - -m, --merge=# leaf page count if merge given number of consecutive - pages - -Variables (--variable-name=value) -and boolean options {FALSE|TRUE} Value (after reading options) ---------------------------------- ---------------------------------------- -verbose FALSE -count FALSE -start-page 0 -end-page 0 -page 0 -strict-check crc32 -no-check FALSE -allow-mismatches 0 -write crc32 -page-type-summary FALSE -page-type-dump (No default value) -per-page-details FALSE -log (No default value) -leaf FALSE -merge 0 -[3]:# check the both short and long options for "count" and exit -Number of pages:# -Number of pages:# -[4]:# Print the version of innochecksum and exit -innochecksum Ver #.#.## Restart the DB server -DROP TABLE t1; -[5]:# Check the innochecksum for compressed table t1 with different key_block_size -# Test for KEY_BLOCK_SIZE=1 -===> Testing size=1 -CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; -insert into t1 values(1,"I"); -insert into t1 values(2,"AM"); -insert into t1 values(3,"COMPRESSED"); -select * from t1; -id msg -1 I -2 AM -3 COMPRESSED -drop table t1; -# Test for KEY_BLOCK_SIZE=2 -===> Testing size=2 -CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2; -insert into t1 values(1,"I"); -insert into t1 values(2,"AM"); -insert into t1 values(3,"COMPRESSED"); -select * from t1; -id msg -1 I -2 AM -3 COMPRESSED -drop table t1; -# Test for for KEY_BLOCK_SIZE=4 -===> Testing size=4 -CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; -insert into t1 values(1,"I"); -insert into t1 values(2,"AM"); -insert into t1 values(3,"COMPRESSED"); -select * from t1; -id msg -1 I -2 AM -3 COMPRESSED -drop table t1; -set innodb_strict_mode=off; -# Test for for KEY_BLOCK_SIZE=8 -===> Testing size=8 -CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; -insert into t1 values(1,"I"); -insert into t1 values(2,"AM"); -insert into t1 values(3,"COMPRESSED"); -select * from t1; -id msg -1 I -2 AM -3 COMPRESSED -drop table t1; -set innodb_strict_mode=off; -# Test for KEY_BLOCK_SIZE=16 -===> Testing size=16 -CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16; -insert into t1 values(1,"I"); -insert into t1 values(2,"AM"); -insert into t1 values(3,"COMPRESSED"); -select * from t1; -id msg -1 I -2 AM -3 COMPRESSED -drop table t1; -# Test[5] completed diff --git a/mysql-test/suite/innodb/r/innodb_zip_innochecksum3.result b/mysql-test/suite/innodb/r/innodb_zip_innochecksum3.result deleted file mode 100644 index aaab68b3df9..00000000000 --- a/mysql-test/suite/innodb/r/innodb_zip_innochecksum3.result +++ /dev/null @@ -1,227 +0,0 @@ -# Set the environmental variables -call mtr.add_suppression("InnoDB: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts"); -call mtr.add_suppression("InnoDB: innodb_checksum_algorithm is set to.*"); -[1]: Further Test are for rewrite checksum (innodb|crc32|none) for all ibd file & start the server. -CREATE TABLE tab1 (pk INTEGER NOT NULL PRIMARY KEY, -linestring_key GEOMETRY NOT NULL, -linestring_nokey GEOMETRY NOT NULL) -ENGINE=InnoDB ; -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (1, ST_GeomFromText('POINT(10 10) '), ST_GeomFromText('POINT(10 10) ')); -CREATE INDEX linestring_index ON tab1(linestring_nokey(5)); -ALTER TABLE tab1 ADD KEY (linestring_key(5)); -# create a compressed table -CREATE TABLE tab2(col_1 CHAR (255) , -col_2 VARCHAR (255), col_3 longtext, -col_4 longtext,col_5 longtext, -col_6 longtext , col_7 int ) -engine = innodb row_format=compressed key_block_size=4; -CREATE INDEX idx1 ON tab2(col_3(10)); -CREATE INDEX idx2 ON tab2(col_4(10)); -CREATE INDEX idx3 ON tab2(col_5(10)); -SET @col_1 = repeat('a', 5); -SET @col_2 = repeat('b', 20); -SET @col_3 = repeat('c', 100); -SET @col_4 = repeat('d', 100); -SET @col_5 = repeat('e', 100); -SET @col_6 = repeat('f', 100); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,5); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,4); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,3); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,2); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,1); -SELECT * FROM tab2 ORDER BY col_7; -# stop the server -[1(a)]: Rewrite into new checksum=InnoDB for all *.ibd file and ibdata1 -: start the server with innodb_checksum_algorithm=strict_innodb -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (2, ST_GeomFromText('LINESTRING(10 10,20 20,30 30)'), ST_GeomFromText('LINESTRING(10 10,20 20,30 30)')); -SET @col_1 = repeat('a', 5); -SET @col_2 = repeat('b', 20); -SET @col_3 = repeat('c', 100); -SET @col_4 = repeat('d', 100); -SET @col_5 = repeat('e', 100); -SET @col_6 = repeat('f', 100); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,6); -SELECT pk,ST_AsText(linestring_key),ST_AsText(linestring_nokey) -FROM tab1 ORDER BY pk; -SELECT * FROM tab2 ORDER BY col_7; -# stop the server -[1(b)]: Rewrite into new checksum=crc32 for all *.ibd file and ibdata1 -# start the server with innodb_checksum_algorithm=strict_crc32 -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (3, ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'), -ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')); -SET @col_1 = repeat('g', 5); -SET @col_2 = repeat('h', 20); -SET @col_3 = repeat('i', 100); -SET @col_4 = repeat('j', 100); -SET @col_5 = repeat('k', 100); -SET @col_6 = repeat('l', 100); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,7); -SELECT pk,ST_AsText(linestring_key),ST_AsText(linestring_nokey) -FROM tab1 ORDER BY pk; -SELECT * FROM tab2 ORDER BY col_7; -# stop the server -[1(c)]: Rewrite into new checksum=none for all *.ibd file and ibdata1 -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (4, ST_GeomFromText('MULTIPOINT(0 0,5 5,10 10,20 20) '), ST_GeomFromText('MULTIPOINT(0 0,5 5,10 10,20 20) ')); -SET @col_1 = repeat('m', 5); -SET @col_2 = repeat('n', 20); -SET @col_3 = repeat('o', 100); -SET @col_4 = repeat('p', 100); -SET @col_5 = repeat('q', 100); -SET @col_6 = repeat('r', 100); -INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,8); -SELECT pk,ST_AsText(linestring_key),ST_AsText(linestring_nokey) -FROM tab1 ORDER BY pk; -SELECT * FROM tab2 ORDER BY col_7; -# stop the server -[2]: Check the page type summary with shortform for tab1.ibd - -File::tab#.ibd -================PAGE TYPE SUMMARY============== -#PAGE_COUNT PAGE_TYPE -=============================================== - # Index page - # Undo log page - # Inode page - # Insert buffer free list page - # Freshly allocated page - # Insert buffer bitmap - # System page - # Transaction system page - # File Space Header - # Extent descriptor page - # BLOB page - # Compressed BLOB page - # Page compressed page - # Page compressed encrypted page - # Other type of page - -=============================================== -Additional information: -Undo page type: # insert, # update, # other -Undo page state: # active, # cached, # to_free, # to_purge, # prepared, # other -index_id #pages #leaf_pages #recs_per_page #bytes_per_page -# # # # # -# # # # # -# # # # # - -index_id page_data_bytes_histgram(empty,...,oversized) -# # # # # # # # # # # # # -# # # # # # # # # # # # # -# # # # # # # # # # # # # -[3]: Check the page type summary with longform for tab1.ibd - -File::tab#.ibd -================PAGE TYPE SUMMARY============== -#PAGE_COUNT PAGE_TYPE -=============================================== - # Index page - # Undo log page - # Inode page - # Insert buffer free list page - # Freshly allocated page - # Insert buffer bitmap - # System page - # Transaction system page - # File Space Header - # Extent descriptor page - # BLOB page - # Compressed BLOB page - # Page compressed page - # Page compressed encrypted page - # Other type of page - -=============================================== -Additional information: -Undo page type: # insert, # update, # other -Undo page state: # active, # cached, # to_free, # to_purge, # prepared, # other -index_id #pages #leaf_pages #recs_per_page #bytes_per_page -# # # # # -# # # # # -# # # # # - -index_id page_data_bytes_histgram(empty,...,oversized) -# # # # # # # # # # # # # -# # # # # # # # # # # # # -# # # # # # # # # # # # # -[4]: Page type dump for with longform for tab1.ibd -# Print the contents stored in dump.txt - - -Filename::tab#.ibd -============================================================================== - PAGE_NO | PAGE_TYPE | EXTRA INFO -============================================================================== -#::# | File Space Header | - -#::# | Insert Buffer Bitmap | - -#::# | Inode page | - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Freshly allocated page | - -# Variables used by page type dump for ibdata1 - -Variables (--variable-name=value) -and boolean options {FALSE|TRUE} Value (after reading options) ---------------------------------- ---------------------------------------- -verbose TRUE -count FALSE -start-page 0 -end-page 0 -page 0 -strict-check crc32 -no-check FALSE -allow-mismatches 0 -write crc32 -page-type-summary FALSE -page-type-dump MYSQLTEST_VARDIR/tmp/dump.txt -per-page-details FALSE -log (No default value) -leaf FALSE -merge 0 -[5]: Page type dump for with shortform for tab1.ibd - - -Filename::tab#.ibd -============================================================================== - PAGE_NO | PAGE_TYPE | EXTRA INFO -============================================================================== -#::# | File Space Header | - -#::# | Insert Buffer Bitmap | - -#::# | Inode page | - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Index page | index id=#, page level=#, No. of records=#, garbage=#, - -#::# | Freshly allocated page | - -[6]: check the valid lower bound values for option -# allow-mismatches,page,start-page,end-page -[9]: check the both short and long options "page" and "start-page" when -# seek value is larger than file size. -FOUND 1 /Error: Unable to seek to necessary offset: Invalid argument/ in my_restart.err -FOUND 1 /Error: Unable to seek to necessary offset: Invalid argument/ in my_restart.err -FOUND 1 /Error: Unable to seek to necessary offset: Invalid argument/ in my_restart.err -FOUND 1 /Error: Unable to seek to necessary offset: Invalid argument/ in my_restart.err -[34]: check the invalid upper bound values for options, allow-mismatches, end-page, start-page and page. -# innochecksum will fail with error code: 1 -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -NOT FOUND /Incorrect unsigned integer value: '18446744073709551616'/ in my_restart.err -DROP TABLE tab1,tab2; diff --git a/mysql-test/suite/innodb/t/innochecksum.test b/mysql-test/suite/innodb/t/innochecksum.test deleted file mode 100644 index 79896ed1e3f..00000000000 --- a/mysql-test/suite/innodb/t/innochecksum.test +++ /dev/null @@ -1,32 +0,0 @@ -# -# Test innochecksum -# - ---source include/have_innodb.inc -# Embedded server test does not support restarting ---source include/not_embedded.inc - -CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB; -INSERT INTO t1 (b) VALUES ('corrupt me'); ---disable_query_log ---let $i = 1000 -while ($i) -{ - INSERT INTO t1 (b) VALUES (REPEAT('abcdefghijklmnopqrstuvwxyz', 100)); - dec $i; -} ---enable_query_log -INSERT INTO t1 (b) VALUES ('corrupt me'); - -let $MYSQLD_DATADIR=`select @@datadir`; - ---source include/shutdown_mysqld.inc - ---echo # Run innochecksum on t1 ---disable_result_log ---exec $INNOCHECKSUM $MYSQLD_DATADIR/test/t1.ibd ---enable_result_log - ---source include/start_mysqld.inc - -DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt deleted file mode 100644 index 4ed6c2c8fd0..00000000000 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.opt +++ /dev/null @@ -1,3 +0,0 @@ ---skip-innodb-doublewrite ---innodb-file-per-table ---innodb_checksum_algorithm=crc32 diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.test b/mysql-test/suite/innodb/t/innodb_zip_innochecksum.test deleted file mode 100644 index fec8acf52c4..00000000000 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum.test +++ /dev/null @@ -1,243 +0,0 @@ -#************************************************************ -# WL6045:Improve Innochecksum -#************************************************************ ---source include/innodb_page_size_small.inc ---source include/no_valgrind_without_big.inc -# Embedded server does not support crashing. ---source include/not_embedded.inc - -# Avoid CrashReporter popup on Mac. ---source include/not_crashrep.inc - ---echo # Set the environmental variables -let MYSQLD_BASEDIR= `SELECT @@basedir`; -let MYSQLD_DATADIR= `SELECT @@datadir`; -let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err; -call mtr.add_suppression("InnoDB: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts"); -call mtr.add_suppression("InnoDB: Warning: database page corruption or a failed"); - -CREATE TABLE tab1(c1 INT PRIMARY KEY,c2 VARCHAR(20)) ENGINE=InnoDB; -CREATE INDEX idx1 ON tab1(c2(10)); -INSERT INTO tab1 VALUES(1, 'Innochecksum InnoDB1'); -CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY, msg VARCHAR(255)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; -insert into t1 values(1,"i"); -insert into t1 values(2,"am"); -insert into t1 values(3,"compressed table"); - ---echo # Shutdown the Server ---source include/shutdown_mysqld.inc ---echo # Server Default checksum = innodb - -# -# Not repeatable with --parallel= >1 -# -#--echo [1a]: check the innochecksum when file doesn't exists -#--error 1 -#--exec $INNOCHECKSUM $MYSQLD_DATADIR/test/aa.ibd 2> $SEARCH_FILE -#let SEARCH_PATTERN= Error: $MYSQLD_DATADIR/test/aa.ibd cannot be found; -#--source include/search_pattern_in_file.inc - ---echo [1b]: check the innochecksum without --strict-check ---exec $INNOCHECKSUM $MYSQLD_DATADIR/test/tab1.ibd - ---echo [2]: check the innochecksum with full form --strict-check=crc32 ---exec $INNOCHECKSUM --strict-check=crc32 $MYSQLD_DATADIR/test/tab1.ibd - ---echo [3]: check the innochecksum with short form -C crc32 ---exec $INNOCHECKSUM -C crc32 $MYSQLD_DATADIR/test/tab1.ibd - ---echo [4]: check the innochecksum with --no-check ignores algorithm check, warning is expected ---error 1 ---exec $INNOCHECKSUM --no-check $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: --no-check must be associated with --write option.; ---source include/search_pattern_in_file.inc - ---echo [5]: check the innochecksum with short form --no-check ignores algorithm check, warning is expected ---error 1 ---exec $INNOCHECKSUM -n $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: --no-check must be associated with --write option.; ---source include/search_pattern_in_file.inc - ---echo [6]: check the innochecksum with full form strict-check & no-check , an error is expected ---error 1 ---exec $INNOCHECKSUM --strict-check=innodb --no-check $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: --strict-check option cannot be used together with --no-check option.; ---source include/search_pattern_in_file.inc - ---echo [7]: check the innochecksum with short form strict-check & no-check , an error is expected ---error 1 ---exec $INNOCHECKSUM -C innodb -n $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: --strict-check option cannot be used together with --no-check option.; ---source include/search_pattern_in_file.inc - ---echo [8]: check the innochecksum with short & full form combination ---echo # strict-check & no-check, an error is expected ---error 1 ---exec $INNOCHECKSUM --strict-check=innodb -n $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: --strict-check option cannot be used together with --no-check option.; ---source include/search_pattern_in_file.inc - ---echo [9]: check the innochecksum with full form --strict-check=innodb -# Server Default checksum = crc32 ---error 1 ---exec $INNOCHECKSUM --strict-check=innodb $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE - ---echo [10]: check the innochecksum with full form --strict-check=none ---echo # when server Default checksum=crc32 ---error 1 ---exec $INNOCHECKSUM --strict-check=none $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE - ---echo [11]: check the innochecksum with short form -C innodb ---echo # when server Default checksum=crc32 ---error 1 ---exec $INNOCHECKSUM -C innodb $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE - ---echo [12]: check the innochecksum with short form -C none ---echo # when server Default checksum=crc32 ---error 1 ---exec $INNOCHECKSUM -C none $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE - ---echo [13]: check strict-check with invalid values ---error 1 ---exec $INNOCHECKSUM --strict-check=strict_innodb $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'strict_innodb\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -C strict_innodb $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'strict_innodb\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --strict-check=strict_crc32 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'strict_crc32\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -C strict_crc32 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'strict_crc32\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --strict-check=strict_none $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'strict_none\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -C strict_none $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'strict_none\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --strict-check=InnoBD $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'InnoBD\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -C InnoBD $MYSQLD_DATADIR/test/tab1.ibd 2>$SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'InnoBD\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --strict-check=crc $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'crc\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --strict-check=no $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error while setting value \'no\' to \'strict-check\'; ---source include/search_pattern_in_file.inc - ---echo [14a]: when server default checksum=crc32 rewrite new checksum=crc32 with innochecksum ---echo # Also check the long form of write option. ---exec $INNOCHECKSUM --strict-check=crc32 --write=crc32 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --strict-check=crc32 --write=crc32 $MYSQLD_DATADIR/test/t1.ibd -# Rewrite done, verify with --strict-check=crc32 ---exec $INNOCHECKSUM --strict-check=crc32 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --strict-check=crc32 $MYSQLD_DATADIR/test/t1.ibd - ---echo [14b]: when server default checksum=crc32 rewrite new checksum=innodb with innochecksum ---echo # Also check the long form of write option. ---exec $INNOCHECKSUM --no-check --write=innodb $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --strict-check=crc32 --write=innodb $MYSQLD_DATADIR/test/t1.ibd -# Rewrite done, verify with --strict-check=innodb ---exec $INNOCHECKSUM --strict-check=innodb $MYSQLD_DATADIR/test/tab1.ibd - ---echo # start the server with innodb_checksum_algorithm=InnoDB ---let $restart_parameters= --innodb_checksum_algorithm=innodb ---source include/start_mysqld.inc - -INSERT INTO tab1 VALUES(2, 'Innochecksum CRC32'); -SELECT c1,c2 FROM tab1 order by c1,c2; - ---echo # Stop the server ---source include/shutdown_mysqld.inc - ---echo [15]: when server default checksum=crc32 rewrite new checksum=none with innochecksum ---echo # Also check the short form of write option. ---exec $INNOCHECKSUM --no-check -w none $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --no-check -w none $MYSQLD_DATADIR/test/t1.ibd -# Rewrite done, verify with --strict-check=none ---exec $INNOCHECKSUM --strict-check=none $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --strict-check=none $MYSQLD_DATADIR/test/t1.ibd - ---echo # Start the server with checksum algorithm=none ---let $restart_parameters= --innodb_checksum_algorithm=none ---source include/start_mysqld.inc - -INSERT INTO tab1 VALUES(3, 'Innochecksum None'); -SELECT c1,c2 FROM tab1 order by c1,c2; -DROP TABLE t1; - ---echo # Stop the server ---source include/shutdown_mysqld.inc - ---echo [16]: rewrite into new checksum=crc32 with innochecksum ---exec $INNOCHECKSUM --no-check --write=crc32 $MYSQLD_DATADIR/test/tab1.ibd - ---echo # Restart the DB server with innodb_checksum_algorithm=crc32 ---let $restart_parameters= --innodb_checksum_algorithm=crc32 ---source include/start_mysqld.inc - -SELECT * FROM tab1; -DELETE FROM tab1 where c1=3; -SELECT c1,c2 FROM tab1 order by c1,c2; - ---echo # Stop server ---source include/shutdown_mysqld.inc - ---echo [17]: rewrite into new checksum=InnoDB ---exec $INNOCHECKSUM --no-check --write=InnoDB $MYSQLD_DATADIR/test/tab1.ibd - ---echo # Restart the DB server with innodb_checksum_algorithm=InnoDB ---let $restart_parameters= --innodb_checksum_algorithm=innodb ---source include/start_mysqld.inc - -DELETE FROM tab1 where c1=2; -SELECT * FROM tab1; - ---echo # Stop server ---source include/shutdown_mysqld.inc - ---echo [18]:check Innochecksum with invalid write options ---error 1 ---exec $INNOCHECKSUM --no-check --write=strict_crc32 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN=Error while setting value \'strict_crc32\' to \'write\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --no-check --write=strict_innodb $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN=Error while setting value \'strict_innodb\' to \'write\'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --no-check --write=crc23 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN=Error while setting value \'crc23\' to \'write\'; ---source include/search_pattern_in_file.inc ---remove_file $SEARCH_FILE - -# Cleanup ---let $restart_parameters= ---source include/start_mysqld.inc - -DROP TABLE tab1; diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt b/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt deleted file mode 100644 index 5bbafd986e5..00000000000 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.opt +++ /dev/null @@ -1,3 +0,0 @@ ---skip-innodb-doublewrite ---innodb-file-per-table ---innodb-change-buffering=none diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.test b/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.test deleted file mode 100644 index 330bb81ba75..00000000000 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum2.test +++ /dev/null @@ -1,118 +0,0 @@ -#************************************************************ -# WL6045:Improve Innochecksum -#************************************************************ ---source include/innodb_page_size_small.inc ---source include/have_debug.inc ---source include/no_valgrind_without_big.inc -# Avoid CrashReporter popup on Mac. ---source include/not_crashrep.inc - ---source include/not_embedded.inc --- source include/big_test.inc - ---disable_query_log -# This warning occurs due to small buffer pool size(i.e. 8MB). It doesn't occur -# with --mysqld=--innodb_buffer_pool_size=10MB -call mtr.add_suppression("\\[Warning\\] InnoDB: Difficult to find free blocks in the buffer pool.*"); ---enable_query_log -let MYSQLD_BASEDIR= `SELECT @@basedir`; -let MYSQLD_DATADIR= `SELECT @@datadir`; -let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err; - -SET GLOBAL innodb_compression_level=0; -SELECT @@innodb_compression_level; - -CREATE TABLE t1 (j LONGBLOB) ENGINE = InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1; -INSERT INTO t1 VALUES (repeat('abcdefghijklmnopqrstuvwxyz',200)); -let $i=10; -while ($i > 0) { - INSERT INTO t1 SELECT * from t1; - dec $i; -} - ---echo # stop the server ---source include/shutdown_mysqld.inc - -# Page_type_dump for t1 ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---exec $INNOCHECKSUM -v --page-type-dump $MYSQLTEST_VARDIR/tmp/dump.txt $MYSQLD_DATADIR/test/t1.ibd ---file_exists $MYSQLTEST_VARDIR/tmp/dump.txt ---remove_file $MYSQLTEST_VARDIR/tmp/dump.txt - ---echo [1]:# check the both short and long options for "help" ---exec $INNOCHECKSUM --help $MYSQLD_DATADIR/test/t1.ibd > $MYSQLTEST_VARDIR/tmp/help_output_long.txt ---exec $INNOCHECKSUM -I $MYSQLD_DATADIR/test/t1.ibd > $MYSQLTEST_VARDIR/tmp/help_output_short.txt ---diff_files $MYSQLTEST_VARDIR/tmp/help_output_long.txt $MYSQLTEST_VARDIR/tmp/help_output_short.txt - ---echo [2]:# Run the innochecksum when file isn't provided. ---echo # It will print the innochecksum usage similar to --help option. ---error 1 ---exec $INNOCHECKSUM > $MYSQLTEST_VARDIR/tmp/usage.txt ---diff_files $MYSQLTEST_VARDIR/tmp/help_output_long.txt $MYSQLTEST_VARDIR/tmp/usage.txt ---remove_file $MYSQLTEST_VARDIR/tmp/usage.txt - -perl; -use strict; -use warnings; -use File::Copy; -my $dir = $ENV{'MYSQLTEST_VARDIR'}; -my $file= 'help_output_long.txt'; -# open file in write mode -open IN_FILE,"<", "$dir/tmp/$file" or die $!; -open OUT_FILE, ">", "$dir/tmp/tmpfile" or die $!; -while(<IN_FILE>) { - unless ($_=~ /^debug.*$/ || $_=~ /\-#, \-\-debug.*$/ || $_=~ /http:.*html/) { - $_=~ s/^\S*innochecksum.+Ver.+[0-9]*\.[0-9]*\.[0-9]*.+$/innochecksum Ver #.#.#/g; - $_=~ s/(Copyright\s\(c\))\s([0-9]*),\s([0-9]*)(.*)/$1 YEAR, YEAR $4/g; - $_=~ s/Usage:.*\[-c/Usage: innochecksum [-c/g; - print OUT_FILE $_; - } -} -close(IN_FILE); -close(OUT_FILE); -# move the new content from tmp file to the orginal file. -move ("$dir/tmp/tmpfile", "$dir/tmp/$file"); -EOF - ---cat_file $MYSQLTEST_VARDIR/tmp/help_output_long.txt ---remove_file $MYSQLTEST_VARDIR/tmp/help_output_long.txt ---remove_file $MYSQLTEST_VARDIR/tmp/help_output_short.txt - ---echo [3]:# check the both short and long options for "count" and exit ---replace_regex /[0-9]+/#/ ---exec $INNOCHECKSUM --count $MYSQLD_DATADIR/test/t1.ibd ---replace_regex /[0-9]+/#/ ---exec $INNOCHECKSUM -c $MYSQLD_DATADIR/test/t1.ibd - ---echo [4]:# Print the version of innochecksum and exit ---replace_regex /.*innochecksum.*Ver.*[0-9]*.[0-9]*.[0-9]*.*/innochecksum Ver #.#.#/ ---exec $INNOCHECKSUM -V $MYSQLD_DATADIR/test/t1.ibd - ---echo # Restart the DB server ---source include/start_mysqld.inc - -DROP TABLE t1; - ---echo [5]:# Check the innochecksum for compressed table t1 with different key_block_size ---echo # Test for KEY_BLOCK_SIZE=1 ---let $size=1 ---source ../include/innodb-wl6045.inc - ---echo # Test for KEY_BLOCK_SIZE=2 ---let $size=2 ---source ../include/innodb-wl6045.inc - ---echo # Test for for KEY_BLOCK_SIZE=4 ---let $size=4 ---source ../include/innodb-wl6045.inc - -set innodb_strict_mode=off; ---echo # Test for for KEY_BLOCK_SIZE=8 ---let $size=8 ---source ../include/innodb-wl6045.inc - -set innodb_strict_mode=off; ---echo # Test for KEY_BLOCK_SIZE=16 ---let $size=16 ---source ../include/innodb-wl6045.inc ---echo # Test[5] completed diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt b/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt deleted file mode 100644 index 302a9872a26..00000000000 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.opt +++ /dev/null @@ -1 +0,0 @@ ---innodb-file-per-table diff --git a/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.test b/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.test deleted file mode 100644 index dab10dcc997..00000000000 --- a/mysql-test/suite/innodb/t/innodb_zip_innochecksum3.test +++ /dev/null @@ -1,406 +0,0 @@ -#************************************************************ -# WL6045:Improve Innochecksum -#************************************************************ ---source include/innodb_page_size_small.inc - ---source include/no_valgrind_without_big.inc - -# Embedded server does not support crashing. ---source include/not_embedded.inc - -# Avoid CrashReporter popup on Mac. ---source include/not_crashrep.inc - ---echo # Set the environmental variables -let MYSQLD_BASEDIR= `SELECT @@basedir`; -let MYSQLD_DATADIR= `SELECT @@datadir`; -let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err; - -call mtr.add_suppression("InnoDB: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts"); -call mtr.add_suppression("InnoDB: innodb_checksum_algorithm is set to.*"); - ---echo [1]: Further Test are for rewrite checksum (innodb|crc32|none) for all ibd file & start the server. - -CREATE TABLE tab1 (pk INTEGER NOT NULL PRIMARY KEY, -linestring_key GEOMETRY NOT NULL, -linestring_nokey GEOMETRY NOT NULL) -ENGINE=InnoDB ; - -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (1, ST_GeomFromText('POINT(10 10) '), ST_GeomFromText('POINT(10 10) ')); - -CREATE INDEX linestring_index ON tab1(linestring_nokey(5)); -ALTER TABLE tab1 ADD KEY (linestring_key(5)); - ---echo # create a compressed table -CREATE TABLE tab2(col_1 CHAR (255) , -col_2 VARCHAR (255), col_3 longtext, -col_4 longtext,col_5 longtext, -col_6 longtext , col_7 int ) -engine = innodb row_format=compressed key_block_size=4; - -CREATE INDEX idx1 ON tab2(col_3(10)); -CREATE INDEX idx2 ON tab2(col_4(10)); -CREATE INDEX idx3 ON tab2(col_5(10)); - -# load the with repeat function -SET @col_1 = repeat('a', 5); -SET @col_2 = repeat('b', 20); -SET @col_3 = repeat('c', 100); -SET @col_4 = repeat('d', 100); -SET @col_5 = repeat('e', 100); -SET @col_6 = repeat('f', 100); - -# insert 5 records -let $i = 5; -while ($i) { - eval INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) - VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,$i); - dec $i; -} - ---disable_result_log -SELECT * FROM tab2 ORDER BY col_7; - ---echo # stop the server ---source include/shutdown_mysqld.inc - ---echo [1(a)]: Rewrite into new checksum=InnoDB for all *.ibd file and ibdata1 ---exec $INNOCHECKSUM --write=InnoDB $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --write=InnoDB $MYSQLD_DATADIR/test/tab2.ibd ---exec $INNOCHECKSUM --write=InnoDB $MYSQLD_DATADIR/ibdata1 -perl; -foreach (glob("$ENV{MYSQLD_DATADIR}/*/*.ibd")) { - system("$ENV{INNOCHECKSUM} --no-check --write=InnoDB $_") -} -EOF - ---echo : start the server with innodb_checksum_algorithm=strict_innodb ---let $restart_parameters= --innodb_checksum_algorithm=strict_innodb ---source include/start_mysqld.inc - -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (2, ST_GeomFromText('LINESTRING(10 10,20 20,30 30)'), ST_GeomFromText('LINESTRING(10 10,20 20,30 30)')); - -# load the with repeat function -SET @col_1 = repeat('a', 5); -SET @col_2 = repeat('b', 20); -SET @col_3 = repeat('c', 100); -SET @col_4 = repeat('d', 100); -SET @col_5 = repeat('e', 100); -SET @col_6 = repeat('f', 100); - -# check the table status is GOOD with DML -let $i = 6; -eval INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,$i); - --- disable_result_log -SELECT pk,ST_AsText(linestring_key),ST_AsText(linestring_nokey) -FROM tab1 ORDER BY pk; - --- disable_result_log -SELECT * FROM tab2 ORDER BY col_7; - ---echo # stop the server ---source include/shutdown_mysqld.inc - ---echo [1(b)]: Rewrite into new checksum=crc32 for all *.ibd file and ibdata1 ---exec $INNOCHECKSUM --write=CRC32 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --write=CRC32 $MYSQLD_DATADIR/test/tab2.ibd ---exec $INNOCHECKSUM --write=CRC32 $MYSQLD_DATADIR/ibdata1 -perl; -foreach (glob("$ENV{MYSQLD_DATADIR}/*/*.ibd")) { - system("$ENV{INNOCHECKSUM} --no-check --write=crc32 $_") -} -EOF - ---echo # start the server with innodb_checksum_algorithm=strict_crc32 ---let $restart_parameters= --innodb_checksum_algorithm=strict_crc32 ---source include/start_mysqld.inc - -# check the table status is GOOD with DML -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (3, ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))'), -ST_GeomFromText('POLYGON((0 0,5 5,10 10,15 15,0 0),(10 10,20 20,30 30,40 40,10 10))')); - -# load the with repeat function -SET @col_1 = repeat('g', 5); -SET @col_2 = repeat('h', 20); -SET @col_3 = repeat('i', 100); -SET @col_4 = repeat('j', 100); -SET @col_5 = repeat('k', 100); -SET @col_6 = repeat('l', 100); - -# check the table status is GOOD with DML -let $i = 7; -eval INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,$i); - -# check the records from table --- disable_result_log -SELECT pk,ST_AsText(linestring_key),ST_AsText(linestring_nokey) -FROM tab1 ORDER BY pk; - --- disable_result_log -SELECT * FROM tab2 ORDER BY col_7; - ---echo # stop the server ---source include/shutdown_mysqld.inc - ---echo [1(c)]: Rewrite into new checksum=none for all *.ibd file and ibdata1 ---exec $INNOCHECKSUM --write=none $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --write=none $MYSQLD_DATADIR/test/tab2.ibd ---exec $INNOCHECKSUM --write=none $MYSQLD_DATADIR/ibdata1 -perl; -foreach (glob("$ENV{MYSQLD_DATADIR}/undo*")) { - system("$ENV{INNOCHECKSUM} --no-check --write=NONE $_") -} -foreach (glob("$ENV{MYSQLD_DATADIR}/*/*.ibd")) { - system("$ENV{INNOCHECKSUM} --no-check --write=NONE $_") -} -EOF - ---let $restart_parameters= --innodb_checksum_algorithm=strict_none ---source include/start_mysqld.inc ---let $restart_parameters= -# check the table status is GOOD with DML -INSERT INTO tab1 (pk, linestring_key, linestring_nokey) -VALUES (4, ST_GeomFromText('MULTIPOINT(0 0,5 5,10 10,20 20) '), ST_GeomFromText('MULTIPOINT(0 0,5 5,10 10,20 20) ')); - -# load the with repeat function -SET @col_1 = repeat('m', 5); -SET @col_2 = repeat('n', 20); -SET @col_3 = repeat('o', 100); -SET @col_4 = repeat('p', 100); -SET @col_5 = repeat('q', 100); -SET @col_6 = repeat('r', 100); - -# check the table status is GOOD with DML -let $i = 8; -eval INSERT INTO tab2(col_1,col_2,col_3,col_4,col_5,col_6,col_7) -VALUES (@col_1,@col_2,@col_3,@col_4,@cl_5,@col_6,$i); - -# check the records from table --- disable_result_log -SELECT pk,ST_AsText(linestring_key),ST_AsText(linestring_nokey) -FROM tab1 ORDER BY pk; - ---disable_result_log -SELECT * FROM tab2 ORDER BY col_7; ---enable_result_log - ---echo # stop the server ---source include/shutdown_mysqld.inc - ---echo [2]: Check the page type summary with shortform for tab1.ibd ---replace_regex /File.*.ibd/File::tab1.ibd/ /[0-9]+/#/ ---exec $INNOCHECKSUM -S $MYSQLD_DATADIR/test/tab1.ibd 2>$MYSQLTEST_VARDIR/tmp/page_summary_short.txt - ---echo [3]: Check the page type summary with longform for tab1.ibd ---replace_regex /File.*.ibd/File::tab1.ibd/ /[0-9]+/#/ ---exec $INNOCHECKSUM --page-type-summary $MYSQLD_DATADIR/test/tab1.ibd 2>$MYSQLTEST_VARDIR/tmp/page_summary_long.txt - ---remove_file $MYSQLTEST_VARDIR/tmp/page_summary_short.txt ---remove_file $MYSQLTEST_VARDIR/tmp/page_summary_long.txt ---echo [4]: Page type dump for with longform for tab1.ibd ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR ---exec $INNOCHECKSUM --page-type-dump $MYSQLTEST_VARDIR/tmp/dump.txt $MYSQLD_DATADIR/test/tab1.ibd - -perl; -use strict; -use warnings; -use File::Copy; -my $dir = $ENV{'MYSQLTEST_VARDIR'}; -opendir(DIR, $dir) or die $!; -my $file= 'dump.txt'; -# open file in write mode -open IN_FILE,"<", "$dir/tmp/$file" or die $!; -open OUT_FILE, ">", "$dir/tmp/innochecksum_3_tempfile" or die $!; -while(<IN_FILE>) -{ - # Replace the intergers to # and complete file path to file name only. - $_=~ s/Filename.+/Filename::tab1.ibd/g; - $_=~ s/\d+/#/g; - print OUT_FILE $_; -} -close(IN_FILE); -close(OUT_FILE); -# move the new content from tmp file to the orginal file. -move ("$dir/tmp/innochecksum_3_tempfile", "$dir/tmp/$file"); -closedir(DIR); -EOF - ---echo # Print the contents stored in dump.txt -cat_file $MYSQLTEST_VARDIR/tmp/dump.txt; ---remove_file $MYSQLTEST_VARDIR/tmp/dump.txt - ---echo # Variables used by page type dump for ibdata1 ---exec $INNOCHECKSUM -v --page-type-dump $MYSQLTEST_VARDIR/tmp/dump.txt $MYSQLD_DATADIR/ibdata1 > $MYSQLTEST_VARDIR/tmp/page_verbose_summary.txt - ---file_exists $MYSQLTEST_VARDIR/tmp/dump.txt ---remove_file $MYSQLTEST_VARDIR/tmp/dump.txt - -perl; -use strict; -use warnings; -use File::Copy; -my $dir = $ENV{'MYSQLTEST_VARDIR'}; -opendir(DIR, $dir) or die $!; -my $file= 'page_verbose_summary.txt'; -# open file in write mode -open IN_FILE,"<", "$dir/tmp/$file" or die $!; -open OUT_FILE, ">", "$dir/tmp/innochecksum_3_tempfile" or die $!; -while(<IN_FILE>) -{ - # Replace complete file path to file name only. - $_=~ s/$dir/MYSQLTEST_VARDIR/; - # Remove debug option, which is not in all builds - next if (/debug/); - print OUT_FILE $_; -} -close(IN_FILE); -close(OUT_FILE); -# move the new content from tmp file to the orginal file. -move ("$dir/tmp/innochecksum_3_tempfile", "$dir/tmp/$file"); -closedir(DIR); -EOF - -cat_file $MYSQLTEST_VARDIR/tmp/page_verbose_summary.txt; ---remove_file $MYSQLTEST_VARDIR/tmp/page_verbose_summary.txt - ---echo [5]: Page type dump for with shortform for tab1.ibd ---exec $INNOCHECKSUM -D $MYSQLTEST_VARDIR/tmp/dump.txt $MYSQLD_DATADIR/test/tab1.ibd - -perl; -use strict; -use warnings; -use File::Copy; -my $dir = $ENV{'MYSQLTEST_VARDIR'}; -opendir(DIR, $dir) or die $!; -my $file= 'dump.txt'; -# open file in write mode -open IN_FILE,"<", "$dir/tmp/$file" or die $!; -open OUT_FILE, ">", "$dir/tmp/innochecksum_3_tempfile" or die $!; -while(<IN_FILE>) -{ - # Replace the intergers to # and complete file path to file name only. - $_=~ s/Filename.+/Filename::tab1.ibd/g; - $_=~ s/\d+/#/g; - print OUT_FILE $_; -} -close(IN_FILE); -close(OUT_FILE); -# move the new content from tmp file to the orginal file. -move ("$dir/tmp/innochecksum_3_tempfile", "$dir/tmp/$file"); -closedir(DIR); -EOF - -# Print the contents stored in dump.txt -cat_file $MYSQLTEST_VARDIR/tmp/dump.txt; ---remove_file $MYSQLTEST_VARDIR/tmp/dump.txt - ---echo [6]: check the valid lower bound values for option ---echo # allow-mismatches,page,start-page,end-page ---exec $INNOCHECKSUM --allow-mismatches=0 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM -a 0 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --page=0 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM -p 0 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --start-page=0 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM -s 0 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM --end-page=0 $MYSQLD_DATADIR/test/tab1.ibd ---exec $INNOCHECKSUM -e 0 $MYSQLD_DATADIR/test/tab1.ibd - -# -# These produce now errors -# -#--echo [7]: check the negative values for option -#--echo # allow-mismatches,page,start-page,end-page. -#--echo # They will reset to zero for negative values. -#--echo # check the invalid lower bound values -#--exec $INNOCHECKSUM --allow-mismatches=-1 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM -a -1 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM --page=-1 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM -p -1 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM --start-page=-1 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM -s -1 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM --end-page=-1 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM -e -1 $MYSQLD_DATADIR/test/tab1.ibd -# -#--echo [8]: check the valid upper bound values for -#--echo # both short and long options "allow-mismatches" and "end-page" -# -#--exec $INNOCHECKSUM --allow-mismatches=18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM -a 18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM --end-page=18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd -#--exec $INNOCHECKSUM -e 18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd - ---echo [9]: check the both short and long options "page" and "start-page" when ---echo # seek value is larger than file size. ---error 1 ---exec $INNOCHECKSUM --page=18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: Unable to seek to necessary offset: Invalid argument; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -p 18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: Unable to seek to necessary offset: Invalid argument; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --start-page=18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: Unable to seek to necessary offset: Invalid argument; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -s 18446744073709551615 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Error: Unable to seek to necessary offset: Invalid argument; ---source include/search_pattern_in_file.inc - ---echo [34]: check the invalid upper bound values for options, allow-mismatches, end-page, start-page and page. ---echo # innochecksum will fail with error code: 1 ---error 1 ---exec $INNOCHECKSUM --allow-mismatches=18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -a 18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --end-page=18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -e 18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --page=18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -p 18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM --start-page=18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc - ---error 1 ---exec $INNOCHECKSUM -s 18446744073709551616 $MYSQLD_DATADIR/test/tab1.ibd 2> $SEARCH_FILE -let SEARCH_PATTERN= Incorrect unsigned integer value: '18446744073709551616'; ---source include/search_pattern_in_file.inc ---remove_file $SEARCH_FILE - -# Cleanup ---source include/start_mysqld.inc - -DROP TABLE tab1,tab2; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 544ae1e4f8c..233e0313121 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -602,7 +602,8 @@ void init_update_queries(void) sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE | CF_CAN_GENERATE_ROW_EVENTS | CF_OPTIMIZER_TRACE | - CF_CAN_BE_EXPLAINED; + CF_CAN_BE_EXPLAINED | + CF_SP_BULK_SAFE; sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE | CF_CAN_GENERATE_ROW_EVENTS | CF_OPTIMIZER_TRACE | diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index cbf3dad0965..08fd003a919 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -20305,8 +20305,67 @@ static void test_bulk_autoinc() myquery(rc); } -#endif +static void test_bulk_delete() +{ + int rc; + MYSQL_STMT *stmt; + MYSQL_BIND bind[1]; + MYSQL_ROW row; + char indicator[]= {0, 0, 0}; + my_bool error[1]; + int i, id[]= {1, 2, 4}, count= sizeof(id)/sizeof(id[0]); + MYSQL_RES *result; + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS t1"); + myquery(rc); + rc= mysql_query(mysql, "CREATE TABLE t1 (id int not null primary key)"); + myquery(rc); + rc= mysql_query(mysql, "INSERT INTO t1 VALUES (1),(2),(3),(4)"); + myquery(rc); + verify_affected_rows(4); + + stmt= mysql_stmt_init(mysql); + rc= mysql_stmt_prepare(stmt, "DELETE FROM t1 where id=?", -1); + check_execute(stmt, rc); + + memset(bind, 0, sizeof(bind)); + bind[0].buffer_type = MYSQL_TYPE_LONG; + bind[0].buffer = (void *)id; + bind[0].buffer_length = 0; + bind[0].is_null = NULL; + bind[0].length = NULL; + bind[0].error = error; + bind[0].u.indicator= indicator; + mysql_stmt_attr_set(stmt, STMT_ATTR_ARRAY_SIZE, (void*)&count); + rc= mysql_stmt_bind_param(stmt, bind); + check_execute(stmt, rc); + + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + verify_affected_rows(3); + + mysql_stmt_close(stmt); + + rc= mysql_query(mysql, "SELECT id FROM t1"); + myquery(rc); + + result= mysql_store_result(mysql); + mytest(result); + + i= 0; + while ((row= mysql_fetch_row(result))) + { + i++; + DIE_IF(atoi(row[0]) != 3); + } + DIE_IF(i != 1); + + rc= mysql_query(mysql, "DROP TABLE t1"); + myquery(rc); +} + +#endif static void print_metadata(MYSQL_RES *rs_metadata, int num_fields) { @@ -20915,6 +20974,7 @@ static struct my_tests_st my_tests[]= { #ifndef EMBEDDED_LIBRARY { "test_proxy_header", test_proxy_header}, { "test_bulk_autoinc", test_bulk_autoinc}, + { "test_bulk_delete", test_bulk_delete }, #endif { "test_explain_meta", test_explain_meta }, { 0, 0 } |