File: information_schema_partitions.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (180 lines) | stat: -rw-r--r-- 5,212 bytes parent folder | download
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;