polardbxengine/mysql-test/suite/ndb/r/ndbinfo.result

1817 lines
60 KiB
Plaintext

result_format: 2
SELECT PLUGIN_NAME,PLUGIN_VERSION,PLUGIN_STATUS,PLUGIN_TYPE,
PLUGIN_LIBRARY,PLUGIN_LIBRARY_VERSION,PLUGIN_AUTHOR,PLUGIN_DESCRIPTION
FROM information_schema.plugins WHERE PLUGIN_NAME = 'ndbinfo';
PLUGIN_NAME PLUGIN_VERSION PLUGIN_STATUS PLUGIN_TYPE PLUGIN_LIBRARY PLUGIN_LIBRARY_VERSION PLUGIN_AUTHOR PLUGIN_DESCRIPTION
ndbinfo 0.1 ACTIVE STORAGE ENGINE NULL NULL Sun Microsystems Inc. MySQL Cluster system information storage engine
## Creation of temporary tables should not be supported by NDBINFO engine
CREATE TEMPORARY TABLE `t1` (
`dummy` INT UNSIGNED
) ENGINE=NDBINFO;
ERROR HY000: Table storage engine 'ndbinfo' does not support the create option 'TEMPORARY'
USE ndbinfo;
SELECT node_id, memory_type, used>0 AND used < total/20 AS used_ok,
used_pages>0 AND used_pages < total_pages/20 AS used_pages_ok,
total, total_pages
FROM ndbinfo.memoryusage WHERE memory_type="Long message buffer"
ORDER BY node_id;
node_id memory_type used_ok used_pages_ok total total_pages
1 Long message buffer 0 0 4194304 16384
2 Long message buffer 0 0 4194304 16384
SELECT node_id, block_number, block_instance, pool_name,
used>0 AND used < total/20 AS used_ok,
total, high>=used AND high < total/20 AS high_ok, entry_size, config_param1,
config_param2, config_param3, config_param4
FROM ndbinfo.ndb$pools WHERE pool_name="Long message buffer"
ORDER BY node_id;
node_id block_number block_instance pool_name used_ok total high_ok entry_size config_param1 config_param2 config_param3 config_param4
1 254 0 Long message buffer 0 16384 0 256 157 0 0 0
2 254 0 Long message buffer 0 16384 0 256 157 0 0 0
SHOW CREATE TABLE ndb$tables;
Table Create Table
ndb$tables CREATE TABLE `ndb$tables` (
`table_id` int(10) unsigned DEFAULT NULL,
`table_name` varchar(512) DEFAULT NULL,
`comment` varchar(512) DEFAULT NULL
) ENGINE=NDBINFO DEFAULT CHARSET=latin1 COMMENT='metadata for tables available through ndbinfo'
SELECT * FROM ndb$tables;
table_id table_name comment
0 tables metadata for tables available through ndbinfo
1 columns metadata for columns available through ndbinfo
2 test for testing
3 pools pool usage
4 transporters transporter status
5 logspaces logspace usage
6 logbuffers logbuffer usage
7 resources resources usage (a.k.a superpool)
8 counters monotonic counters
9 nodes node status
10 diskpagebuffer disk page buffer info
11 threadblocks which blocks are run in which threads
12 threadstat Statistics on execution threads
13 transactions transactions
14 operations operations
15 membership membership
16 dict_obj_info Dictionary object info
17 frag_mem_use Per fragment space information
18 disk_write_speed_base Actual speed of disk writes per LDM thread, base data
19 disk_write_speed_aggregate Actual speed of disk writes per LDM thread, aggregate data
20 frag_operations Per fragment operational information
21 restart_info Times of restart phases in seconds and current state
22 tc_time_track_stats Time tracking of transaction, key operations and scan ops
23 config_values Configuration parameter values
24 threads Base table for threads
25 cpustat_50ms Thread CPU stats at 50 milliseconds intervals
26 cpustat_1sec Thread CPU stats at 1 second intervals
27 cpustat_20sec Thread CPU stats at 20 seconds intervals
28 cpustat Thread CPU stats for last second
29 frag_locks Per fragment lock information
30 acc_operations ACC operation info
31 table_distribution_status Table status in distribution handler
32 table_fragments Partitions of the tables
33 table_replicas Fragment replicas of the tables
34 table_distribution_status_all Table status in distribution handler
35 table_fragments_all Partitions of the tables
36 table_replicas_all Fragment replicas of the tables
37 stored_tables Information about stored tables
38 processes Process ID and Name information for connected nodes
39 config_nodes All nodes of current cluster configuration
SELECT COUNT(*) FROM ndb$tables;
COUNT(*)
40
SELECT * FROM ndb$tables WHERE table_id = 2;
table_id table_name comment
2 test for testing
SELECT * FROM ndb$tables WHERE table_id > 5;
table_id table_name comment
6 logbuffers logbuffer usage
7 resources resources usage (a.k.a superpool)
8 counters monotonic counters
9 nodes node status
10 diskpagebuffer disk page buffer info
11 threadblocks which blocks are run in which threads
12 threadstat Statistics on execution threads
13 transactions transactions
14 operations operations
15 membership membership
16 dict_obj_info Dictionary object info
17 frag_mem_use Per fragment space information
18 disk_write_speed_base Actual speed of disk writes per LDM thread, base data
19 disk_write_speed_aggregate Actual speed of disk writes per LDM thread, aggregate data
20 frag_operations Per fragment operational information
21 restart_info Times of restart phases in seconds and current state
22 tc_time_track_stats Time tracking of transaction, key operations and scan ops
23 config_values Configuration parameter values
24 threads Base table for threads
25 cpustat_50ms Thread CPU stats at 50 milliseconds intervals
26 cpustat_1sec Thread CPU stats at 1 second intervals
27 cpustat_20sec Thread CPU stats at 20 seconds intervals
28 cpustat Thread CPU stats for last second
29 frag_locks Per fragment lock information
30 acc_operations ACC operation info
31 table_distribution_status Table status in distribution handler
32 table_fragments Partitions of the tables
33 table_replicas Fragment replicas of the tables
34 table_distribution_status_all Table status in distribution handler
35 table_fragments_all Partitions of the tables
36 table_replicas_all Fragment replicas of the tables
37 stored_tables Information about stored tables
38 processes Process ID and Name information for connected nodes
39 config_nodes All nodes of current cluster configuration
SELECT * FROM ndb$tables WHERE table_name = 'LOGDESTINATION';
table_id table_name comment
SELECT COUNT(*) FROM ndb$tables t, ndb$columns c
WHERE t.table_id = c.table_id AND
t.table_id in (1,2,3,4,5,6);
COUNT(*)
49
SELECT table_id, table_name, comment from ndb$tables
WHERE table_id > 2 AND table_id <= 5 ORDER BY table_id;
table_id table_name comment
3 pools pool usage
4 transporters transporter status
5 logspaces logspace usage
SELECT table_id FROM ndb$tables WHERE table_id = 2 ORDER BY table_name;
table_id
2
SELECT table_id, table_name FROM ndb$tables ORDER BY table_name;
table_id table_name
30 acc_operations
1 columns
39 config_nodes
23 config_values
8 counters
28 cpustat
26 cpustat_1sec
27 cpustat_20sec
25 cpustat_50ms
16 dict_obj_info
10 diskpagebuffer
19 disk_write_speed_aggregate
18 disk_write_speed_base
29 frag_locks
17 frag_mem_use
20 frag_operations
6 logbuffers
5 logspaces
15 membership
9 nodes
14 operations
3 pools
38 processes
7 resources
21 restart_info
37 stored_tables
0 tables
31 table_distribution_status
34 table_distribution_status_all
32 table_fragments
35 table_fragments_all
33 table_replicas
36 table_replicas_all
22 tc_time_track_stats
2 test
11 threadblocks
24 threads
12 threadstat
13 transactions
4 transporters
SELECT table_id, column_id, column_name FROM ndb$columns LIMIT 7;
table_id column_id column_name
0 0 table_id
0 1 table_name
0 2 comment
1 0 table_id
1 1 column_id
1 2 column_name
1 3 column_type
UPDATE ndb$tables SET table_id=2 WHERE table_id=3;
ERROR HY000: Table 'ndb$tables' is read only
UPDATE ndb$tables SET table_id=9 WHERE 1=0;
ERROR HY000: Table 'ndb$tables' is read only
UPDATE ndb$tables SET table_id=9 WHERE table_id > 1;
ERROR HY000: Table 'ndb$tables' is read only
DELETE FROM ndb$tables WHERE table_id=3;
ERROR HY000: Table 'ndb$tables' is read only
DELETE FROM ndb$tables WHERE 1=0;
ERROR HY000: Table 'ndb$tables' is read only
DELETE FROM ndb$tables WHERE table_id > 1;
ERROR HY000: Table 'ndb$tables' is read only
ALTER TABLE ndb$test ADD COLUMN another_col varchar(255);
ERROR HY000: Table storage engine for 'ndb$test' doesn't have this option
FLUSH TABLES;
SELECT table_id FROM ndb$tables;
table_id
0
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
TRUNCATE ndb$tables;
ERROR HY000: Table 'ndb$tables' is read only
## Variables and status
SHOW GLOBAL STATUS LIKE 'ndbinfo\_%';
Variable_name Value
SHOW GLOBAL VARIABLES LIKE 'ndbinfo\_%';
Variable_name Value
ndbinfo_database ndbinfo
ndbinfo_max_bytes 0
ndbinfo_max_rows 10
ndbinfo_offline OFF
ndbinfo_show_hidden OFF
ndbinfo_table_prefix ndb$
ndbinfo_version NDB_VERSION_D
SELECT counter, HEX(counter2) FROM ndb$test LIMIT 10;
counter HEX(counter2)
0 0
1 100000000
2 200000000
3 300000000
4 400000000
5 500000000
6 600000000
7 700000000
8 800000000
9 900000000
SHOW TABLES LIKE 'ndb$te%';
Tables_in_ndbinfo (ndb$te%)
set @@ndbinfo_show_hidden=TRUE;
SHOW TABLES LIKE 'ndb$te%';
Tables_in_ndbinfo (ndb$te%)
ndb$test
set @@ndbinfo_show_hidden=default;
set @@ndbinfo_table_prefix="somethingelse";
ERROR HY000: Variable 'ndbinfo_table_prefix' is a read only variable
set @@ndbinfo_database="somethingelse";
ERROR HY000: Variable 'ndbinfo_database' is a read only variable
SELECT count(*) >= 20 FROM blocks;
count(*) >= 20
1
show create table ndb$test;
Table Create Table
ndb$test CREATE TABLE `ndb$test` (
`node_id` int(10) unsigned DEFAULT NULL,
`block_number` int(10) unsigned DEFAULT NULL,
`block_instance` int(10) unsigned DEFAULT NULL,
`counter` int(10) unsigned DEFAULT NULL,
`counter2` bigint(20) unsigned DEFAULT NULL
) ENGINE=NDBINFO DEFAULT CHARSET=latin1 COMMENT='for testing'
## 1) More columns in NDB -> allowed, with warning
DROP TABLE ndb$test;
CREATE TABLE ndb$test (node_id int unsigned) ENGINE = ndbinfo;
SELECT node_id != 0 FROM ndb$test LIMIT 1;
node_id != 0
1
Warnings:
Note 40001 Table 'ndb$test' is defined differently in NDB, there are more columns available. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
DROP TABLE ndb$test;
## 2) Column does not exist in NDB -> allowed, with warning, non existing
## column(s) return NULL
## 2a) Extra column at end
CREATE TABLE ndb$test (node_id int, non_existing int) ENGINE = ndbinfo;
SELECT DISTINCT node_id, non_existing FROM ndb$test;
node_id non_existing
1 NULL
2 NULL
Warnings:
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'non_existing' does not exist. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
Note 40001 Table 'ndb$test' is defined differently in NDB, there are more columns available. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
DROP TABLE ndb$test;
## 2b) Extra column(s) in middle
CREATE TABLE ndb$test (
node_id int unsigned,
non_existing int unsigned,
block_number int unsigned,
block_instance int unsigned,
counter int unsigned,
counter2 bigint unsigned
) ENGINE = ndbinfo;
SELECT DISTINCT node_id, non_existing, block_number FROM ndb$test;
node_id non_existing block_number
1 NULL 249
2 NULL 249
Warnings:
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'non_existing' does not exist. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
DROP TABLE ndb$test;
## 2c) Extra column first
CREATE TABLE ndb$test (non_existing int, node_id int) ENGINE = ndbinfo;
SELECT DISTINCT node_id, non_existing FROM ndb$test;
node_id non_existing
1 NULL
2 NULL
Warnings:
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'non_existing' does not exist. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
Note 40001 Table 'ndb$test' is defined differently in NDB, there are more columns available. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
SELECT DISTINCT non_existing, node_id FROM ndb$test;
non_existing node_id
NULL 1
NULL 2
DROP TABLE ndb$test;
## 3) Incompatible column type -> error, with warning
## 3a) int instead of bigint
CREATE TABLE ndb$test (counter2 int) ENGINE = ndbinfo;
SELECT * FROM ndb$test;
ERROR HY000: Got error 40001 'Incompatible table definitions' from NDBINFO
SHOW WARNINGS;
Level Code Message
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'counter2' is not compatible. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
Error 1296 Got error 40001 'Incompatible table definitions' from NDBINFO
## 3b) bigint instead of int
DROP TABLE ndb$test;
CREATE TABLE ndb$test (node_id bigint) ENGINE = ndbinfo;
SELECT * FROM ndb$test;
ERROR HY000: Got error 40001 'Incompatible table definitions' from NDBINFO
SHOW WARNINGS;
Level Code Message
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'node_id' is not compatible. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
Error 1296 Got error 40001 'Incompatible table definitions' from NDBINFO
## 3c) varchar instead of int
DROP TABLE ndb$test;
CREATE TABLE ndb$test (node_id varchar(255)) ENGINE = ndbinfo;
SELECT * FROM ndb$test;
ERROR HY000: Got error 40001 'Incompatible table definitions' from NDBINFO
SHOW WARNINGS;
Level Code Message
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'node_id' is not compatible. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
Error 1296 Got error 40001 'Incompatible table definitions' from NDBINFO
DROP TABLE ndb$test;
## 3d) column which is NOT NULL
CREATE TABLE ndb$test (node_id int unsigned NOT NULL) ENGINE = ndbinfo;
SELECT * FROM ndb$test;
ERROR HY000: Got error 40001 'Incompatible table definitions' from NDBINFO
SHOW WARNINGS;
Level Code Message
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'node_id' is NOT NULL. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
Error 1296 Got error 40001 'Incompatible table definitions' from NDBINFO
DROP TABLE ndb$test;
## 3e) non existing column which is NOT NULL
CREATE TABLE ndb$test (
block_number int unsigned,
non_existing int NOT NULL) ENGINE = ndbinfo;
SELECT * FROM ndb$test;
ERROR HY000: Got error 40001 'Incompatible table definitions' from NDBINFO
SHOW WARNINGS;
Level Code Message
Warning 40001 Table 'ndb$test' is defined differently in NDB, column 'non_existing' is NOT NULL. The SQL to regenerate is: 'CREATE TABLE `ndbinfo`.`ndb$test` (`node_id` INT UNSIGNED, `block_number` INT UNSIGNED, `block_instance` INT UNSIGNED, `counter` INT UNSIGNED, `counter2` BIGINT UNSIGNED) ENGINE=NDBINFO'
Error 1296 Got error 40001 'Incompatible table definitions' from NDBINFO
DROP TABLE ndb$test;
## 4) Table with primary key/indexes not supported
CREATE TABLE ndb$test (node_id int, block_number int PRIMARY KEY) ENGINE = ndbinfo;
ERROR 42000: Too many keys specified; max 0 keys allowed
## 5) Table with blobs not supported
CREATE TABLE ndb$test (node_id int, block_number blob) ENGINE = ndbinfo;
ERROR 42000: The used table type doesn't support BLOB/TEXT columns
## 6) Table with autoincrement not supported
CREATE TABLE ndb$test (node_id int AUTO_INCREMENT) ENGINE = ndbinfo;
ERROR 42000: The used table type doesn't support AUTO_INCREMENT columns
## Restore original ndb$test table to avoid test side-effects
CREATE TABLE ndb$test (
node_id int(10) unsigned DEFAULT NULL,
block_number int(10) unsigned DEFAULT NULL,
block_instance int(10) unsigned DEFAULT NULL,
counter int(10) unsigned DEFAULT NULL,
counter2 bigint(20) unsigned DEFAULT NULL
) ENGINE=NDBINFO DEFAULT CHARSET=latin1 COMMENT='for testing';
Warnings:
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
Warning 1681 Integer display width is deprecated and will be removed in a future release.
select distinct node_id
from ndbinfo.diskpagebuffer;
node_id
1
2
set @@ndbinfo_offline=1;
ERROR HY000: Variable 'ndbinfo_offline' is a GLOBAL variable and should be set with SET GLOBAL
SELECT DISTINCT(node_id) FROM ndbinfo.counters ORDER BY node_id;
node_id
1
2
desc threadblocks;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
thr_no int(10) unsigned YES NULL
block_name varchar(512) YES NULL
block_instance int(10) unsigned YES NULL
select distinct block_name from threadblocks order by 1;
block_name
BACKUP
CMVMI
DBACC
DBDICT
DBDIH
DBINFO
DBLQH
DBSPJ
DBTC
DBTUP
DBTUX
DBUTIL
LGMAN
NDBCNTR
NDBFS
PGMAN
QMGR
RESTORE
SUMA
THRMAN
TRIX
TRPMAN
TSMAN
desc threadstat;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
thr_no int(10) unsigned YES NULL
thr_nm varchar(512) YES NULL
c_loop bigint(20) unsigned YES NULL
c_exec bigint(20) unsigned YES NULL
c_wait bigint(20) unsigned YES NULL
c_l_sent_prioa bigint(20) unsigned YES NULL
c_l_sent_priob bigint(20) unsigned YES NULL
c_r_sent_prioa bigint(20) unsigned YES NULL
c_r_sent_priob bigint(20) unsigned YES NULL
os_tid bigint(20) unsigned YES NULL
os_now bigint(20) unsigned YES NULL
os_ru_utime bigint(20) unsigned YES NULL
os_ru_stime bigint(20) unsigned YES NULL
os_ru_minflt bigint(20) unsigned YES NULL
os_ru_majflt bigint(20) unsigned YES NULL
os_ru_nvcsw bigint(20) unsigned YES NULL
os_ru_nivcsw bigint(20) unsigned YES NULL
select count(*) > 0 block_name from threadstat;
block_name
1
desc disk_write_speed_aggregate;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
thr_no int(10) unsigned YES NULL
backup_lcp_speed_last_sec bigint(20) unsigned YES NULL
redo_speed_last_sec bigint(20) unsigned YES NULL
backup_lcp_speed_last_10sec bigint(20) unsigned YES NULL
redo_speed_last_10sec bigint(20) unsigned YES NULL
std_dev_backup_lcp_speed_last_10sec bigint(20) unsigned YES NULL
std_dev_redo_speed_last_10sec bigint(20) unsigned YES NULL
backup_lcp_speed_last_60sec bigint(20) unsigned YES NULL
redo_speed_last_60sec bigint(20) unsigned YES NULL
std_dev_backup_lcp_speed_last_60sec bigint(20) unsigned YES NULL
std_dev_redo_speed_last_60sec bigint(20) unsigned YES NULL
slowdowns_due_to_io_lag bigint(20) unsigned YES NULL
slowdowns_due_to_high_cpu bigint(20) unsigned YES NULL
disk_write_speed_set_to_min bigint(20) unsigned YES NULL
current_target_disk_write_speed bigint(20) unsigned YES NULL
select count(*) from disk_write_speed_aggregate;
count(*)
8
desc disk_write_speed_base;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
thr_no int(10) unsigned YES NULL
millis_ago bigint(20) unsigned YES NULL
millis_passed bigint(20) unsigned YES NULL
backup_lcp_bytes_written bigint(20) unsigned YES NULL
redo_bytes_written bigint(20) unsigned YES NULL
target_disk_write_speed bigint(20) unsigned YES NULL
select node_id from disk_write_speed_base group by node_id, thr_no;
node_id
1
1
1
1
2
2
2
2
select count(*) from disk_write_speed_aggregate_node;
count(*)
2
desc restart_info;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
node_restart_status varchar(512) YES NULL
node_restart_status_int int(10) unsigned YES NULL
secs_to_complete_node_failure int(10) unsigned YES NULL
secs_to_allocate_node_id int(10) unsigned YES NULL
secs_to_include_in_heartbeat_protocol int(10) unsigned YES NULL
secs_until_wait_for_ndbcntr_master int(10) unsigned YES NULL
secs_wait_for_ndbcntr_master int(10) unsigned YES NULL
secs_to_get_start_permitted int(10) unsigned YES NULL
secs_to_wait_for_lcp_for_copy_meta_data int(10) unsigned YES NULL
secs_to_copy_meta_data int(10) unsigned YES NULL
secs_to_include_node int(10) unsigned YES NULL
secs_starting_node_to_request_local_recovery int(10) unsigned YES NULL
secs_for_local_recovery int(10) unsigned YES NULL
secs_restore_fragments int(10) unsigned YES NULL
secs_undo_disk_data int(10) unsigned YES NULL
secs_exec_redo_log int(10) unsigned YES NULL
secs_index_rebuild int(10) unsigned YES NULL
secs_to_synchronize_starting_node int(10) unsigned YES NULL
secs_wait_lcp_for_restart int(10) unsigned YES NULL
secs_wait_subscription_handover int(10) unsigned YES NULL
total_restart_secs int(10) unsigned YES NULL
select * from restart_info where node_restart_status <> 'Restart completed';
node_id node_restart_status node_restart_status_int secs_to_complete_node_failure secs_to_allocate_node_id secs_to_include_in_heartbeat_protocol secs_until_wait_for_ndbcntr_master secs_wait_for_ndbcntr_master secs_to_get_start_permitted secs_to_wait_for_lcp_for_copy_meta_data secs_to_copy_meta_data secs_to_include_node secs_starting_node_to_request_local_recovery secs_for_local_recovery secs_restore_fragments secs_undo_disk_data secs_exec_redo_log secs_index_rebuild secs_to_synchronize_starting_node secs_wait_lcp_for_restart secs_wait_subscription_handover total_restart_secs
desc tc_time_track_stats;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
block_number int(10) unsigned YES NULL
block_instance int(10) unsigned YES NULL
comm_node_id int(10) unsigned YES NULL
upper_bound bigint(20) unsigned YES NULL
scans bigint(20) unsigned YES NULL
scan_errors bigint(20) unsigned YES NULL
scan_fragments bigint(20) unsigned YES NULL
scan_fragment_errors bigint(20) unsigned YES NULL
transactions bigint(20) unsigned YES NULL
transaction_errors bigint(20) unsigned YES NULL
read_key_ops bigint(20) unsigned YES NULL
write_key_ops bigint(20) unsigned YES NULL
index_key_ops bigint(20) unsigned YES NULL
key_op_errors bigint(20) unsigned YES NULL
select distinct node_id from tc_time_track_stats;
node_id
1
2
desc threads;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
thr_no int(10) unsigned YES NULL
thread_name varchar(512) YES NULL
thread_description varchar(512) YES NULL
desc cluster_transactions;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
block_instance int(10) unsigned YES NULL
transid bigint(22) unsigned YES NULL
state varchar(256) YES NULL
count_operations int(10) unsigned YES NULL
outstanding_operations int(10) unsigned YES NULL
inactive_seconds int(10) unsigned YES NULL
client_node_id bigint(21) unsigned YES NULL
client_block_ref bigint(21) unsigned YES NULL
desc server_transactions;
Field Type Null Key Default Extra
mysql_connection_id bigint(21) unsigned NO 0
node_id int(10) unsigned YES NULL
block_instance int(10) unsigned YES NULL
transid bigint(22) unsigned YES NULL
state varchar(256) YES NULL
count_operations int(10) unsigned YES NULL
outstanding_operations int(10) unsigned YES NULL
inactive_seconds int(10) unsigned YES NULL
client_node_id bigint(21) unsigned YES NULL
client_block_ref bigint(21) unsigned YES NULL
desc cluster_operations;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
block_instance int(10) unsigned YES NULL
transid bigint(22) unsigned YES NULL
operation_type varchar(9) NO
state varchar(256) YES NULL
tableid int(10) unsigned YES NULL
fragmentid int(10) unsigned YES NULL
client_node_id bigint(21) unsigned YES NULL
client_block_ref bigint(21) unsigned YES NULL
tc_node_id bigint(21) unsigned YES NULL
tc_block_no bigint(21) unsigned YES NULL
tc_block_instance bigint(21) unsigned YES NULL
desc server_operations;
Field Type Null Key Default Extra
mysql_connection_id bigint(21) unsigned NO 0
node_id int(10) unsigned YES NULL
block_instance int(10) unsigned YES NULL
transid bigint(22) unsigned YES NULL
operation_type varchar(9) NO
state varchar(256) YES NULL
tableid int(10) unsigned YES NULL
fragmentid int(10) unsigned YES NULL
client_node_id bigint(21) unsigned YES NULL
client_block_ref bigint(21) unsigned YES NULL
tc_node_id bigint(21) unsigned YES NULL
tc_block_no bigint(21) unsigned YES NULL
tc_block_instance bigint(21) unsigned YES NULL
select count(*) > 0 from table_distribution_status;
count(*) > 0
1
select count(*) > 0 from ndb$table_distribution_status_all;
count(*) > 0
1
select count(*) > 0 from table_fragments;
count(*) > 0
1
select count(*) > 0 from ndb$table_fragments_all;
count(*) > 0
1
select count(*) > 0 from table_replicas;
count(*) > 0
1
select count(*) > 0 from ndb$table_replicas_all;
count(*) > 0
1
desc table_distribution_status;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
table_id int(10) unsigned YES NULL
tab_copy_status varchar(20) NO
tab_update_status varchar(23) NO
tab_lcp_status varchar(15) NO
tab_status varchar(13) NO
tab_storage varchar(13) NO
tab_partitions int(10) unsigned YES NULL
tab_fragments int(10) unsigned YES NULL
current_scan_count int(10) unsigned YES NULL
scan_count_wait int(10) unsigned YES NULL
is_reorg_ongoing int(10) unsigned YES NULL
desc table_fragments;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
table_id int(10) unsigned YES NULL
partition_id int(10) unsigned YES NULL
fragment_id int(10) unsigned YES NULL
partition_order int(10) unsigned YES NULL
log_part_id int(10) unsigned YES NULL
no_of_replicas int(10) unsigned YES NULL
current_primary int(10) unsigned YES NULL
preferred_primary int(10) unsigned YES NULL
current_first_backup int(10) unsigned YES NULL
current_second_backup int(10) unsigned YES NULL
current_third_backup int(10) unsigned YES NULL
num_alive_replicas int(10) unsigned YES NULL
num_dead_replicas int(10) unsigned YES NULL
num_lcp_replicas int(10) unsigned YES NULL
desc table_replicas;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
table_id int(10) unsigned YES NULL
fragment_id int(10) unsigned YES NULL
initial_gci int(10) unsigned YES NULL
replica_node_id int(10) unsigned YES NULL
is_lcp_ongoing int(10) unsigned YES NULL
num_crashed_replicas int(10) unsigned YES NULL
last_max_gci_started int(10) unsigned YES NULL
last_max_gci_completed int(10) unsigned YES NULL
last_lcp_id int(10) unsigned YES NULL
prev_lcp_id int(10) unsigned YES NULL
prev_max_gci_started int(10) unsigned YES NULL
prev_max_gci_completed int(10) unsigned YES NULL
last_create_gci int(10) unsigned YES NULL
last_replica_gci int(10) unsigned YES NULL
is_replica_alive int(10) unsigned YES NULL
set @@ndbinfo_show_hidden=TRUE;
desc ndb$table_distribution_status_all;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
table_id int(10) unsigned YES NULL
tab_copy_status int(10) unsigned YES NULL
tab_update_status int(10) unsigned YES NULL
tab_lcp_status int(10) unsigned YES NULL
tab_status int(10) unsigned YES NULL
tab_storage int(10) unsigned YES NULL
tab_type int(10) unsigned YES NULL
tab_partitions int(10) unsigned YES NULL
tab_fragments int(10) unsigned YES NULL
current_scan_count int(10) unsigned YES NULL
scan_count_wait int(10) unsigned YES NULL
is_reorg_ongoing int(10) unsigned YES NULL
desc ndb$table_fragments_all;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
table_id int(10) unsigned YES NULL
partition_id int(10) unsigned YES NULL
fragment_id int(10) unsigned YES NULL
partition_order int(10) unsigned YES NULL
log_part_id int(10) unsigned YES NULL
no_of_replicas int(10) unsigned YES NULL
current_primary int(10) unsigned YES NULL
preferred_primary int(10) unsigned YES NULL
current_first_backup int(10) unsigned YES NULL
current_second_backup int(10) unsigned YES NULL
current_third_backup int(10) unsigned YES NULL
num_alive_replicas int(10) unsigned YES NULL
num_dead_replicas int(10) unsigned YES NULL
num_lcp_replicas int(10) unsigned YES NULL
desc ndb$table_replicas_all;
Field Type Null Key Default Extra
node_id int(10) unsigned YES NULL
table_id int(10) unsigned YES NULL
fragment_id int(10) unsigned YES NULL
initial_gci int(10) unsigned YES NULL
replica_node_id int(10) unsigned YES NULL
is_lcp_ongoing int(10) unsigned YES NULL
num_crashed_replicas int(10) unsigned YES NULL
last_max_gci_started int(10) unsigned YES NULL
last_max_gci_completed int(10) unsigned YES NULL
last_lcp_id int(10) unsigned YES NULL
prev_lcp_id int(10) unsigned YES NULL
prev_max_gci_started int(10) unsigned YES NULL
prev_max_gci_completed int(10) unsigned YES NULL
last_create_gci int(10) unsigned YES NULL
last_replica_gci int(10) unsigned YES NULL
is_replica_alive int(10) unsigned YES NULL
set @@ndbinfo_show_hidden=default;
create table t1 (a int primary key) engine = ndb;
begin;
insert into t1 values (1);
select state, count_operations, outstanding_operations,
IF(client_node_id <= 255, "<client_node_id>", "<incorrect node id>")
client_node_id
from server_transactions;
state count_operations outstanding_operations client_node_id
Started 1 0 <client_node_id>
select node_id, operation_type, state,
IF(tc_node_id <= 48, "<tc_node_id>", "<incorrect nodeid>") tc_node_id,
IF(client_node_id <= 255, "<client_node_id>", "<incorrect node id>")
client_node_id
from server_operations
order by 1;
node_id operation_type state tc_node_id client_node_id
1 INSERT Prepared <tc_node_id> <client_node_id>
2 INSERT Prepared <tc_node_id> <client_node_id>
select st.state, st.count_operations, st.outstanding_operations,
so.node_id, so.state, so.operation_type
from server_transactions st,
server_operations so
where st.transid = so.transid
and so.tc_node_id = st.node_id
and so.tc_block_instance = st.block_instance
and so.client_node_id = st.client_node_id
and so.client_block_ref = st.client_block_ref;
state count_operations outstanding_operations node_id state operation_type
Started 1 0 1 Prepared INSERT
Started 1 0 2 Prepared INSERT
rollback;
drop table t1;
select distinct resource_name
from resources
order by 1;
resource_name
DATA_MEMORY
DISK_PAGE_BUFFER
DISK_RECORDS
FILE_BUFFERS
JOBBUFFER
QUERY_MEMORY
SCHEMA_TRANS_MEMORY
TRANSACTION_MEMORY
TRANSPORTER_BUFFERS
select distinct counter_name
from counters
order by 1;
counter_name
ABORTS
ATTRINFO
COMMITS
CONST_PRUNED_RANGE_SCANS_RECEIVED
LOCAL_RANGE_SCANS_SENT
LOCAL_READS
LOCAL_READS_SENT
LOCAL_TABLE_SCANS_SENT
LOCAL_WRITES
LQHKEY_OVERLOAD
LQHKEY_OVERLOAD_NODE_PEER
LQHKEY_OVERLOAD_READER
LQHKEY_OVERLOAD_SUBSCRIBER
LQHKEY_OVERLOAD_TC
LQHSCAN_SLOWDOWNS
OPERATIONS
PRUNED_RANGE_SCANS_RECEIVED
RANGE_SCANS
RANGE_SCANS_RECEIVED
READS
READS_NOT_FOUND
READS_RECEIVED
REMOTE_RANGE_SCANS_SENT
REMOTE_READS_SENT
SCAN_BATCHES_RETURNED
SCAN_ROWS_RETURNED
SIMPLE_READS
TABLE_SCANS
TABLE_SCANS_RECEIVED
TRANSACTIONS
WRITES
set @@global.ndbinfo_offline=TRUE;
select @@ndbinfo_offline;
@@ndbinfo_offline
1
CREATE TABLE ndb$does_not_exist_in_ndb(
node_id int,
message varchar(255)
) ENGINE = ndbinfo CHARACTER SET latin1;
CREATE VIEW view_on_table_which_does_not_exist_in_ndb AS
SELECT node_id, message
FROM ndbinfo.ndb$does_not_exist_in_ndb;
SHOW CREATE TABLE ndb$does_not_exist_in_ndb;
Table Create Table
ndb$does_not_exist_in_ndb CREATE TABLE `ndb$does_not_exist_in_ndb` (
`node_id` int(11) DEFAULT NULL,
`message` varchar(255) DEFAULT NULL
) ENGINE=NDBINFO DEFAULT CHARSET=latin1
SELECT * FROM view_on_table_which_does_not_exist_in_ndb;
node_id message
Warnings:
Note 1 'NDBINFO' has been started in offline mode since the 'NDBCLUSTER' engine is disabled or @@global.ndbinfo_offline is turned on - no rows can be returned
SELECT * FROM ndb$does_not_exist_in_ndb;
node_id message
Warnings:
Note 1 'NDBINFO' has been started in offline mode since the 'NDBCLUSTER' engine is disabled or @@global.ndbinfo_offline is turned on - no rows can be returned
SELECT DISTINCT(node_id) FROM ndbinfo.counters ORDER BY node_id;
node_id
Warnings:
Note 1 'NDBINFO' has been started in offline mode since the 'NDBCLUSTER' engine is disabled or @@global.ndbinfo_offline is turned on - no rows can be returned
DROP VIEW view_on_table_which_does_not_exist_in_ndb;
DROP TABLE ndb$does_not_exist_in_ndb;
set @@global.ndbinfo_offline = FALSE;
SELECT DISTINCT(node_id) FROM ndbinfo.counters ORDER BY node_id;
node_id
1
2
Verify there are no ndbinfo views without 'root@localhost' as definer
select table_schema, table_name, definer from information_schema.views
where table_schema = 'ndbinfo' and
definer != 'root@localhost';
TABLE_SCHEMA TABLE_NAME DEFINER
set @@optimizer_switch='block_nested_loop=off';
select @a:=0;
select
@a:=@a+1,
a.node_id, b.node_id,
a.block_name, b.block_name,
a.block_instance, b.block_instance,
a.counter_id, b.counter_id,
a.counter_name, b.counter_name,
a.val, b.val
from
ndbinfo.counters a join
ndbinfo.counters b
on
a.node_id = b.node_id;
select @b:=0;
select
@b:=@b+1,
a.node_id, b.node_id,
a.block_name, b.block_name,
a.block_instance, b.block_instance,
a.counter_id, b.counter_id,
a.counter_name, b.counter_name,
a.val, b.val
from
ndbinfo.counters a join
ndbinfo.counters b
on
a.node_id = b.node_id;
Expect both joins to give same row count
(0 diff)
select @a - @b;
@a - @b
0
create temporary table old_count
select counter_name, sum(val) as val
from ndbinfo.counters
where block_name='DBSPJ'
group by counter_name;
drop table old_count;
set @@optimizer_switch=default;
create table numbers(
i int
);
insert into numbers values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1(
a int not null primary key,
b int not null,
c1 char(255),
vc1 varchar(1024),
tx1 text
)engine=ndbcluster character set latin1;
insert into t1 select x1.i+x2.i*10+x3.i*100, x1.i-x2.i*10-x3.i*100, repeat('x', 1+x1.i), repeat('y', 1000+x1.i), repeat('z', x1.i*100) from numbers as x1, numbers as x2, numbers as x3;
drop table numbers;
create index ix1 on t1(c1);
create unique index ix2 on t1(b) using hash;
set @t1_id = (select cast(id as signed integer) from ndbinfo.ndb$dict_obj_info where fq_name REGEXP "def/t1$");
select type, state, parent_obj_type,
replace(replace(fq_name,
concat("/", cast(@t1_id as char(10)), "/"), "/<t1 id>/"),
concat("_", cast(@t1_id as char(10)), "_"), "_<t1 id>_") as fq_name,
if(parent_obj_id=@t1_id, "child_of_t1",
if(parent_obj_id=0, "root", "error!")) as nesting
from ndbinfo.ndb$dict_obj_info
where type <= 6
and (id = @t1_id or
instr(fq_name, concat("/", cast(@t1_id as char(10)), "/")) or
instr(fq_name, concat("_", cast(@t1_id as char(10)), "_")))
order by type, state, parent_obj_type, fq_name;
type state parent_obj_type fq_name nesting
2 4 0 ndbinfo/def/t1 root
2 4 2 ndbinfo/def/NDB$BLOB_<t1 id>_4 child_of_t1
3 4 2 sys/def/<t1 id>/ix2$unique child_of_t1
6 4 2 sys/def/<t1 id>/ix1 child_of_t1
6 4 2 sys/def/<t1 id>/PRIMARY child_of_t1
create view frag_sum as
select
sum(fixed_elem_alloc_bytes) as fixed_elem_alloc_bytes,
sum(var_elem_alloc_bytes) as var_elem_alloc_bytes,
sum(hash_index_alloc_bytes) as hash_index_alloc_bytes
from ndbinfo.memory_per_fragment;
create view pool_sum as
select pool_name, block_number, max(entry_size) * sum(used) as used_bytes
from ndbinfo.ndb$pools where pool_name <> "Data memory"
or block_number=249 group by pool_name, block_number;
create view check_l2pmap_pools as
select min(floor(1000*nodes.total*nodes.entry_size/
(pages.used*pages.entry_size))) as l2pmap_ratio
from ndbinfo.ndb$pools as pages join ndbinfo.ndb$pools as nodes
where pages.node_id=nodes.node_id
and pages.block_instance=nodes.block_instance
and pages.block_number=nodes.block_number
and pages.pool_name="L2PMap pages"
and nodes.pool_name="L2PMap nodes";
create view l2p_frag_sum as
select sum(tuple_l2pmap_alloc_bytes) as l2p_sum, 'TUP' as block
from ndbinfo.ndb$frag_mem_use
union
select sum(hash_index_l2pmap_alloc_bytes) as l2p_sum, 'ACC' as block
from ndbinfo.ndb$frag_mem_use;
select used_bytes - hash_index_alloc_bytes from pool_sum, frag_sum
where pool_name='Index memory';
used_bytes - hash_index_alloc_bytes
0
select used_bytes - fixed_elem_alloc_bytes - var_elem_alloc_bytes
into @diff
from pool_sum, frag_sum
where pool_name='Data memory';
select @diff;
@diff
0
select l2p_sum-used_bytes from l2p_frag_sum, pool_sum
where pool_name='L2PMap nodes' and ((block='ACC' and block_number=248) or
(block='TUP' and block_number=249));
l2p_sum-used_bytes
0
0
select * from check_l2pmap_pools;
l2pmap_ratio
996
select * from sum_per_tab;
fq_name parent_fq_name type fixed_elem_count fixed_elem_size_bytes fixed_elem_alloc_ok fixed_elem_free_bytes_ok var_elem_count var_bytes_ok
ndbinfo/def/NDB$BLOB_<t1 id>_4 ndbinfo/def/t1 User table 1400 36 1.0 1 1400 1
ndbinfo/def/t1 NULL User table 2000 292 1.0 1 2000 1
sys/def/<t1 id>/ix1 ndbinfo/def/t1 Ordered index -1 272 1.0 1 0 1
sys/def/<t1 id>/ix2$unique ndbinfo/def/t1 Unique hash index 2000 28 1.0 1 0 1
sys/def/<t1 id>/PRIMARY ndbinfo/def/t1 Ordered index -1 272 1.0 1 0 1
delete from t1 where a%10=0;
select used_bytes - hash_index_alloc_bytes from pool_sum, frag_sum
where pool_name='Index memory';
used_bytes - hash_index_alloc_bytes
0
select used_bytes - fixed_elem_alloc_bytes - var_elem_alloc_bytes
from pool_sum, frag_sum
where pool_name='Data memory';
used_bytes - fixed_elem_alloc_bytes - var_elem_alloc_bytes
0
select l2p_sum-used_bytes from l2p_frag_sum, pool_sum
where pool_name='L2PMap nodes' and ((block='ACC' and block_number=248) or
(block='TUP' and block_number=249));
l2p_sum-used_bytes
0
0
select * from check_l2pmap_pools;
l2pmap_ratio
996
select * from sum_per_tab;
fq_name parent_fq_name type fixed_elem_count fixed_elem_size_bytes fixed_elem_alloc_ok fixed_elem_free_bytes_ok var_elem_count var_bytes_ok
ndbinfo/def/NDB$BLOB_<t1 id>_4 ndbinfo/def/t1 User table 1400 36 1.0 1 1400 1
ndbinfo/def/t1 NULL User table 1800 292 1.0 1 1800 1
sys/def/<t1 id>/ix1 ndbinfo/def/t1 Ordered index -1 272 1.0 1 0 1
sys/def/<t1 id>/ix2$unique ndbinfo/def/t1 Unique hash index 1800 28 1.0 1 0 1
sys/def/<t1 id>/PRIMARY ndbinfo/def/t1 Ordered index -1 272 1.0 1 0 1
update t1 set vc1=repeat('x', a%300), tx1=repeat('y', a*2);
select used_bytes - hash_index_alloc_bytes from pool_sum, frag_sum
where pool_name='Index memory';
used_bytes - hash_index_alloc_bytes
0
select used_bytes - fixed_elem_alloc_bytes - var_elem_alloc_bytes
from pool_sum, frag_sum
where pool_name='Data memory';
used_bytes - fixed_elem_alloc_bytes - var_elem_alloc_bytes
0
select l2p_sum-used_bytes from l2p_frag_sum, pool_sum
where pool_name='L2PMap nodes' and ((block='ACC' and block_number=248) or
(block='TUP' and block_number=249));
l2p_sum-used_bytes
0
0
select * from check_l2pmap_pools;
l2pmap_ratio
996
select * from sum_per_tab;
fq_name parent_fq_name type fixed_elem_count fixed_elem_size_bytes fixed_elem_alloc_ok fixed_elem_free_bytes_ok var_elem_count var_bytes_ok
ndbinfo/def/NDB$BLOB_<t1 id>_4 ndbinfo/def/t1 User table 1568 36 1.0 1 1568 1
ndbinfo/def/t1 NULL User table 1800 292 1.0 1 1800 1
sys/def/<t1 id>/ix1 ndbinfo/def/t1 Ordered index -1 272 1.0 1 0 1
sys/def/<t1 id>/ix2$unique ndbinfo/def/t1 Unique hash index 1800 28 1.0 1 0 1
sys/def/<t1 id>/PRIMARY ndbinfo/def/t1 Ordered index -1 272 1.0 1 0 1
drop table t1;
drop view l2p_frag_sum;
drop view check_l2pmap_pools;
drop view sum_per_tab;
drop view pool_sum;
drop view frag_sum;
create view frag_ops as select
if(type in ('Ordered index', 'Unique hash index'),
substring(fq_name from 1+locate('/', fq_name, 9)),
if(fq_name like '%BLOB%', left(fq_name, locate('_', fq_name)), fq_name))
as fq_name,
parent_fq_name,
type,
count(fragment_num) as frag_count,
sum(tot_key_reads) as tot_key_reads,
sum(tot_key_inserts) as tot_key_inserts,
sum(tot_key_updates) as tot_key_updates,
sum(tot_key_writes) as tot_key_writes,
sum(tot_key_deletes) as tot_key_deletes,
sum(tot_key_refs) as tot_key_refs,
round(log2(1+sum(tot_key_attrinfo_bytes))) as log_tot_key_attrinfo_bytes,
sum(tot_key_keyinfo_bytes) as tot_key_keyinfo_bytes,
sum(tot_key_prog_bytes) as tot_key_prog_bytes,
sum(tot_key_inst_exec) as tot_key_inst_exec,
sum(tot_key_bytes_returned) as tot_key_bytes_returned,
sum(tot_frag_scans) as tot_frag_scans,
sum(tot_scan_rows_examined) as tot_scan_rows_examined,
sum(tot_scan_rows_returned) as tot_scan_rows_returned,
sum(tot_scan_bytes_returned) as tot_scan_bytes_returned,
sum(tot_scan_prog_bytes) as tot_scan_prog_bytes,
sum(tot_scan_bound_bytes) as tot_scan_bound_bytes,
sum(tot_scan_inst_exec) as tot_scan_inst_exec,
# Ignore concurrent frag_scans, as all tests below expect them to be 0
# but this is not stable as LCP scans are counted as concurrent
# frag scans while they are running (but not counted as tot_frag_scans
# when they complete).
# Arguably it is useful to see a live LCP scan, and this test has no
# use for conc_frag_scans!=0, so avoid looking at it for determinism
#sum(conc_frag_scans) as conc_frag_scans,
sum(conc_qd_frag_scans) as conc_qd_frag_scans,
sum(tot_commits) as tot_commits
from ndbinfo.operations_per_fragment opf
where fq_name like 'ndbinfo%' or parent_fq_name like 'ndbinfo%'
group by table_id, type, opf.fq_name, parent_fq_name
order by ifnull(parent_fq_name, opf.fq_name), opf.fq_name;
create table t1 (
a int not null,
b int not null,
c int not null,
d int not null,
t text not null,
primary key (b,a)
) engine=ndbcluster
partition by key(b,a) partitions 8;
create unique index ix1 on t1(d) using hash;
create table numbers(
i int
);
insert into numbers values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
insert into t1 select x1.i+x2.i*10, 1, 1+x1.i+x2.i*10, 1+x1.i+x2.i*10,
repeat('x', 512)
from numbers as x1, numbers as x2;
drop table numbers;
create table t2 (
a int,
b int,
primary key(a) using hash)
engine = ndb
partition by key(a) partitions 8;
insert into t2 values (1, 2);
insert into t2 values (2, 3);
insert into t2 values (3, 1);
select * from frag_ops;;
fq_name ndbinfo/def/NDB$BLOB_
parent_fq_name ndbinfo/def/t1
type User table
frag_count 16
tot_key_reads 0
tot_key_inserts 200
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 0
tot_key_refs 0
log_tot_key_attrinfo_bytes 16
tot_key_keyinfo_bytes 2400
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 0
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 0
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 200
fq_name ndbinfo/def/t1
parent_fq_name NULL
type User table
frag_count 16
tot_key_reads 0
tot_key_inserts 200
tot_key_updates 200
tot_key_writes 0
tot_key_deletes 0
tot_key_refs 0
log_tot_key_attrinfo_bytes 16
tot_key_keyinfo_bytes 3200
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 24
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 64
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 400
fq_name ix1$unique
parent_fq_name ndbinfo/def/t1
type Unique hash index
frag_count 16
tot_key_reads 0
tot_key_inserts 200
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 0
tot_key_refs 0
log_tot_key_attrinfo_bytes 12
tot_key_keyinfo_bytes 800
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 0
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 0
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 200
fq_name PRIMARY
parent_fq_name ndbinfo/def/t1
type Ordered index
frag_count 16
tot_key_reads 0
tot_key_inserts 0
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 0
tot_key_refs 0
log_tot_key_attrinfo_bytes 0
tot_key_keyinfo_bytes 0
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 0
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 0
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 0
fq_name ndbinfo/def/t2
parent_fq_name NULL
type User table
frag_count 16
tot_key_reads 0
tot_key_inserts 6
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 0
tot_key_refs 0
log_tot_key_attrinfo_bytes 7
tot_key_keyinfo_bytes 24
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 8
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 32
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 6
explain select count(*) from t1 where d<10;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 # ALL ix1 NULL NULL NULL 100 33.33 Using pushed condition (`ndbinfo`.`t1`.`d` < 10)
Warnings:
Note 1003 /* select#1 */ select count(0) AS `count(*)` from `ndbinfo`.`t1` where (`ndbinfo`.`t1`.`d` < 10)
select count(*) from t1 where d<10;
count(*)
9
explain select count(*) from t1 where b=1 and a<10;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 # range PRIMARY PRIMARY 8 NULL 3 100.00 Using pushed condition ((`ndbinfo`.`t1`.`b` = 1) and (`ndbinfo`.`t1`.`a` < 10)); Using MRR
Warnings:
Note 1003 /* select#1 */ select count(0) AS `count(*)` from `ndbinfo`.`t1` where ((`ndbinfo`.`t1`.`b` = 1) and (`ndbinfo`.`t1`.`a` < 10))
select count(*) from t1 where b=1 and a<10;
count(*)
10
explain select * from t1 where b=1 and a = -5;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 # eq_ref PRIMARY PRIMARY 8 const,const 1 100.00 NULL
Warnings:
Note 1003 /* select#1 */ select `ndbinfo`.`t1`.`a` AS `a`,`ndbinfo`.`t1`.`b` AS `b`,`ndbinfo`.`t1`.`c` AS `c`,`ndbinfo`.`t1`.`d` AS `d`,`ndbinfo`.`t1`.`t` AS `t` from `ndbinfo`.`t1` where ((`ndbinfo`.`t1`.`a` = -(5)) and (`ndbinfo`.`t1`.`b` = 1))
select * from t1 where b=1 and a = -5;
a b c d t
insert into t1 values (1,1,1,1,'');
ERROR 23000: Duplicate entry '1-1' for key 'PRIMARY'
replace t1 values (-1,-1,-1,-1,'');
replace t1 values (1,1,5,500,'');
update t1 set d = -d, t = repeat('a', 300) where b=1 and a > 90;
delete from t1 where a%30=0;
explain select count(*) from t1 as x1 join t1 as x2 on x1.c=x2.b;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE x1 # ALL NULL NULL NULL NULL 97 100.00 Parent of 2 pushed join@1
1 SIMPLE x2 # ref PRIMARY PRIMARY 4 ndbinfo.x1.c 1 100.00 Child of 'x1' in pushed join@1
Warnings:
Note 1003 /* select#1 */ select count(0) AS `count(*)` from `ndbinfo`.`t1` `x1` join `ndbinfo`.`t1` `x2` where (`ndbinfo`.`x2`.`b` = `ndbinfo`.`x1`.`c`)
select count(*) from t1 as x1 join t1 as x2 on x1.c=x2.b;
count(*)
1
tot_qd_frag_scans
4
select * from frag_ops;;
fq_name ndbinfo/def/NDB$BLOB_
parent_fq_name ndbinfo/def/t1
type User table
frag_count 16
tot_key_reads 1
tot_key_inserts 218
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 28
tot_key_refs 0
log_tot_key_attrinfo_bytes 16
tot_key_keyinfo_bytes 2964
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 268
tot_frag_scans 0
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 0
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 246
fq_name ndbinfo/def/t1
parent_fq_name NULL
type User table
frag_count 16
tot_key_reads 19
tot_key_inserts 205
tot_key_updates 236
tot_key_writes 0
tot_key_deletes 10
tot_key_refs 4
log_tot_key_attrinfo_bytes 16
tot_key_keyinfo_bytes 3760
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 4220
tot_frag_scans 56
tot_scan_rows_examined 306
tot_scan_rows_returned 215
tot_scan_bytes_returned 5468
tot_scan_prog_bytes 288
tot_scan_bound_bytes 0
tot_scan_inst_exec 305
conc_qd_frag_scans 0
tot_commits 450
fq_name ix1$unique
parent_fq_name ndbinfo/def/t1
type Unique hash index
frag_count 16
tot_key_reads 3
tot_key_inserts 222
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 28
tot_key_refs 3
log_tot_key_attrinfo_bytes 12
tot_key_keyinfo_bytes 1012
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 0
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 0
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 250
fq_name PRIMARY
parent_fq_name ndbinfo/def/t1
type Ordered index
frag_count 16
tot_key_reads 0
tot_key_inserts 0
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 0
tot_key_refs 0
log_tot_key_attrinfo_bytes 0
tot_key_keyinfo_bytes 0
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 32
tot_scan_rows_examined 20
tot_scan_rows_returned 20
tot_scan_bytes_returned 588
tot_scan_prog_bytes 576
tot_scan_bound_bytes 9888
tot_scan_inst_exec 58
conc_qd_frag_scans 0
tot_commits 0
fq_name ndbinfo/def/t2
parent_fq_name NULL
type User table
frag_count 16
tot_key_reads 0
tot_key_inserts 6
tot_key_updates 0
tot_key_writes 0
tot_key_deletes 0
tot_key_refs 0
log_tot_key_attrinfo_bytes 7
tot_key_keyinfo_bytes 24
tot_key_prog_bytes 0
tot_key_inst_exec 0
tot_key_bytes_returned 0
tot_frag_scans 8
tot_scan_rows_examined 0
tot_scan_rows_returned 0
tot_scan_bytes_returned 0
tot_scan_prog_bytes 32
tot_scan_bound_bytes 0
tot_scan_inst_exec 0
conc_qd_frag_scans 0
tot_commits 6
explain select count(*)
from t2 as tx, t2 as ty
where tx.a in (1,3,5)
and ty.a = tx.b;
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE tx # range PRIMARY PRIMARY 4 NULL 3 100.00 Parent of 2 pushed join@1; Using pushed condition ((`ndbinfo`.`tx`.`a` in (1,3,5)) and (`ndbinfo`.`tx`.`b` is not null)); Using MRR
1 SIMPLE ty # eq_ref PRIMARY PRIMARY 4 ndbinfo.tx.b 1 100.00 Child of 'tx' in pushed join@1
Warnings:
Note 1003 /* select#1 */ select count(0) AS `count(*)` from `ndbinfo`.`t2` `tx` join `ndbinfo`.`t2` `ty` where ((`ndbinfo`.`ty`.`a` = `ndbinfo`.`tx`.`b`) and (`ndbinfo`.`tx`.`a` in (1,3,5)))
create table save_counters as select * from frag_ops;
Warnings:
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
select count(*)
from t2 as tx, t2 as ty
where tx.a in (1,3,5)
and ty.a = tx.b;
count(*)
2
create view changes as select
new.fq_name,
new.parent_fq_name,
new.type,
new.frag_count,
new.tot_key_reads - old.tot_key_reads,
new.tot_key_inserts - old.tot_key_inserts,
new.tot_key_updates - old.tot_key_updates,
new.tot_key_writes - old.tot_key_writes,
new.tot_key_deletes - old.tot_key_deletes,
new.tot_key_refs - old.tot_key_refs,
new.log_tot_key_attrinfo_bytes - old.log_tot_key_attrinfo_bytes,
new.tot_key_keyinfo_bytes - old.tot_key_keyinfo_bytes,
new.tot_key_prog_bytes - old.tot_key_prog_bytes,
new.tot_key_inst_exec - old.tot_key_inst_exec,
new.tot_key_bytes_returned - old.tot_key_bytes_returned,
new.tot_frag_scans - old.tot_frag_scans,
new.tot_scan_rows_examined - old.tot_scan_rows_examined,
new.tot_scan_rows_returned - old.tot_scan_rows_returned,
new.tot_scan_bytes_returned - old.tot_scan_bytes_returned,
new.tot_scan_prog_bytes - old.tot_scan_prog_bytes,
new.tot_scan_bound_bytes - old.tot_scan_bound_bytes,
new.tot_scan_inst_exec - old.tot_scan_inst_exec,
new.tot_commits - old.tot_commits
from frag_ops as new, save_counters as old
where new.fq_name=old.fq_name and new.fq_name like '%t2';
select * from changes;
fq_name ndbinfo/def/t2
parent_fq_name NULL
type User table
frag_count 16
new.tot_key_reads - old.tot_key_reads 5
new.tot_key_inserts - old.tot_key_inserts 0
new.tot_key_updates - old.tot_key_updates 0
new.tot_key_writes - old.tot_key_writes 0
new.tot_key_deletes - old.tot_key_deletes 0
new.tot_key_refs - old.tot_key_refs 1
new.log_tot_key_attrinfo_bytes - old.log_tot_key_attrinfo_bytes 2
new.tot_key_keyinfo_bytes - old.tot_key_keyinfo_bytes 20
new.tot_key_prog_bytes - old.tot_key_prog_bytes 168
new.tot_key_inst_exec - old.tot_key_inst_exec 7
new.tot_key_bytes_returned - old.tot_key_bytes_returned 56
new.tot_frag_scans - old.tot_frag_scans 0
new.tot_scan_rows_examined - old.tot_scan_rows_examined 0
new.tot_scan_rows_returned - old.tot_scan_rows_returned 0
new.tot_scan_bytes_returned - old.tot_scan_bytes_returned 0
new.tot_scan_prog_bytes - old.tot_scan_prog_bytes 0
new.tot_scan_bound_bytes - old.tot_scan_bound_bytes 0
new.tot_scan_inst_exec - old.tot_scan_inst_exec 0
new.tot_commits - old.tot_commits 0
drop view changes;
drop table save_counters;
drop view frag_ops;
drop table t1;
drop table t2;
## Check that the new tables return data and exists.
select count(*) > 10 from ndb$blocks;
count(*) > 10
1
select param_number, param_name, param_description, param_default,
param_min, param_max from ndb$config_params
where param_name = "DataMemory";
param_number param_name param_description param_default param_min param_max
112 DataMemory Number bytes on each ndbd(DB) node allocated for storing data 102760448 1048576 1099511627776
select * from ndb$dict_obj_types where type_id < 3;
type_id type_name
1 System table
2 User table
select * from ndb$dbtc_apiconnect_state;
select * from ndb$dblqh_tcconnect_state;
## Check that the new views return data and exists.
select block_number from blocks where block_name = "DBTC";
block_number
245
select param_name from config_params where param_number = 101;
param_name
NoOfReplicas
select type_name from ndb$dict_obj_types where type_id = 3;
type_name
Unique hash index
## All tables in ndbinfo/ should now be using engine=NDBINFO
select count(*) from information_schema.tables
where table_schema = 'ndbinfo' and engine != 'ndbinfo';
count(*)
0
select * from ndbinfo.config_params order by param_number;
UPDATE ndb$config_params SET param_number=1 WHERE param_name = "NoOfReplicas";
ERROR HY000: Table 'ndb$config_params' is read only
UPDATE config_params SET param_number=1 WHERE param_name = "NoOfReplicas";
ERROR HY000: Table 'ndb$config_params' is read only
select node_id, param_name, config_param, config_value
from ndbinfo.config_values cv, ndbinfo.config_params cp
where cv.config_param = cp.param_number and
cp.param_name = 'MaxNoOfConcurrentTransactions'
order by node_id;
node_id param_name config_param config_value
1 MaxNoOfConcurrentTransactions 106 2048
2 MaxNoOfConcurrentTransactions 106 2048
select node_id, param_name, config_value
from ndbinfo.config_values cv, ndbinfo.config_params cp
where cv.config_param = cp.param_number and
cp.param_name = 'NodeId'
order by node_id;
node_id param_name config_value
1 NodeId 1
2 NodeId 2
select node_id, concat(config_value / 1024 / 1024, 'M') as DataMemory
from ndbinfo.config_values
where config_param = 112 /* DataMemory */
order by node_id;
node_id DataMemory
1 30M
2 30M
set @@ndbinfo_show_hidden=TRUE;
desc ndb$processes;
Field Type Null Key Default Extra
reporting_node_id int(10) unsigned YES NULL
node_id int(10) unsigned YES NULL
node_type int(10) unsigned YES NULL
node_version varchar(512) YES NULL
process_id int(10) unsigned YES NULL
angel_process_id int(10) unsigned YES NULL
process_name varchar(512) YES NULL
service_URI varchar(512) YES NULL
set @@ndbinfo_show_hidden=default;
show create table processes;
View Create View character_set_client collation_connection
processes CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `processes` AS select distinct `ndb$processes`.`node_id` AS `node_id`,(case `ndb$processes`.`node_type` when 0 then 'NDB' when 1 then 'API' when 2 then 'MGM' else NULL end) AS `node_type`,`ndb$processes`.`node_version` AS `node_version`,nullif(`ndb$processes`.`process_id`,0) AS `process_id`,nullif(`ndb$processes`.`angel_process_id`,0) AS `angel_process_id`,`ndb$processes`.`process_name` AS `process_name`,`ndb$processes`.`service_URI` AS `service_URI` from `ndb$processes` order by `ndb$processes`.`node_id` latin1 latin1_swedish_ci
SELECT reporting_node_id, node_id, node_type,
replace(replace(process_name,"-debug",""),".exe","") AS process_name
FROM ndb$processes
ORDER BY reporting_node_id, node_id;
reporting_node_id node_id node_type process_name
1 1 0 ndbmtd
1 3 2 ndb_mgmd
1 16 1 mysqld
1 32 1 mysqld
1 48 1 mysqld
1 49 1 mysqld
1 63 1 mysqld
1 127 1 mysqld
2 2 0 ndbmtd
2 3 2 ndb_mgmd
2 16 1 mysqld
2 32 1 mysqld
2 48 1 mysqld
2 49 1 mysqld
2 63 1 mysqld
2 127 1 mysqld
set @windows = convert(@@version_compile_os using latin1)
in ('Win32', 'Win64', 'Windows');
SELECT node_id,
node_type,
replace(replace(process_name,"-debug",""),".exe","") AS process_name,
if(process_id is null, "null", "not_null") as proc_id,
if(@windows AND node_type = 'API',
"null",
if(angel_process_id is null, "null", "not_null")) as angel_proc_id,
if(NOT @windows AND node_type = 'API',
"not_null",
if(angel_process_id is null, "null", "not_null")) as monitor_proc_id
FROM processes
ORDER BY node_id;
node_id node_type process_name proc_id angel_proc_id monitor_proc_id
1 NDB ndbmtd not_null not_null not_null
2 NDB ndbmtd not_null not_null not_null
3 MGM ndb_mgmd not_null null null
16 API mysqld not_null null not_null
32 API mysqld not_null null not_null
48 API mysqld not_null null not_null
49 API mysqld not_null null not_null
63 API mysqld not_null null not_null
127 API mysqld not_null null not_null
set @@ndbinfo_show_hidden=TRUE;
desc ndb$config_nodes;
Field Type Null Key Default Extra
reporting_node_id int(10) unsigned YES NULL
node_id int(10) unsigned YES NULL
node_type int(10) unsigned YES NULL
node_hostname varchar(512) YES NULL
set @@ndbinfo_show_hidden=default;
select view_definition, is_updatable, security_type
FROM information_schema.views
WHERE table_schema = 'ndbinfo' AND table_name = 'config_nodes';
VIEW_DEFINITION IS_UPDATABLE SECURITY_TYPE
select distinct `ndbinfo`.`ndb$config_nodes`.`node_id` AS `node_id`,(case `ndbinfo`.`ndb$config_nodes`.`node_type` when 0 then 'NDB' when 1 then 'API' when 2 then 'MGM' else NULL end) AS `node_type`,`ndbinfo`.`ndb$config_nodes`.`node_hostname` AS `node_hostname` from `ndbinfo`.`ndb$config_nodes` order by `ndbinfo`.`ndb$config_nodes`.`node_id` NO INVOKER
SELECT * from ndb$config_nodes order by reporting_node_id, node_id;
reporting_node_id node_id node_type node_hostname
1 1 0 localhost
1 2 0 localhost
1 3 2 localhost
1 16 1 localhost
1 32 1 localhost
1 48 1 localhost
1 49 1 localhost
1 63 1 localhost
1 127 1 localhost
1 192 1 localhost
1 228 1 localhost
1 229 1 localhost
1 230 1 localhost
1 231 1 localhost
1 232 1 localhost
1 233 1 localhost
1 255 1 localhost
2 1 0 localhost
2 2 0 localhost
2 3 2 localhost
2 16 1 localhost
2 32 1 localhost
2 48 1 localhost
2 49 1 localhost
2 63 1 localhost
2 127 1 localhost
2 192 1 localhost
2 228 1 localhost
2 229 1 localhost
2 230 1 localhost
2 231 1 localhost
2 232 1 localhost
2 233 1 localhost
2 255 1 localhost
SELECT node_type, count(*),
GROUP_CONCAT(node_id order by 1 asc separator " ") ids
FROM config_nodes group by node_type order by node_type;
node_type count(*) ids
API 14 16 32 48 49 63 127 192 228 229 230 231 232 233 255
MGM 1 3
NDB 2 1 2
#
# Bug#26048272 IMPLEMENT NDBINFO TABLE FOR LOOKUP OF ERROR CODES AND MESSAGES
#
select *
from ndbinfo.error_messages
where error_code = 920;
error_code error_description error_status error_classification
920 Row operation defined after refreshTuple() Permanent error Application error
select *
from ndbinfo.error_messages
where error_code = 2304;
error_code error_description error_status error_classification
2304 Array index out of range Temporary error, restart node Internal error, programming error or missing error message, please report a bug
select *
from ndbinfo.error_messages
where error_code = 5001;
error_code error_description error_status error_classification
5001 Usage error
select count(*) > 700
from ndbinfo.error_messages;
count(*) > 700
1