polardbxengine/mysql-test/suite/ndb/t/ndb_native_default_support....

728 lines
27 KiB
Plaintext

#############################################################
# Author: Guangbao Ni
# Date: 2008-12
# Purpose: ndb native default support test
##############################################################
-- source include/have_multi_ndb.inc
-- source suite/ndb/include/backup_restore_setup.inc
# Turn off ndb_read_backup to avoid result diffs from ndb_desc
--source suite/ndb/include/turn_off_ndb_read_backup.inc
# Turn off STRICT mode since test intentionally generate warnings
# while inserting rows without default values.
# NOTE! one test at the end turns STRICT back on for a while
--source suite/ndb/include/turn_off_strict_sql_mode.inc
# Also turn off NO_ZERO_DATE to allow table with
# TIMSTAMP NO NULL to be created
set sql_mode=(select replace(@@sql_mode,'NO_ZERO_DATE',''));
CREATE DATABASE mysqltest;
USE mysqltest;
###############################################################
# BASIC SQL STATEMENT TEST FOR NDB NATIVE DEFAULT VALUE SUPPORT
###############################################################
# Create table with default values for some types.
# Create table for bit type.
# Test cases include:
# 1. Create table with default values
# 2. Insert statement:
# --Insert default values into, the default values can be inserted into table correctly
# --Insert record supplied by client, it can inserted correctly
# --Insert record (including default value and value supplied by client)
# 3. Update statement:
# --Update with primary key condition
# --Update with non-primary key condtion
# 4. Replace statement:
# --Replace with default values when the record isn't existed in table
# --Replace with part default values and part value supplied by client when the record isn't existed in table.
# --Replace with part default values and part value suppliced by client when the record already existed in table.
# 5. Delete statement:
--echo ***************************************************************
--echo * BASIC SQL STATEMENT TEST FOR NDB NATIVE DEFAULT VALUE SUPPORT
--echo ***************************************************************
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 PARTITION BY KEY() PARTITIONS 8;
--disable_warnings
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");
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
UPDATE t1 SET ch = "xxx" WHERE i = 10;
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
UPDATE t1 SET blob1 = "yyy" WHERE j = 10;
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
REPLACE INTO t1(i, j, ch) VALUES(1, 1, "zzz");
REPLACE INTO t1(i, j, ch) VALUES(20, 20, "www");
--enable_warnings
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
DELETE FROM t1 WHERE i > 9;
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
#Test BIT TYPE
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 PARTITION BY KEY() PARTITIONS 8;
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;
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;
DELETE FROM bit1 WHERE pk = 2;
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
#############################################################
# ALTER TABLE WITH DEFAULT VALUES TEST
#############################################################
--echo ********************************************************
--echo * Alter table to add column with default value
--echo ********************************************************
ALTER TABLE t1 ADD COLUMN ch2 CHAR(30) DEFAULT "alter table";
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
--disable_warnings
INSERT INTO t1 VALUES();
--enable_warnings
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
--echo ********************************************************
--echo * Alter table with default value can fail safely
--echo ********************************************************
--disable_warnings
--error ER_DUP_FIELDNAME
ALTER TABLE t1 ADD COLUMN ch2 CHAR(30) DEFAULT "alter table";
--error ER_INVALID_DEFAULT
ALTER TABLE t1 ADD COLUMN ch3 CHAR(3) DEFAULT "alter table";
INSERT INTO t1 VALUES();
--enable_warnings
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
##############################################################
# BACKUP AND RESTORE TEST FOR TABLE WITH DEFAULT VALUES
##############################################################
#the above two tables are backuped, they can restore correctly.
#The default values can be inserted correctly after restored.
--echo ********************************************************
--echo * The tables with default values BACKUP and RESTORE test
--echo ********************************************************
--source include/ndb_backup.inc
DROP TABLE t1, bit1;
# Turn off metadata check so it doesn't intefere with table discovery
--connection server2
SET @old_ndb_metadata_check_server2 = @@global.ndb_metadata_check;
SET GLOBAL ndb_metadata_check = false;
--connection server1
SET @old_ndb_metadata_check_server1 = @@global.ndb_metadata_check;
SET GLOBAL ndb_metadata_check = false;
--echo ********************************************************
--echo * Begin to restore data from backup
--echo ********************************************************
--exec $NDB_RESTORE -b $the_backup_id -n 1 -A -m -r --print --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
--exec $NDB_RESTORE -b $the_backup_id -n 2 -A -r --print --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
--let $ndb_desc_opts= -d mysqltest t1
--source suite/ndb/include/ndb_desc_print.inc
--let $ndb_desc_opts= -d mysqltest bit1
--source suite/ndb/include/ndb_desc_print.inc
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
--disable_warnings
INSERT INTO t1(i, ch) VALUES(99, "restore");
--enable_warnings
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;
--replace_column 12 CURRENT_TIMESTAMP
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, ch2 FROM t1 ORDER BY i;
DROP TABLE t1, bit1;
--exec $NDB_RESTORE -b $the_backup_id -n 1 -A -m -r --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
--exec $NDB_RESTORE -b $the_backup_id -n 2 -A -r --print_meta $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
--replace_column 1 MAX_VALUE 12 CURRENT_TIMESTAMP
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;
DROP TABLE t1, bit1;
DROP DATABASE mysqltest;
###############################################################################
# RESTORE THE BACKUP FROM 6.3 OR 6.4, WHICH DON'T SUPPORT NATIVE DEFAULT VALUE
# SO DEFAULT VALUES AREN'T STORED IN NDBD KERNEL
###############################################################################
--echo ******************************************************************************
--echo * Restore the backup from 6.3 or 6.4, which don't support native default value
--echo ******************************************************************************
--exec $NDB_RESTORE -b 1 -n 1 -m -r $NDB_SAVED_BACKUPS/before_native_default >> $NDB_TOOLS_OUTPUT
--exec $NDB_RESTORE -b 1 -n 2 -r $NDB_SAVED_BACKUPS/before_native_default >> $NDB_TOOLS_OUTPUT
####
# Bug# 53539 Ndb : MySQLD default values in frm embedded in backup not endian-converted
# Bug# 53818 Default values in .frm file not byte-order-independent
# Due to this, on big-endian platforms the backup file restored above
# has corrupt values for the endian-sensitive defaults (int, float, double)
# Until this is fixed we cannot robustly examine the MySQL schema.
# Workaround is to offline-alter the defaults to what they should be.
#
# Show that restored tables have no native defaults
--let $ndb_desc_opts= -d test t1
--source suite/ndb/include/ndb_desc_print.inc
--let $ndb_desc_opts= -d test bit1
--source suite/ndb/include/ndb_desc_print.inc
USE test;
# SHOW CREATE TABLE t1; # Disabled til bug#53539 fixed as it show junk on big-endian
--disable_warnings
SHOW CREATE TABLE bit1;
--replace_column 12 CURRENT_TIMESTAMP
--enable_warnings
# The `t1` table is not expected to be usable. It contains old temporal
# types which have been removed in 8.0. The upgrade of the table
# metadata is not supported
--disable_query_log
call mtr.add_suppression("NDB: Table upgrade required");
--enable_query_log
--error ER_NO_SUCH_TABLE
SELECT i, j, f, d, d2, ch, vch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c FROM t1 ORDER BY i;
SHOW WARNINGS;
SELECT pk,BIN(b1),BIN(b2),BIN(b3),BIN(b4),BIN(b5) FROM bit1 ORDER BY pk;
# Show that table with MySQL, but no native defaults is still handled
# correctly.
# (This works as bit defaults have no endian problems)
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;
--exec $NDB_DROP_TABLE --no-defaults -d test t1 >> $NDB_TOOLS_OUTPUT
DROP TABLE bit1;
--echo *************************************************************
--echo * Test adding a unique index to a column with a default value
--echo *************************************************************
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 PARTITION BY KEY() PARTITIONS 8;
INSERT INTO t2 VALUES();
--error ER_DUP_ENTRY
INSERT INTO t2 VALUES();
INSERT INTO t2 VALUES(10, 10, 10.0, 10.0);
SELECT * FROM t2 ORDER BY i;
--echo *************************************************************
--echo * Test offline alter of default values
--echo *************************************************************
ALTER TABLE t2 MODIFY COLUMN j INT DEFAULT 666;
--let $ndb_desc_opts= -d test t2
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO t2 VALUES();
SELECT * FROM t2 ORDER BY i;
--echo *************************************************************
--echo * Test that online alter of default values fails
--echo *************************************************************
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
ALTER TABLE t2 algorithm=inplace, MODIFY COLUMN j INT DEFAULT 888;
DROP TABLE t2;
--echo **************************************************************
--echo * Test not null-after-defaults example that failed previously
--echo **************************************************************
CREATE TABLE t1 (
a int primary key,
b int default 12,
c char not null
)ENGINE=NDB PARTITION BY KEY() PARTITIONS 8;
--let $ndb_desc_opts= -d test t1
--source suite/ndb/include/ndb_desc_print.inc
DROP TABLE t1;
--echo **************************************************************
--echo * Test mix of null, not-null, default etc..
--echo **************************************************************
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
partition by key() partitions 8;
--let $ndb_desc_opts= -d test t1
--source suite/ndb/include/ndb_desc_print.inc
DROP TABLE t1;
--echo ******************************************
--echo * Test binary default with null char value
--echo ******************************************
CREATE TABLE t1 (a int primary key,
b binary(10) default 0x4142430045464748494a,
c varbinary(100) default 0x4142430045464748494a)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE t1;
--enable_warnings
--let $ndb_desc_opts= -d test t1
--source suite/ndb/include/ndb_desc_print.inc
DROP TABLE t1;
--echo ***********************************
--echo * Test timestamp column weirdness
--echo http://dev.mysql.com/doc/refman/5.1/en/timestamp.html
--echo ***********************************
--echo Timestamp updated on insert + update
CREATE TABLE variant (a int primary key,
b timestamp)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
--replace_column 2 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo 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
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
--replace_column 2 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo Default on insert only
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT CURRENT_TIMESTAMP)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
--replace_column 2 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo Set on update only
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,
c int)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a,c) VALUES (1,1);
SELECT * from variant;
UPDATE variant SET c=2;
--replace_column 2 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo No auto-set default 0
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 0)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
DROP TABLE variant;
--echo No auto-set default non-zero
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 19770623000001)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
DROP TABLE variant;
--echo Non-first timestamp default insert value
CREATE TABLE variant (a int primary key,
b timestamp DEFAULT 19770623000001,
c timestamp DEFAULT CURRENT_TIMESTAMP)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
--replace_column 3 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo 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
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
UPDATE variant SET b=20100603000001;
--replace_column 3 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo 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
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
--replace_column 3 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo Nullable timestamp no default
CREATE TABLE variant (a int primary key,
b timestamp NULL)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
DROP TABLE variant;
--echo Nullable timestamp default zero
CREATE TABLE variant (a int primary key,
b timestamp NULL DEFAULT 0)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
DROP TABLE variant;
--echo Nullable timestamp default non-zero
CREATE TABLE variant (a int primary key,
b timestamp NULL DEFAULT 19770623000001)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
SELECT * from variant;
DROP TABLE variant;
--echo Nullable timestamp auto insert val
CREATE TABLE variant (a int primary key,
b timestamp NULL DEFAULT CURRENT_TIMESTAMP)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
--replace_column 2 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo Nullable timestamp auto update val
CREATE TABLE variant (a int primary key,
b timestamp NULL ON UPDATE CURRENT_TIMESTAMP,
c int)
engine = ndb
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a,c) VALUES (1,1);
SELECT * from variant;
UPDATE variant SET c=2;
--replace_column 2 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo 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
partition by key() partitions 8;
--disable_warnings
SHOW CREATE TABLE variant;
--enable_warnings
--let $ndb_desc_opts= -d test variant
--source suite/ndb/include/ndb_desc_print.inc
INSERT INTO variant (a) VALUES (1);
--replace_column 2 CURRENT_TIMESTAMP
SELECT * from variant;
DROP TABLE variant;
--echo *************************************************************
--echo * Restore data-only from old backup without native defaults *
--echo *************************************************************
--echo Create schema manually with differences for ndb_restore to
--echo deal with. See the backup (or above) for the original schema.
--echo - J changed from Int -> Bigint, and default changed from 6 to 6006
--echo requires --promote-attributes AND default ignoring
--echo - ch default changed from 'aaa' to 'aaaAAA', requires default ignoring
--echo - vch missing in DB schema, requires --exclude-missing-columns
--echo - timestamp_c default changed from CURRENT_TIMESTAMP to a const default (native)
--echo requires default ignoring
--echo - newOne is a new column with a default value, requires --exclude-missing-columns
--echo - 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
PARTITION BY KEY() PARTITIONS 8;
# Bit1 currently unchanged
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
PARTITION BY KEY() PARTITIONS 8;
--disable_warnings
SHOW CREATE TABLE t1;
--enable_warnings
--let $ndb_desc_opts= -d test t1
--source suite/ndb/include/ndb_desc_print.inc
--exec $NDB_RESTORE -b 1 -n 1 -r --promote-attributes --exclude-missing-columns $NDB_SAVED_BACKUPS/before_native_default >> $NDB_TOOLS_OUTPUT
--exec $NDB_RESTORE -b 1 -n 2 -r --promote-attributes --exclude-missing-columns $NDB_SAVED_BACKUPS/before_native_default >> $NDB_TOOLS_OUTPUT
SELECT i, j, f, d, d2, ch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, newOne, newTwo from t1 order by i;
drop table bit1;
--echo Now backup the current data and restore data-only to a different schema
--source include/ndb_backup.inc
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;
--exec $NDB_RESTORE -b $the_backup_id -n 1 -r --promote-attributes --exclude-missing-columns $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
--exec $NDB_RESTORE -b $the_backup_id -n 2 -r --promote-attributes --exclude-missing-columns $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
SELECT i, j, f, d, d2, ch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, newOne from t1 order by i;
--echo Now backup the current data then restore data-only to a schema with different defaults and no special ndb_restore options
--source include/ndb_backup.inc
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;
--exec $NDB_RESTORE -b $the_backup_id -n 1 -r $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
--exec $NDB_RESTORE -b $the_backup_id -n 2 -r $NDB_BACKUPS-$the_backup_id >> $NDB_TOOLS_OUTPUT
SELECT i, j, f, d, d2, ch, HEX(b), HEX(vb), HEX(blob1), text1, timestamp_c, newOne from t1 order by i;
drop table t1;
--echo Bug#55121 error 839 'Illegal null attribute' from NDB for fields with default value
--echo Ensure that Ndb handler doesn't expect native defaults for Blobs.
set @save_sql_mode = @@session.sql_mode;
set sql_mode=STRICT_TRANS_TABLES;
--error ER_BLOB_CANT_HAVE_DEFAULT
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;
set sql_mode=@save_sql_mode;
--disable_warnings
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;
--enable_warnings
show create table t1;
insert into t1(fid) value(100);
select fid, isnull(f01), isnull(f02), isnull(f03) from t1;
drop table t1;
--source suite/ndb/include/restore_sql_mode_after_turn_off_strict.inc
--source suite/ndb/include/restore_ndb_read_backup.inc
--source suite/ndb/include/backup_restore_cleanup.inc
--remove_file $NDB_TOOLS_OUTPUT
# Reset metadata check value
--connection server2
SET GLOBAL ndb_metadata_check = @old_ndb_metadata_check_server2;
--connection server1
SET GLOBAL ndb_metadata_check = @old_ndb_metadata_check_server1;