-- source include/have_innodb.inc
# This test is slow on buildbot.
--source include/big_test.inc

SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;

FLUSH TABLES;

let $MYSQLD_TMPDIR = `SELECT @@tmpdir`;
let $MYSQLD_DATADIR = `SELECT @@datadir`;

--echo # Treating compact format as dynamic format after import stmt

CREATE TABLE t1
(a int AUTO_INCREMENT PRIMARY KEY,
 b blob,
 c blob,
 KEY (b(200))) ENGINE=InnoDB ROW_FORMAT=COMPACT;

BEGIN;
INSERT INTO t1 (b, c) values (repeat("ab", 200), repeat("bc", 200));
INSERT INTO t1 (b, c) values (repeat("bc", 200), repeat("cd", 200));
INSERT INTO t1 (b, c) values (repeat("cd", 200), repeat("ef", 200));
INSERT INTO t1 (b, c) values (repeat("de", 200), repeat("fg", 200));
INSERT INTO t1 (b, c) values (repeat("ef", 200), repeat("gh", 200));
INSERT INTO t1 (b, c) values (repeat("fg", 200), repeat("hi", 200));
INSERT INTO t1 (b, c) values (repeat("gh", 200), repeat("ij", 200));
INSERT INTO t1 (b, c) values (repeat("hi", 200), repeat("jk", 200));
INSERT INTO t1 (b, c) values (repeat("ij", 200), repeat("kl", 200));
INSERT INTO t1 (b, c) values (repeat("jk", 200), repeat("lm", 200));
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
INSERT INTO t1 (b, c) SELECT b,c FROM t1 ORDER BY a;
COMMIT;
SELECT COUNT(*) FROM t1;

FLUSH TABLE t1 FOR EXPORT;
--echo # List before copying files
let MYSQLD_DATADIR =`SELECT @@datadir`;

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

UNLOCK TABLES;
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
ALTER TABLE t1 DISCARD TABLESPACE;

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

--remove_file $MYSQLD_DATADIR/test/t1.cfg
--error ER_INTERNAL_ERROR
ALTER TABLE t1 IMPORT TABLESPACE;
ALTER TABLE t1 DROP INDEX b;
--disable_warnings
ALTER TABLE t1 IMPORT TABLESPACE;
--enable_warnings
SHOW CREATE TABLE t1;

--echo # Auto increment value must be more than maximum column value
SELECT MAX(a) FROM t1;
SELECT auto_increment FROM information_schema.tables
WHERE table_name like 't1';

UPDATE t1 set b = repeat("de", 100) where b = repeat("cd", 200);
--replace_column 9 #
explain SELECT a FROM t1 where b = repeat("de", 100);
SELECT a FROM t1 where b = repeat("de", 100);
SELECT COUNT(*) FROM t1;
DELETE FROM t1;
--source include/wait_all_purged.inc
CHECK TABLE t1;
DROP TABLE t1;

CREATE TABLE t1
(c1 int AUTO_INCREMENT PRIMARY KEY,
 c2 POINT NOT NULL,
 c3 LINESTRING NOT NULL,
 SPATIAL INDEX idx1(c2)) ENGINE=InnoDB ROW_FORMAT=COMPACT;

INSERT INTO t1(c2,c3) VALUES(
	ST_GeomFromText('POINT(10 10)'),
	ST_GeomFromText('LINESTRING(5 5,20 20,30 30)'));

INSERT INTO t1(c2,c3) VALUES(
	ST_GeomFromText('POINT(20 20)'),
	ST_GeomFromText('LINESTRING(5 15,20 10,30 20)'));

INSERT INTO t1(c2,c3) VALUES(
	ST_GeomFromText('POINT(30 30)'),
	ST_GeomFromText('LINESTRING(10 5,20 24,30 32)'));

INSERT INTO t1(c2,c3) VALUES(
	ST_GeomFromText('POINT(40 40)'),
	ST_GeomFromText('LINESTRING(15 5,25 20,35 30)'));

INSERT INTO t1(c2,c3) VALUES(
	ST_GeomFromText('POINT(50 10)'),
	ST_GeomFromText('LINESTRING(15 15,24 10,31 20)'));

INSERT INTO t1(c2,c3) VALUES(
	ST_GeomFromText('POINT(60 50)'),
	ST_GeomFromText('LINESTRING(10 15,20 44,35 32)'));

BEGIN;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
INSERT INTO t1(c2, c3) SELECT c2, c3 FROM t1;
COMMIT;

FLUSH TABLE t1 FOR EXPORT;
--echo # List before copying files
let MYSQLD_DATADIR =`SELECT @@datadir`;

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

UNLOCK TABLES;
ALTER TABLE t1 ROW_FORMAT=DYNAMIC;
ALTER TABLE t1 DISCARD TABLESPACE;
perl;
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
ib_discard_tablespaces("test", "t1");
ib_restore_tablespaces("test", "t1");
EOF

--remove_file $MYSQLD_DATADIR/test/t1.cfg
--error ER_INTERNAL_ERROR
ALTER TABLE t1 IMPORT TABLESPACE;
--enable_warnings
ALTER TABLE t1 DROP INDEX idx1;
--replace_regex /opening '.*\/test\//opening '.\/test\//
ALTER TABLE t1 IMPORT TABLESPACE;
--disable_warnings
SHOW CREATE TABLE t1;

--echo # Auto increment value must be more than maximum column value
SELECT MAX(c1) FROM t1;
SELECT auto_increment FROM information_schema.tables
WHERE table_name like 't1';

UPDATE t1 SET C2 = ST_GeomFromText('POINT(0 0)');
SELECT COUNT(*) FROM t1;
DELETE FROM t1;
CHECK TABLE t1;
--source include/wait_all_purged.inc
DROP TABLE t1;

SET @save_algo = @@GLOBAL.innodb_compression_algorithm;
--error 0,ER_WRONG_VALUE_FOR_VAR
SET GLOBAL innodb_compression_algorithm=2;
CREATE TABLE t1(a SERIAL) PAGE_COMPRESSED=1 ENGINE=InnoDB;
INSERT INTO t1 VALUES(1);

FLUSH TABLE t1 FOR EXPORT;
--echo # List before copying files
let MYSQLD_DATADIR =`SELECT @@datadir`;

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

UNLOCK TABLES;
SET GLOBAL innodb_compression_algorithm=0;
ALTER TABLE t1 FORCE;
ALTER TABLE t1 DISCARD TABLESPACE;

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

ALTER TABLE t1 IMPORT TABLESPACE;
INSERT INTO t1 VALUES(2);
SELECT * FROM t1;


--error 0,ER_WRONG_VALUE_FOR_VAR
SET GLOBAL innodb_compression_algorithm=3;
FLUSH TABLE t1 FOR EXPORT;
--echo # List before copying files
let MYSQLD_DATADIR =`SELECT @@datadir`;

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

UNLOCK TABLES;
SET GLOBAL innodb_compression_algorithm=0;
ALTER TABLE t1 FORCE;
ALTER TABLE t1 DISCARD TABLESPACE;

--echo # Display the discarded table name by using SPACE and PAGE_NO
--echo # column in INNODB_SYS_INDEXES and discard doesn't affect the
--echo # SPACE in INNODB_SYS_TABLES
SELECT t.NAME, t.SPACE BETWEEN 1 and 0xFFFFFFEF as SYS_TABLE_SPACE_RANGE
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES t
WHERE t.TABLE_ID IN (
	SELECT i.TABLE_ID FROM
	INFORMATION_SCHEMA.INNODB_SYS_INDEXES i WHERE
	i.PAGE_NO IS NULL and i.SPACE IS NULL);

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

ALTER TABLE t1 IMPORT TABLESPACE;
INSERT INTO t1 VALUES(3);
SELECT * FROM t1;
DROP TABLE t1;

SET GLOBAL innodb_compression_algorithm=@save_algo;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
