DROP TABLE IF EXISTS t1,bit1;
DROP DATABASE IF EXISTS mysqltest;
CREATE DATABASE mysqltest;
USE mysqltest;
***************************************************************
* BASIC SQL STATEMENT TEST FOR NDB NATIVE DEFAULT VALUE SUPPORT
***************************************************************
CREATE TABLE t1( 
i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
j INT DEFAULT 6, 
f FLOAT NOT NULL DEFAULT 6.6, 
d DOUBLE DEFAULT 8.8,
d2 DOUBLE NOT NULL,  #d2 gets 'data-type-specific default', i.e. 0.
ch CHAR(19) DEFAULT "aaa",
vch VARCHAR(19) DEFAULT "bbb", 
b BINARY(19) DEFAULT "ccc",
vb VARBINARY(19) DEFAULT  "ddd", 
blob1 BLOB,
text1 TEXT,
timestamp_c TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)ENGINE=NDB;
INSERT INTO t1 VALUES(),();
INSERT INTO t1 VALUES(
10, 10, 10.0, 10.0, 10.0,
"nnnnn", "nnnnn", "nnnnn", "nnnnn", "nnnnn", "nnnnn", 
"2008-11-16 08:13:32");
INSERT INTO t1(i, ch) VALUES(11, "mmm");
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
10	10	10	10	10	nnnnn	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	CURRENT_TIMESTAMP
11	6	6.6	8.8	0	mmm	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
UPDATE t1 SET ch = "xxx" WHERE i = 10;
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
10	10	10	10	10	xxx	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	CURRENT_TIMESTAMP
11	6	6.6	8.8	0	mmm	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
UPDATE t1 SET blob1 = "yyy" WHERE j = 10;
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
10	10	10	10	10	xxx	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	797979	nnnnn	CURRENT_TIMESTAMP
11	6	6.6	8.8	0	mmm	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
REPLACE INTO t1(i, j, ch) VALUES(1, 1, "zzz");
REPLACE INTO t1(i, j, ch) VALUES(20, 20, "www");
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	1	6.6	8.8	0	zzz	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
10	10	10	10	10	xxx	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	797979	nnnnn	CURRENT_TIMESTAMP
11	6	6.6	8.8	0	mmm	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
20	20	6.6	8.8	0	www	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
DELETE FROM t1 WHERE i > 9;
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	1	6.6	8.8	0	zzz	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
CREATE TABLE bit1(
pk INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
b1 BIT(3) DEFAULT B'111',
b2 BIT(9) DEFAULT B'101',
b3 BIT(23) DEFAULT B'110',
b4 BIT(37) DEFAULT B'011',
b5 BIT(63) DEFAULT B'101011'
)ENGINE = NDB;
INSERT INTO bit1 VALUES();
INSERT INTO bit1(b1,b4) VALUES(B'101',B'111');
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
pk	BIN(b1)	BIN(b2)	BIN(b3)	BIN(b4)	BIN(b5)
1	111	101	110	11	101011
2	101	101	110	111	101011
UPDATE bit1 SET b5=B'11111' WHERE pk = 1;
REPLACE INTO bit1(pk, b3) VALUES(2, B'1');
REPLACE INTO bit1(pk, b3) VALUES(6, B'101');
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
pk	BIN(b1)	BIN(b2)	BIN(b3)	BIN(b4)	BIN(b5)
1	111	101	110	11	11111
2	111	101	1	11	101011
6	111	101	101	11	101011
DELETE FROM bit1 WHERE pk = 2;
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
pk	BIN(b1)	BIN(b2)	BIN(b3)	BIN(b4)	BIN(b5)
1	111	101	110	11	11111
6	111	101	101	11	101011
********************************************************
* Alter table to add column with default value
********************************************************
ALTER TABLE t1 ADD COLUMN ch2 CHAR(30) DEFAULT "alter table";
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	ch2
1	1	6.6	8.8	0	zzz	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
INSERT INTO t1 VALUES();
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	ch2
1	1	6.6	8.8	0	zzz	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
21	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
********************************************************
* Alter table with default value can fail safely
********************************************************
ALTER TABLE t1 ADD COLUMN ch2 CHAR(30) DEFAULT "alter table";
ERROR 42S21: Duplicate column name 'ch2'
ALTER TABLE t1 ADD COLUMN ch3 CHAR(3) DEFAULT "alter table";
ERROR 42000: Invalid default value for 'ch3'
INSERT INTO t1 VALUES();
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	ch2
1	1	6.6	8.8	0	zzz	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
21	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
22	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
********************************************************
* The tables with default values BACKUP and RESTORE test
********************************************************
DROP TABLE IF EXISTS t1, bit1;
********************************************************
* Begin to restore data from backup 
********************************************************
SHOW TABLES;
Tables_in_mysqltest
bit1
t1
-- t1 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 13
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
i Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
j Int NULL AT=FIXED ST=MEMORY DEFAULT 6
f Float NOT NULL AT=FIXED ST=MEMORY DEFAULT 6.600000
d Double NULL AT=FIXED ST=MEMORY DEFAULT 8.800000
d2 Double NOT NULL AT=FIXED ST=MEMORY
ch Char(19;latin1_swedish_ci) NULL AT=FIXED ST=MEMORY DEFAULT "aaa"
vch Varchar(19;latin1_swedish_ci) NULL AT=SHORT_VAR ST=MEMORY DEFAULT "bbb"
b Binary(19) NULL AT=FIXED ST=MEMORY DEFAULT 0x636363
vb Varbinary(19) NULL AT=SHORT_VAR ST=MEMORY DEFAULT 0x646464
blob1 Blob(256,2000,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_9
text1 Text(256,2000,0;latin1_swedish_ci) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_10
timestamp_c Timestamp NOT NULL AT=FIXED ST=MEMORY
ch2 Char(30;latin1_swedish_ci) NULL AT=FIXED ST=MEMORY DEFAULT "alter table"

-- Indexes -- 
PRIMARY KEY(i) - UniqueHashIndex
Index


NDBT_ProgramExit: 0 - OK

-- bit1 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 6
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
pk Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
b1 Bit(3) NULL AT=FIXED ST=MEMORY DEFAULT H'0x7
b2 Bit(9) NULL AT=FIXED ST=MEMORY DEFAULT H'0x5
b3 Bit(23) NULL AT=FIXED ST=MEMORY DEFAULT H'0x6
b4 Bit(37) NULL AT=FIXED ST=MEMORY DEFAULT H'0x3
b5 Bit(63) NULL AT=FIXED ST=MEMORY DEFAULT H'0x2B

-- Indexes -- 
PRIMARY KEY(pk) - UniqueHashIndex
PRIMARY(pk) - OrderedIndex


NDBT_ProgramExit: 0 - OK

SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
pk	BIN(b1)	BIN(b2)	BIN(b3)	BIN(b4)	BIN(b5)
1	111	101	110	11	11111
6	111	101	101	11	101011
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	ch2
1	1	6.6	8.8	0	zzz	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
21	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
22	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
INSERT INTO t1(i, ch) VALUES(99, "restore");
INSERT INTO bit1(pk, b5) VALUES(99, B'11111111');
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
pk	BIN(b1)	BIN(b2)	BIN(b3)	BIN(b4)	BIN(b5)
1	111	101	110	11	11111
6	111	101	101	11	101011
99	111	101	110	11	11111111
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	ch2
1	1	6.6	8.8	0	zzz	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
21	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
22	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
99	6	6.6	8.8	0	restore	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
DROP TABLE IF EXISTS t1, bit1;
SHOW TABLES;
Tables_in_mysqltest
bit1
t1
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 WHERE i >= (SELECT MAX(i) FROM t1) ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	ch2
MAX_VALUE	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP	alter table
DROP TABLE IF EXISTS t1, bit1;
DROP DATABASE mysqltest;
******************************************************************************
* Restore the backup from 6.3 or 6.4, which don't support native default value
******************************************************************************
-- t1 --
Version: Any
Fragment type: 5
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 12
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
i Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
j Int NULL AT=FIXED ST=MEMORY
f Float NOT NULL AT=FIXED ST=MEMORY
d Double NULL AT=FIXED ST=MEMORY
d2 Double NOT NULL AT=FIXED ST=MEMORY
ch Char(19;latin1_swedish_ci) NULL AT=FIXED ST=MEMORY
vch Varchar(19;latin1_swedish_ci) NULL AT=SHORT_VAR ST=MEMORY
b Binary(19) NULL AT=FIXED ST=MEMORY
vb Varbinary(19) NULL AT=SHORT_VAR ST=MEMORY
blob1 Blob(256,2000,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_9
text1 Text(256,2000,0;latin1_swedish_ci) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_10
timestamp_c Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(i) - UniqueHashIndex
Index


NDBT_ProgramExit: 0 - OK

-- bit1 --
Version: Any
Fragment type: 5
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 6
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
pk Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
b1 Bit(3) NULL AT=FIXED ST=MEMORY
b2 Bit(9) NULL AT=FIXED ST=MEMORY
b3 Bit(23) NULL AT=FIXED ST=MEMORY
b4 Bit(37) NULL AT=FIXED ST=MEMORY
b5 Bit(63) NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(pk) - UniqueHashIndex
PRIMARY(pk) - OrderedIndex


NDBT_ProgramExit: 0 - OK

USE test;
SHOW TABLES;
Tables_in_test
bit1
t1
SHOW CREATE TABLE bit1;
Table	Create Table
bit1	CREATE TABLE `bit1` (
  `pk` int(11) NOT NULL AUTO_INCREMENT,
  `b1` bit(3) DEFAULT b'111',
  `b2` bit(9) DEFAULT b'101',
  `b3` bit(23) DEFAULT b'110',
  `b4` bit(37) DEFAULT b'11',
  `b5` bit(63) DEFAULT b'101011',
  PRIMARY KEY (`pk`)
) ENGINE=ndbcluster AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
10	10	10	10	10	nnnnn	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	CURRENT_TIMESTAMP
11	6	6.6	8.8	0	mmm	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
pk	BIN(b1)	BIN(b2)	BIN(b3)	BIN(b4)	BIN(b5)
1	111	101	110	11	101011
2	101	101	110	111	101011
ALTER TABLE t1 CHANGE COLUMN j j INT DEFAULT 6,
CHANGE COLUMN f f FLOAT NOT NULL DEFAULT 6.6,
CHANGE COLUMN d d DOUBLE DEFAULT 8.8;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(11) NOT NULL AUTO_INCREMENT,
  `j` int(11) DEFAULT '6',
  `f` float NOT NULL DEFAULT '6.6',
  `d` double DEFAULT '8.8',
  `d2` double NOT NULL,
  `ch` char(19) DEFAULT 'aaa',
  `vch` varchar(19) DEFAULT 'bbb',
  `b` binary(19) DEFAULT 'ccc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `vb` varbinary(19) DEFAULT 'ddd',
  `blob1` blob,
  `text1` text,
  `timestamp_c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`i`)
) ENGINE=ndbcluster AUTO_INCREMENT=12 DEFAULT CHARSET=latin1
-- t1 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 12
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
i Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
j Int NULL AT=FIXED ST=MEMORY DEFAULT 6
f Float NOT NULL AT=FIXED ST=MEMORY DEFAULT 6.600000
d Double NULL AT=FIXED ST=MEMORY DEFAULT 8.800000
d2 Double NOT NULL AT=FIXED ST=MEMORY
ch Char(19;latin1_swedish_ci) NULL AT=FIXED ST=MEMORY DEFAULT "aaa"
vch Varchar(19;latin1_swedish_ci) NULL AT=SHORT_VAR ST=MEMORY DEFAULT "bbb"
b Binary(19) NULL AT=FIXED ST=MEMORY DEFAULT 0x636363
vb Varbinary(19) NULL AT=SHORT_VAR ST=MEMORY DEFAULT 0x646464
blob1 Blob(256,2000,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_9
text1 Text(256,2000,0;latin1_swedish_ci) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_10
timestamp_c Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(i) - UniqueHashIndex
Index


NDBT_ProgramExit: 0 - OK

INSERT INTO t1 VALUES();
UPDATE t1 SET ch = "RESTORE FROM 6.3" WHERE i = 12;
REPLACE INTO t1(i, j, ch) VALUES(20, 20, "RESTORE FROM 6.3");
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
10	10	10	10	10	nnnnn	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	CURRENT_TIMESTAMP
11	6	6.6	8.8	0	mmm	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
12	6	6.6	8.8	0	RESTORE FROM 6.3	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
20	20	6.6	8.8	0	RESTORE FROM 6.3	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
INSERT INTO bit1 VALUES();
UPDATE bit1 SET b5=b'1111111' WHERE pk = 1;
REPLACE INTO bit1(pk, b3) VALUES(6, B'110011');
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
pk	BIN(b1)	BIN(b2)	BIN(b3)	BIN(b4)	BIN(b5)
1	111	101	110	11	1111111
2	101	101	110	111	101011
3	111	101	110	11	101011
6	111	101	110011	11	101011
INSERT INTO t1(i, ch) VALUES(99, "native default support");
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
i	j	f	d	d2	ch	vch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c
1	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
2	6	6.6	8.8	0	aaa	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
10	10	10	10	10	nnnnn	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	CURRENT_TIMESTAMP
11	6	6.6	8.8	0	mmm	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
12	6	6.6	8.8	0	RESTORE FROM 6.3	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
20	20	6.6	8.8	0	RESTORE FROM 6.3	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
99	6	6.6	8.8	0	native default supp	bbb	63636300000000000000000000000000000000	646464	NULL	NULL	CURRENT_TIMESTAMP
DROP TABLE IF EXISTS t1, bit1;
*************************************************************
* Test adding a unique index to a column with a default value
*************************************************************
CREATE TABLE t2(
i INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
j INT DEFAULT 6,
f FLOAT NOT NULL DEFAULT 6.6,
d DOUBLE DEFAULT 8.8,
UNIQUE INDEX t2_unique_index(j) 
)ENGINE =NDB;
INSERT INTO t2 VALUES();
INSERT INTO t2 VALUES();
ERROR 23000: Duplicate entry '6' for key 't2_unique_index'
INSERT INTO t2 VALUES(10, 10, 10.0, 10.0);
SELECT * FROM t2 ORDER BY i;
i	j	f	d
1	6	6.6	8.8
10	10	10	10
*************************************************************
* Test offline alter of default values
*************************************************************
ALTER TABLE t2 MODIFY COLUMN j INT DEFAULT 666;
-- t2 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
i Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
j Int NULL AT=FIXED ST=MEMORY DEFAULT 666
f Float NOT NULL AT=FIXED ST=MEMORY DEFAULT 6.600000
d Double NULL AT=FIXED ST=MEMORY DEFAULT 8.800000

-- Indexes -- 
PRIMARY KEY(i) - UniqueHashIndex
Index
Index
Index


NDBT_ProgramExit: 0 - OK

INSERT INTO t2 VALUES();
SELECT * FROM t2 ORDER BY i;
i	j	f	d
1	6	6.6	8.8
10	10	10	10
11	666	6.6	8.8
*************************************************************
* Test that online alter of default values fails
*************************************************************
ALTER ONLINE TABLE t2 MODIFY COLUMN j INT DEFAULT 888;
ERROR 42000: This version of MySQL doesn't yet support 'ALTER ONLINE TABLE t2 MODIFY COLUMN j INT DEFAULT 888'
DROP TABLE IF EXISTS t2;
**************************************************************
* Test not null-after-defaults example that failed previously
**************************************************************
CREATE TABLE t1 (a int primary key, b int default 12, c char not null) engine=ndb;
-- t1 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Int NULL AT=FIXED ST=MEMORY DEFAULT 12
c Char(1;latin1_swedish_ci) NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

DROP TABLE t1;
**************************************************************
* Test mix of null, not-null, default etc..
**************************************************************
CREATE TABLE t1 (a int primary key, 
b int default 12, 
c char not null, 
d varchar(6) default 'Daniel',
e char(3) default 'Stu',
f enum('NBFry','Kebab') default 'NBFry',
g set('Chips','Pie','Fish') default 'Fish,Chips',
h enum('Pig','Lion') not null,
i char(2) default '66') engine=ndb;
-- t1 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 9
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Int NULL AT=FIXED ST=MEMORY DEFAULT 12
c Char(1;latin1_swedish_ci) NOT NULL AT=FIXED ST=MEMORY
d Varchar(6;latin1_swedish_ci) NULL AT=SHORT_VAR ST=MEMORY DEFAULT "Daniel"
e Char(3;latin1_swedish_ci) NULL AT=FIXED ST=MEMORY DEFAULT "Stu"
f Char(1;binary) NULL AT=FIXED ST=MEMORY DEFAULT "0x01"
g Char(1;binary) NULL AT=FIXED ST=MEMORY DEFAULT "0x05"
h Char(1;binary) NOT NULL AT=FIXED ST=MEMORY
i Char(2;latin1_swedish_ci) NULL AT=FIXED ST=MEMORY DEFAULT "66"

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

DROP TABLE t1;
******************************************
* Test binary default with null char value
******************************************
CREATE TABLE t1 (a int primary key,
b binary(10) default 0x4142430045464748494a,
c varbinary(100) default 0x4142430045464748494a) engine=ndb;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` int(11) NOT NULL,
  `b` binary(10) DEFAULT 'ABC\0EFGHIJ',
  `c` varbinary(100) DEFAULT 'ABC\0EFGHIJ',
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- t1 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Binary(10) NULL AT=FIXED ST=MEMORY DEFAULT 0x4142430045464748494A
c Varbinary(100) NULL AT=SHORT_VAR ST=MEMORY DEFAULT 0x4142430045464748494A

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

DROP TABLE t1;
***********************************
* Test timestamp column weirdness
http://dev.mysql.com/doc/refman/5.1/en/timestamp.html
***********************************
Timestamp updated on insert + update
CREATE TABLE variant (a int primary key,
b timestamp) engine =ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	CURRENT_TIMESTAMP
DROP TABLE variant;
Full syntax for update on insert + update
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) engine =ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	CURRENT_TIMESTAMP
DROP TABLE variant;
Default on insert only
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT CURRENT_TIMESTAMP) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	CURRENT_TIMESTAMP
DROP TABLE variant;
Set on update only
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,
c int) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  `c` int(11) DEFAULT NULL,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY
c Int NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a,c) VALUES (1,1);
SELECT * from variant;
a	b	c
1	0000-00-00 00:00:00	1
UPDATE variant SET c=2;
SELECT * from variant;
a	b	c
1	CURRENT_TIMESTAMP	2
DROP TABLE variant;
No auto-set default 0
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 0) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY DEFAULT 0

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	0000-00-00 00:00:00
DROP TABLE variant;
No auto-set default non-zero
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 19770623000001) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT '1977-06-23 00:00:01',
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY DEFAULT 235861201

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	1977-06-23 00:00:01
DROP TABLE variant;
Non-first timestamp default insert value
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 19770623000001,
c timestamp DEFAULT CURRENT_TIMESTAMP) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT '1977-06-23 00:00:01',
  `c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY DEFAULT 235861201
c Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b	c
1	1977-06-23 00:00:01	CURRENT_TIMESTAMP
DROP TABLE variant;
Non-first timestamp default update value
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 19770623000001,
c timestamp ON UPDATE CURRENT_TIMESTAMP) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT '1977-06-23 00:00:01',
  `c` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY DEFAULT 235861201
c Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b	c
1	1977-06-23 00:00:01	0000-00-00 00:00:00
UPDATE variant SET b=20100603000001;
SELECT * from variant;
a	b	c
1	2010-06-03 00:00:01	CURRENT_TIMESTAMP
DROP TABLE variant;
Non-first timestamp set on insert+update
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 19770623000001,
c timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NOT NULL DEFAULT '1977-06-23 00:00:01',
  `c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NOT NULL AT=FIXED ST=MEMORY DEFAULT 235861201
c Timestamp NOT NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b	c
1	1977-06-23 00:00:01	CURRENT_TIMESTAMP
DROP TABLE variant;
Nullable timestamp no default
CREATE TABLE variant (a int primary key,
b timestamp NULL) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	NULL
DROP TABLE variant;
Nullable timestamp default zero
CREATE TABLE variant (a int primary key,
b timestamp NULL DEFAULT 0) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NULL AT=FIXED ST=MEMORY DEFAULT 0

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	0000-00-00 00:00:00
DROP TABLE variant;
Nullable timestamp default non-zero
CREATE TABLE variant (a int primary key,
b timestamp NULL DEFAULT 19770623000001) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NULL DEFAULT '1977-06-23 00:00:01',
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NULL AT=FIXED ST=MEMORY DEFAULT 235861201

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	1977-06-23 00:00:01
DROP TABLE variant;
Nullable timestamp auto insert val
CREATE TABLE variant (a int primary key,
b timestamp NULL DEFAULT CURRENT_TIMESTAMP) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	CURRENT_TIMESTAMP
DROP TABLE variant;
Nullable timestamp auto update val
CREATE TABLE variant (a int primary key,
b timestamp NULL ON UPDATE CURRENT_TIMESTAMP,
c int) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `c` int(11) DEFAULT NULL,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NULL AT=FIXED ST=MEMORY
c Int NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a,c) VALUES (1,1);
SELECT * from variant;
a	b	c
1	NULL	1
UPDATE variant SET c=2;
SELECT * from variant;
a	b	c
1	CURRENT_TIMESTAMP	2
DROP TABLE variant;
Nullable timestamp auto insert+update val
CREATE TABLE variant (a int primary key,
b timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) engine = ndb;
SHOW CREATE TABLE variant;
Table	Create Table
variant	CREATE TABLE `variant` (
  `a` int(11) NOT NULL,
  `b` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`a`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
-- variant --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 2
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
a Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
b Timestamp NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(a) - UniqueHashIndex
PRIMARY(a) - OrderedIndex


NDBT_ProgramExit: 0 - OK

INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
a	b
1	CURRENT_TIMESTAMP
DROP TABLE variant;
*************************************************************
* Restore data-only from old backup without native defaults *
*************************************************************
Create schema manually with differences for ndb_restore to 
deal with.  See the backup (or above) for the original schema.
- J changed from Int -> Bigint, and default changed from 6 to 6006
requires --promote-attribute AND default ignoring
- ch default changed from 'aaa' to 'aaaAAA', requires default ignoring
- vch missing in DB schema, requires --exclude-missing-columns
- timestamp_c default changed from CURRENT_TIMESTAMP to a const default (native)
requires default ignoring
- newOne is a new column with a default value, requires --exclude-missing-columns
- newTwo is a new nullable column with no default value, requires --exclude-missing-columns
CREATE TABLE t1 (  
`i` int(11) NOT NULL AUTO_INCREMENT,
`j` bigint(20) NOT NULL DEFAULT '6006', 
`f` float NOT NULL DEFAULT '6.6',
`d` double DEFAULT '8.8',
`d2` double NOT NULL,
`ch` char(19) DEFAULT 'aaaAAA',
`b` binary(19) DEFAULT 'ccc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`vb` varbinary(19) DEFAULT 'ddd',
`blob1` blob,
`text1` text,
`timestamp_c` timestamp NOT NULL DEFAULT '2010-06-07 13:06:22',
`newOne` varchar(255) DEFAULT 'Comment field default',
`newTwo` bigint(20) DEFAULT NULL,
PRIMARY KEY (`i`)
) ENGINE=ndbcluster AUTO_INCREMENT=18446744073709551615 DEFAULT CHARSET=latin1;
CREATE TABLE bit1 (
`pk` int(11) NOT NULL AUTO_INCREMENT,
`b1` bit(3) DEFAULT b'111',
`b2` bit(9) DEFAULT b'101',
`b3` bit(23) DEFAULT b'110',
`b4` bit(37) DEFAULT b'11',
`b5` bit(63) DEFAULT b'101011',
PRIMARY KEY (`pk`)
) ENGINE=ndbcluster AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(11) NOT NULL AUTO_INCREMENT,
  `j` bigint(20) NOT NULL DEFAULT '6006',
  `f` float NOT NULL DEFAULT '6.6',
  `d` double DEFAULT '8.8',
  `d2` double NOT NULL,
  `ch` char(19) DEFAULT 'aaaAAA',
  `b` binary(19) DEFAULT 'ccc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `vb` varbinary(19) DEFAULT 'ddd',
  `blob1` blob,
  `text1` text,
  `timestamp_c` timestamp NOT NULL DEFAULT '2010-06-07 13:06:22',
  `newOne` varchar(255) DEFAULT 'Comment field default',
  `newTwo` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`i`)
) ENGINE=ndbcluster AUTO_INCREMENT=18446744073709551615 DEFAULT CHARSET=latin1
-- t1 --
Version: Any
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 13
Number of primary keys: 1
Length of frm data: XXX
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
-- Attributes -- 
i Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
j Bigint NOT NULL AT=FIXED ST=MEMORY DEFAULT 6006
f Float NOT NULL AT=FIXED ST=MEMORY DEFAULT 6.600000
d Double NULL AT=FIXED ST=MEMORY DEFAULT 8.800000
d2 Double NOT NULL AT=FIXED ST=MEMORY
ch Char(19;latin1_swedish_ci) NULL AT=FIXED ST=MEMORY DEFAULT "aaaAAA"
b Binary(19) NULL AT=FIXED ST=MEMORY DEFAULT 0x636363
vb Varbinary(19) NULL AT=SHORT_VAR ST=MEMORY DEFAULT 0x646464
blob1 Blob(256,2000,0) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_8
text1 Text(256,2000,0;latin1_swedish_ci) NULL AT=MEDIUM_VAR ST=MEMORY BV=2 BT=NDB$BLOB_XX_9
timestamp_c Timestamp NOT NULL AT=FIXED ST=MEMORY DEFAULT 1275905182
newOne Varchar(255;latin1_swedish_ci) NULL AT=SHORT_VAR ST=MEMORY DEFAULT "Comment field default"
newTwo Bigint NULL AT=FIXED ST=MEMORY

-- Indexes -- 
PRIMARY KEY(i) - UniqueHashIndex
Index


NDBT_ProgramExit: 0 - OK

SELECT i, j, f, d, d2, ch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, newOne, newTwo from t1 order by i;
i	j	f	d	d2	ch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	newOne	newTwo
1	6	6.6	8.8	0	aaa	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:02	Comment field default	NULL
2	6	6.6	8.8	0	aaa	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:02	Comment field default	NULL
10	10	10	10	10	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	2008-11-16 08:13:32	Comment field default	NULL
11	6	6.6	8.8	0	mmm	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:20	Comment field default	NULL
drop table bit1;
Now backup the current data and restore data-only to a different schema
drop table t1;
CREATE TABLE t1 (  
`i` int(11) NOT NULL AUTO_INCREMENT,
`j` bigint NOT NULL DEFAULT '6', 
`f` float NOT NULL DEFAULT '6.6',
`d` double DEFAULT '8.8',
`d2` double NOT NULL,
`ch` char(19) DEFAULT 'aaa',
`b` binary(19) DEFAULT 'ccc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`vb` varbinary(19) DEFAULT 'ddd',
`blob1` blob,
`text1` text,
`timestamp_c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`newOne` varchar(256) DEFAULT 'Comment field default',
PRIMARY KEY (`i`)
) ENGINE=ndbcluster AUTO_INCREMENT=18446744073709551615 DEFAULT CHARSET=latin1;
SELECT i, j, f, d, d2, ch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, newOne from t1 order by i;
i	j	f	d	d2	ch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	newOne
1	6	6.6	8.8	0	aaa	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:02	Comment field default
2	6	6.6	8.8	0	aaa	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:02	Comment field default
10	10	10	10	10	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	2008-11-16 08:13:32	Comment field default
11	6	6.6	8.8	0	mmm	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:20	Comment field default
Now backup the current data then restore data-only to a schema with different defaults and no special ndb_restore options
drop table t1;
CREATE TABLE t1 (  
`i` int(11) NOT NULL AUTO_INCREMENT,
`j` bigint NOT NULL DEFAULT '20', 
`f` float NOT NULL DEFAULT '6.66',
`d` double DEFAULT '8.88',
`d2` double NOT NULL DEFAULT '9.99',
`ch` char(19) DEFAULT 'aaaZZZ',
`b` binary(19) DEFAULT 'ccccc\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`vb` varbinary(19) DEFAULT 'dddDDDddd',
`blob1` blob,
`text1` text,
`timestamp_c` timestamp NOT NULL DEFAULT 20100608133131,
`newOne` varchar(256),
PRIMARY KEY (`i`)
) ENGINE=ndbcluster AUTO_INCREMENT=18446744073709551615 DEFAULT CHARSET=latin1;
SELECT i, j, f, d, d2, ch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, newOne from t1 order by i;
i	j	f	d	d2	ch	HEX(b)	HEX(vb)	HEX(blob1)	text1	timestamp_c	newOne
1	6	6.6	8.8	0	aaa	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:02	Comment field default
2	6	6.6	8.8	0	aaa	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:02	Comment field default
10	10	10	10	10	nnnnn	6E6E6E6E6E0000000000000000000000000000	6E6E6E6E6E	6E6E6E6E6E	nnnnn	2008-11-16 08:13:32	Comment field default
11	6	6.6	8.8	0	mmm	63636300000000000000000000000000000000	646464	NULL	NULL	2008-12-18 17:41:20	Comment field default
drop table t1;
Bug#55121 error 839 'Illegal null attribute' from NDB for fields with default value
Ensure that Ndb handler doesn't expect native defaults for Blobs.
set @save_sql_mode = @@session.sql_mode;
set sql_mode=STRICT_TRANS_TABLES;
CREATE TABLE t1 (
fid smallint(6) unsigned NOT NULL DEFAULT '0',
f01 text NOT NULL,
f02 varchar(255) NOT NULL DEFAULT '',
f03 text NOT NULL DEFAULT '',
PRIMARY KEY (fid)
) engine=ndb;
ERROR 42000: BLOB/TEXT column 'f03' can't have a default value
set sql_mode=@save_sql_mode;
CREATE TABLE t1 (
fid smallint(6) unsigned NOT NULL DEFAULT '0',
f01 text NOT NULL,
f02 varchar(255) NOT NULL DEFAULT '',
f03 text NOT NULL DEFAULT '',
PRIMARY KEY (fid)
) engine=ndb;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `fid` smallint(6) unsigned NOT NULL DEFAULT '0',
  `f01` text NOT NULL,
  `f02` varchar(255) NOT NULL DEFAULT '',
  `f03` text NOT NULL,
  PRIMARY KEY (`fid`)
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
insert into t1(fid) value(100);
Warnings:
Warning	1364	Field 'f01' doesn't have a default value
select fid, isnull(f01), isnull(f02), isnull(f03) from t1;
fid	isnull(f01)	isnull(f02)	isnull(f03)
100	0	0	0
drop table t1;
