Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  wl5522_debug_zip.test  Sprache: unbekannt

 
Spracherkennung für: .test vermutete Sprache: Abap {ABAP[99] Masm[94] SQL[91]} [Methode: maximale Elemente, drei Dimensionen]

# mysql-test-run.pl --embedded cannot restart the server.
--source include/not_embedded.inc

# This test case needs to crash the server. Needs a debug server.
--source include/have_debug.inc

# Valgrind can hang or return spurious messages on DBUG_SUICIDE
--source include/not_valgrind.inc

# Avoid CrashReporter popup on Mac
--source include/not_crashrep.inc

--source include/innodb_page_size_small.inc
--source include/default_charset.inc
--source include/have_sequence.inc

--source include/test_db_charset_latin1.inc

call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded\\.");
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue\\.");
call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file");
call mtr.add_suppression("InnoDB: Page for tablespace ");
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=0x");
call mtr.add_suppression("InnoDB: Unknown index id .* on page");
call mtr.add_suppression("InnoDB: Operating system error number");
call mtr.add_suppression("InnoDB: Error number \\d+ means");
call mtr.add_suppression("InnoDB: Cannot open datafile .*t1\\.ibd");
call mtr.add_suppression("InnoDB: Ignoring tablespace for test/t1 ");
call mtr.add_suppression("InnoDB: Cannot save statistics for table `test`\\.`t1` because the \\.ibd file is missing");
call mtr.add_suppression("InnoDB: Failed to read page \\d+ from file '.*test/t1\\.ibd'");
call mtr.add_suppression("InnoDB: File '.*(ibdata1|t1\\.ibd)' is corrupted");
FLUSH TABLES;

let MYSQLD_DATADIR =`SELECT @@datadir`;

SET SESSION innodb_strict_mode=1;

# Create the table that we will use for crash recovery (during IMPORT)
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
ROW_FORMAT=COMPRESSED;
INSERT INTO t1 VALUES (1), (2), (3), (4);

FLUSH TABLES t1 FOR EXPORT;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_backup_tablespaces("test", "t1");
EOF
UNLOCK TABLES;

DROP TABLE t1;

CREATE TABLE t1 (c1 INT) ENGINE = Innodb
ROW_FORMAT=COMPRESSED;
INSERT INTO t1 VALUES (1);

ALTER TABLE t1 DISCARD TABLESPACE;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_discard_tablespaces("test", "t1");
EOF

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

##### Before commit crash
SET SESSION debug_dbug="+d,ib_import_before_commit_crash";

--error ER_TABLESPACE_DISCARDED
SELECT * FROM t1;

# Write file to make mysql-test-run.pl start up the server again
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect

# Execute the statement that causes the crash
--error 2013,2026
ALTER TABLE t1 IMPORT TABLESPACE;

--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect

#### Before commit crash

# Check that the DD is consistent after recovery

##### Before checkpoint crash
SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Don't start up the server right away.
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect

# Execute the statement that causes the crash
--error 2013,2026
ALTER TABLE t1 IMPORT TABLESPACE;

# After the above test the results are non-deterministic,
# delete the old tablespace files and drop the table,
# recreate the table and do a proper import.
-- source include/wait_until_disconnected.inc
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

--echo # Restart and reconnect to the server
--enable_reconnect
--write_line restart $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--source include/wait_until_connected_again.inc
--disable_reconnect

#### Before checkpoint crash

# After the above test the results are non-deterministic, recreate the table
# and do a proper import.

DROP TABLE t1;

SET SESSION innodb_strict_mode=1;

CREATE TABLE t1 (c1 INT) ENGINE = Innodb
ROW_FORMAT=COMPRESSED;

ALTER TABLE t1 DISCARD TABLESPACE;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

ALTER TABLE t1 IMPORT TABLESPACE;
CHECK TABLE t1;

SELECT COUNT(*) FROM t1;

INSERT INTO t1 VALUES(400), (500), (600);

SELECT * FROM t1;

DROP TABLE t1;

# Test handling of internal failure error
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
ROW_FORMAT=COMPRESSED;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

# Test failure after reset of space id and LSN in the tablespace
SET @saved_debug_dbug = @@SESSION.debug_dbug;
SET SESSION debug_dbug="+d,ib_import_internal_error";

--error ER_INTERNAL_ERROR
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

ALTER TABLE t1 IMPORT TABLESPACE;

DROP TABLE t1;


# Test failure after reset of space id and LSN in the tablespace
CREATE TABLE t1 (c1 INT) ENGINE = Innodb
ROW_FORMAT=COMPRESSED;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

# Test failure after reset of space id and LSN in the tablespace
SET SESSION debug_dbug="+d,ib_import_reset_space_and_lsn_failure";

--error ER_INTERNAL_ERROR
ALTER TABLE t1 IMPORT TABLESPACE;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

SET SESSION debug_dbug=@saved_debug_dbug;

# Test failure after attempting a tablespace open
SET SESSION debug_dbug="+d,ib_import_open_tablespace_failure";

--replace_result \\ /
--error ER_GET_ERRMSG
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

# Test failure after adjusting the cluster index root page
SET SESSION debug_dbug="+d,ib_import_cluster_root_adjust_failure";

--error ER_NOT_KEYFILE
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

# Test failure after importing the cluster index
SET SESSION debug_dbug="+d,ib_import_cluster_failure";

--error ER_NOT_KEYFILE
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

# Test failure after importing the secondary index(es)
SET SESSION debug_dbug="+d,ib_import_sec_root_adjust_failure";

--error ER_NOT_KEYFILE
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

ALTER TABLE t1 IMPORT TABLESPACE;
DROP TABLE t1;

#
# Create a large table with delete marked records, disable purge during
# the update so that we can test the IMPORT purge code.
#
CREATE TABLE t1 (
 c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 c2 BIGINT,
 c3 VARCHAR(2048),
 c4 VARCHAR(2048),
 INDEX idx1(c2),
 INDEX idx2(c3(512)),
 INDEX idx3(c4(512))) Engine=InnoDB
        ROW_FORMAT=COMPRESSED;

# Stop purge so that it doesn't remove the delete marked entries.
connect (purge_control,localhost,root);
START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection default;

INSERT INTO t1
SELECT 1 + seq, 1 + (seq MOD 4),
 REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048),
 REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048)
FROM seq_0_to_127;

DELETE FROM t1 WHERE c2 = 1;

UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c2 = c2 + c1;
UPDATE t1 SET c3 = REPEAT("c2", 1024);
UPDATE t1 SET c4 = REPEAT("c4", 1024);

SHOW CREATE TABLE t1;

FLUSH TABLES t1 FOR EXPORT;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_backup_tablespaces("test", "t1");
EOF

UNLOCK TABLES;

# Enable normal operation
connection purge_control;
COMMIT;
disconnect purge_control;
connection default;

DROP TABLE t1;

CREATE TABLE t1 (
 c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 c2 BIGINT,
 c3 VARCHAR(2048),
 c4 VARCHAR(2048),
 INDEX idx1(c2),
 INDEX idx2(c3(512)),
 INDEX idx3(c4(512))) Engine=InnoDB
        ROW_FORMAT=COMPRESSED;

SELECT c1, c2 FROM t1;

ALTER TABLE t1 DISCARD TABLESPACE;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

ALTER TABLE t1 IMPORT TABLESPACE;
CHECK TABLE t1;

SELECT c1,c2 FROM t1;

SHOW CREATE TABLE t1;

DROP TABLE t1;

####
# Create a table and save the tablespace and .cfg file, we need to create
# a Btree that has several levels
CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

INSERT INTO t1
SELECT 100, REPEAT('Karanbir', 128), REPEAT('Ajeeth', 1200)
FROM seq_1_to_256;
FLUSH TABLES t1 FOR EXPORT;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_backup_tablespaces("test", "t1");
EOF

UNLOCK TABLES;

DROP TABLE t1;

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

SET SESSION debug_dbug="+d,ib_import_trigger_corruption_1";

--error ER_INTERNAL_ERROR
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

#

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
let MYSQLD_DATADIR=`select @@datadir`;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
my $page;
my $ps = $ENV{INNODB_PAGE_SIZE};
my $file = "$ENV{MYSQLD_DATADIR}/test/t1.ibd";
open(FILE, "+<$file") || die "Unable to open $file";
binmode FILE;
sysseek(FILE, 4*$ps, 0) || die "Unable to seek $file\n";
die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps;
substr($page,24,2)='42';
sysseek(FILE, 4*$ps, 0) || die "Unable to rewind $file\n";
syswrite(FILE, $page, $ps)==$ps || die "Unable to write $file\n";
close(FILE) || die "Unable to close $file";
EOF

# Following alter is failing
--error ER_INTERNAL_ERROR,ER_NOT_KEYFILE
ALTER TABLE t1 IMPORT TABLESPACE;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

SET SESSION debug_dbug="+d,ib_import_trigger_corruption_2";

--error ER_INNODB_INDEX_CORRUPT
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

SET SESSION debug_dbug="+d,ib_import_trigger_corruption_3";

--error ER_NOT_KEYFILE
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

SET SESSION debug_dbug="+d,ib_import_create_index_failure_1";

ALTER TABLE t1 ADD INDEX idx(c1);

SET SESSION debug_dbug=@saved_debug_dbug;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

#

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

SET SESSION debug_dbug="+d,fil_space_create_failure";

--replace_result \\ /
--error ER_GET_ERRMSG
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

#

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

SET SESSION debug_dbug="+d,dict_tf_to_fsp_flags_failure";

--replace_result \\ /
--error ER_GET_ERRMSG
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

#

CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

ALTER TABLE t1 DISCARD TABLESPACE;

--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*) FROM t1;

# Restore files
perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_restore_tablespaces("test", "t1");
EOF

SET SESSION debug_dbug="+d,fsp_flags_is_valid_failure";

--error ER_NOT_KEYFILE
ALTER TABLE t1 IMPORT TABLESPACE;

SET SESSION debug_dbug=@saved_debug_dbug;

DROP TABLE t1;

perl;
do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl";
ib_unlink_tablespace("test", "t1");
EOF

--disable_query_log
call mtr.add_suppression("'Resource temporarily unavailable'");
call mtr.add_suppression("Got error -1 when reading table '.*'");
call mtr.add_suppression("InnoDB: Table '.*' tablespace is set as discarded.");
call mtr.add_suppression("InnoDB: Tablespace '.*' exists in the cache");
call mtr.add_suppression("InnoDB: Freeing existing tablespace '.*' entry from the cache with id.*");
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
call mtr.add_suppression("There was an error writing to the meta data file");
call mtr.add_suppression("InnoDB: Trying to import a tablespace, but could not open the tablespace file");
call mtr.add_suppression("Unsupported tablespace format");
call mtr.add_suppression("Page is marked as free");
call mtr.add_suppression("t1.ibd: Page .* at offset .* looks corrupted");
call mtr.add_suppression("but tablespace with that id or name does not exist");
call mtr.add_suppression("Could not find a valid tablespace file for '.*t1'");
call mtr.add_suppression("Index for table 't1' is corrupt; try to repair it");
--enable_query_log

#cleanup
--remove_file $MYSQLTEST_VARDIR/tmp/t1.cfg
--remove_file $MYSQLTEST_VARDIR/tmp/t1.ibd

--source include/test_db_charset_restore.inc

[Dauer der Verarbeitung: 0.21 Sekunden]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126438
#Domains=1897691