########################################
# Author: JBM
# Date: 2006-01-24
# Purpose: Test CDD backup and restore
########################################

-- source include/have_ndb.inc
-- source include/ndb_default_cluster.inc
-- source include/not_embedded.inc

--disable_query_log
set new=on;
--enable_query_log

--disable_warnings
DROP TABLE IF EXISTS test.t1;
DROP TABLE IF EXISTS test.t2;
DROP TABLE IF EXISTS test.t3;
DROP TABLE IF EXISTS test.t4;
DROP TABLE IF EXISTS test.t5;
DROP TABLE IF EXISTS test.t6;
--enable_warnings

############ Test 1 Simple DD backup and restore #############
-- echo **** Test 1 Simple DD backup and restore ****

CREATE LOGFILE GROUP log_group1
ADD UNDOFILE './log_group1/undofile.dat'
INITIAL_SIZE 16M
UNDO_BUFFER_SIZE = 1M
ENGINE=NDB;

CREATE TABLESPACE table_space1
ADD DATAFILE './table_space1/datafile.dat'
USE LOGFILE GROUP log_group1
INITIAL_SIZE 12M
ENGINE NDB;


CREATE TABLE test.t1
(pk1 MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 CHAR(50) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL) TABLESPACE table_space1 STORAGE DISK ENGINE=NDB;

let $j= 500;
--disable_query_log
while ($j)
{
  eval INSERT INTO test.t1 VALUES (NULL, "Sweden", $j, b'1');
  dec $j;
}
--enable_query_log
SELECT COUNT(*) FROM test.t1;
SELECT pk1, c2, c3,  hex(c4) FROM test.t1 ORDER BY pk1 LIMIT 5;

-- source include/ndb_backup.inc

DROP TABLE test.t1;

ALTER TABLESPACE table_space1
DROP DATAFILE './table_space1/datafile.dat'
ENGINE = NDB;

DROP TABLESPACE table_space1
ENGINE = NDB;

DROP LOGFILE GROUP log_group1
ENGINE =NDB;

-- source include/ndb_restore_master.inc

SELECT COUNT(*) FROM test.t1; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t1 ORDER BY pk1 LIMIT 5;

################# Mixed Cluster Test ############################
-- echo **** Test 2 Mixed Cluster Test backup and restore ****

CREATE TABLE test.t2
(pk1 MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 VARCHAR(200) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL)ENGINE=NDB;

let $j= 500;
--disable_query_log
while ($j)
{
  eval INSERT INTO test.t2 VALUES (NULL, "Sweden, Texas", $j, b'0');
  dec $j;
}
--enable_query_log

CREATE TABLE test.t3 (c1 int not null auto_increment, data LONGBLOB, PRIMARY KEY(c1))TABLESPACE table_space1 STORAGE DISK ENGINE=NDB;

CREATE TABLE test.t4 (c1 int not null auto_increment, data LONGBLOB, PRIMARY KEY(c1))ENGINE=NDB;

let $j= 50;
--disable_query_log
while ($j)
{
  INSERT INTO test.t3 VALUES (NULL, repeat('a',1*1024));
  INSERT INTO test.t3 VALUES (NULL, repeat('b',16*1024));
  INSERT INTO test.t4 VALUES (NULL, repeat('a',1*1024));
  INSERT INTO test.t4 VALUES (NULL, repeat('b',16*1024));
  dec $j;
}
--enable_query_log

SELECT COUNT(*) FROM test.t1;

SELECT pk1, c2, c3,  hex(c4) FROM test.t1 ORDER BY pk1 LIMIT 5; 

SELECT COUNT(*) FROM test.t2; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t2 ORDER BY pk1 LIMIT 5; 

SELECT COUNT(*) FROM test.t3; 

SELECT LENGTH(data) FROM test.t3 WHERE c1 = 1; 

SELECT LENGTH(data) FROM test.t3 WHERE c1 = 2; 

SELECT COUNT(*) FROM test.t4; 

SELECT LENGTH(data) FROM test.t4 WHERE c1 = 1; 

SELECT LENGTH(data) FROM test.t4 WHERE c1 = 2;

-- source include/ndb_backup.inc

DROP TABLE test.t1;
DROP TABLE test.t2;
DROP TABLE test.t3;
DROP TABLE test.t4;

ALTER TABLESPACE table_space1
DROP DATAFILE './table_space1/datafile.dat'
ENGINE = NDB;

DROP TABLESPACE table_space1
ENGINE = NDB;

DROP LOGFILE GROUP log_group1
ENGINE =NDB;

-- source include/ndb_restore_master.inc

SELECT COUNT(*) FROM test.t1;

SELECT pk1, c2, c3,  hex(c4) FROM test.t1 ORDER BY pk1 LIMIT 5; 

SELECT COUNT(*) FROM test.t2; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t2 ORDER BY pk1 LIMIT 5; 

SELECT COUNT(*) FROM test.t3; 

SELECT LENGTH(data) FROM test.t3 WHERE c1 = 1; 

SELECT LENGTH(data) FROM test.t3 WHERE c1 = 2; 

SELECT COUNT(*) FROM test.t4; 

SELECT LENGTH(data) FROM test.t4 WHERE c1 = 1; 

SELECT LENGTH(data) FROM test.t4 WHERE c1 = 2;

DROP TABLE test.t1;
DROP TABLE test.t2;
DROP TABLE test.t3;
DROP TABLE test.t4;
###################### Adding partition #################################
-- echo **** Test 3 Adding  partition Test backup and restore ****

CREATE TABLESPACE table_space2
ADD DATAFILE './table_space2/datafile.dat'
USE LOGFILE GROUP log_group1
INITIAL_SIZE 12M
ENGINE NDB;

CREATE TABLE test.t1 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(150) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space1 STORAGE DISK ENGINE=NDB PARTITION BY HASH(c3) PARTITIONS 4;

CREATE TABLE test.t4 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(180) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY HASH(c3) PARTITIONS 2;

CREATE TABLE test.t2 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 TEXT NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space2 STORAGE DISK ENGINE=NDB PARTITION BY KEY(c3) (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);

CREATE TABLE test.t5 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 TEXT NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY KEY(pk1) (PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);

CREATE TABLE test.t3 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(202) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))TABLESPACE table_space2 STORAGE DISK ENGINE=NDB PARTITION BY RANGE (c3) PARTITIONS 3 (PARTITION x1 VALUES LESS THAN (105), PARTITION x2 VALUES LESS THAN (333), PARTITION x3 VALUES LESS THAN (720));

CREATE TABLE test.t6 (pk1 MEDIUMINT NOT NULL AUTO_INCREMENT, c2 VARCHAR(220) NOT NULL, c3 INT NOT NULL, c4 BIT NOT NULL, PRIMARY KEY(pk1,c3))ENGINE=NDB PARTITION BY RANGE (pk1) PARTITIONS 2 (PARTITION x1 VALUES LESS THAN (333), PARTITION x2 VALUES LESS THAN (720));

SHOW CREATE TABLE test.t1;

SHOW CREATE TABLE test.t2;

SHOW CREATE TABLE test.t3;

SHOW CREATE TABLE test.t4;

SHOW CREATE TABLE test.t5;

SHOW CREATE TABLE test.t6;

SELECT * FROM information_schema.partitions WHERE table_name= 't1'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't2'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't3'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't4'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't5'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't6';


let $j= 500;
--disable_query_log
while ($j)
{
  eval INSERT INTO test.t1 VALUES (NULL, "Sweden, Texas", $j, b'0');
  eval INSERT INTO test.t4 VALUES (NULL, "Sweden, Texas", $j, b'0');
  dec $j;
  eval INSERT INTO test.t2 VALUES (NULL, "Sweden, Texas, ITALY, Kyle, JO, JBM,TU", $j, b'1');
  eval INSERT INTO test.t5 VALUES (NULL, "Sweden, Texas, ITALY, Kyle, JO, JBM,TU", $j, b'1');
  dec $j;
  eval INSERT INTO test.t3 VALUES (NULL, "TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU", $j, b'1');
  eval INSERT INTO test.t6 VALUES (NULL, "TEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXASTEXAS, ITALY, Kyle, JO, JBM,TU", $j, b'1'); } --enable_query_log

SELECT COUNT(*) FROM test.t1;

SELECT pk1, c2, c3,  hex(c4) FROM test.t1 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t2; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t2 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t3; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t3 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t4; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t4 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t5; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t5 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t6; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t6 ORDER BY c3 LIMIT 5;

-- source include/ndb_backup.inc

DROP TABLE test.t1;
DROP TABLE test.t2;
DROP TABLE test.t3;
DROP TABLE test.t4;
DROP TABLE test.t5;
DROP TABLE test.t6;

ALTER TABLESPACE table_space1
DROP DATAFILE './table_space1/datafile.dat'
ENGINE = NDB;

ALTER TABLESPACE table_space2
DROP DATAFILE './table_space2/datafile.dat'
ENGINE = NDB;

DROP TABLESPACE table_space1
ENGINE = NDB;

DROP TABLESPACE table_space2
ENGINE = NDB;

DROP LOGFILE GROUP log_group1
ENGINE =NDB;

-- source include/ndb_restore_master.inc


SHOW CREATE TABLE test.t1;

SHOW CREATE TABLE test.t2;

SHOW CREATE TABLE test.t3;

SHOW CREATE TABLE test.t4;

SHOW CREATE TABLE test.t5;

SHOW CREATE TABLE test.t6;

SELECT * FROM information_schema.partitions WHERE table_name= 't1'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't2'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't3'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't4'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't5'; 

SELECT * FROM information_schema.partitions WHERE table_name= 't6'; 

SELECT COUNT(*) FROM test.t1; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t1 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t2; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t2 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t3; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t3 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t4; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t4 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t5; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t5 ORDER BY c3 LIMIT 5; 

SELECT COUNT(*) FROM test.t6; 

SELECT pk1, c2, c3,  hex(c4) FROM test.t6 ORDER BY c3 LIMIT 5;

# Cleanup

DROP TABLE test.t1;
DROP TABLE test.t2;
DROP TABLE test.t3;
DROP TABLE test.t4;
DROP TABLE test.t5;
DROP TABLE test.t6;

ALTER TABLESPACE table_space1 DROP DATAFILE './table_space1/datafile.dat' ENGINE=NDB;

ALTER TABLESPACE table_space2 DROP DATAFILE './table_space2/datafile.dat' ENGINE=NDB;

DROP TABLESPACE table_space1 ENGINE = NDB;

DROP TABLESPACE table_space2 ENGINE = NDB;

DROP LOGFILE GROUP log_group1 ENGINE = NDB;

#End 5.1 test case


