1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
--source include/have_ndb.inc
# Test covers the different NDB specific partitioning schemes
# (specified as a part of NDB_TABLE option) and checks if
# the partition information from I_S is as expected
#
# Note: The actual partitioning of data is not checked in
# this test. The focus is more on creation of the partitions
# and checking that I_S (DD) and NDB Dictionary
# match in terms of their parition metadata.
# FOR_RP_BY_LDM
CREATE TABLE t1_rp_by_ldm
(a bigint, b bigint, c bigint, d bigint,
PRIMARY KEY (a,b,c,d))
ENGINE = NDB
COMMENT = "NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_LDM";
--echo
--echo Expected number of partitions with "FOR_RP_BY_LDM" = 8
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_rp_by_ldm'
ORDER BY PARTITION_ORDINAL_POSITION;
DROP TABLE t1_rp_by_ldm;
# FOR_RP_BY_NODE
CREATE TABLE t1_rp_by_node
(a bigint, b bigint, c bigint, d bigint,
PRIMARY KEY (a,b,c,d))
ENGINE = NDB
COMMENT = "NDB_TABLE=PARTITION_BALANCE=FOR_RP_BY_NODE";
--echo
--echo Expected number of partitions with "FOR_RP_BY_NODE"= 2
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_rp_by_node'
ORDER BY PARTITION_ORDINAL_POSITION;
DROP TABLE t1_rp_by_node;
# FOR_RA_BY_NODE
CREATE TABLE t1_ra_by_node
(a bigint, b bigint, c bigint, d bigint,
PRIMARY KEY (a,b,c,d))
ENGINE = NDB
COMMENT = "NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_NODE";
--echo
--echo Expected number of partitions with "FOR_RA_BY_NODE"= 1
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_ra_by_node'
ORDER BY PARTITION_ORDINAL_POSITION;
DROP TABLE t1_ra_by_node;
# FOR_RA_BY_LDM_X_3
CREATE TABLE t1_ra_by_ldm
(a bigint, b bigint, c bigint, d bigint,
PRIMARY KEY (a,b,c,d))
ENGINE = NDB
COMMENT = "NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_3";
--echo
--echo Expected number of partitions with "FOR_RA_BY_LDM_X_3" = 12
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_ra_by_ldm'
ORDER BY PARTITION_ORDINAL_POSITION;
# Test ALTER TABLE using the RA_BY_LDM variants
# FOR_RA_BY_LDM_X_2
ALTER TABLE t1_ra_by_ldm
COMMENT = "NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_2";
--echo
--echo Expected number of partitions with "FOR_RA_BY_LDM_X_2" = 8
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_ra_by_ldm'
ORDER BY PARTITION_ORDINAL_POSITION;
# FOR_RA_BY_LDM
ALTER TABLE t1_ra_by_ldm
COMMENT = "NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM";
--echo
--echo Expected number of partitions with "FOR_RA_BY_LDM" = 4
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_ra_by_ldm'
ORDER BY PARTITION_ORDINAL_POSITION;
# FOR_RA_BY_LDM_X_4
ALTER TABLE t1_ra_by_ldm
COMMENT = "NDB_TABLE=PARTITION_BALANCE=FOR_RA_BY_LDM_X_4";
--echo
--echo Expected number of partitions with "FOR_RA_BY_LDM_X_4" = 16
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_ra_by_ldm'
ORDER BY PARTITION_ORDINAL_POSITION;
DROP TABLE t1_ra_by_ldm;
# FULLY_REPLICATED
CREATE TABLE t1_fully_replicated (
a char(10) NOT NULL PRIMARY KEY,
b int NOT NULL,
UNIQUE(a,b),
KEY(b, a))
ENGINE = NDB
COMMENT = 'NDB_TABLE=FULLY_REPLICATED=1';
--echo
--echo Expected number of partitions with "FULLY_REPLICATED" = 8
--echo
SELECT TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, PARTITION_METHOD, NODEGROUP
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_schema = 'test' AND table_name = 't1_fully_replicated'
ORDER BY PARTITION_ORDINAL_POSITION;
DROP TABLE t1_fully_replicated;
--echo #
--echo # Bug#33643512 Missing check for Thd_ndb in information_schema.partitions
--echo # - Run I_S.partition query on new connection
--echo #
CREATE TABLE t1 (a int primary key) engine = NDB;
# Run query to cache open ha_ndbcluster instance
--disable_query_log ONCE
--disable_result_log ONCE
select * from information_schema.partitions
where (table_schema, table_name) in (select table_schema, table_name from
information_schema.tables where engine="ndbcluster");
# Run query in new connection
--connect(con1, localhost, root)
--connection con1
--disable_query_log ONCE
--disable_result_log ONCE
select * from information_schema.partitions
where (table_schema, table_name) in (select table_schema, table_name from
information_schema.tables where engine="ndbcluster");
# Disconnect
--disconnect con1
--source include/wait_until_disconnected.inc
--connection default
DROP TABLE t1;
|