MDEV-31736: format_bytes implementation

This commit is contained in:
Ahmed Ibrahim 2023-04-08 06:14:14 +02:00 committed by Alexander Barkov
parent f24d08df96
commit a35f744d78
44 changed files with 600 additions and 117 deletions

View File

@ -1,6 +1,6 @@
# MDEV-19629: Implement MySQL 8.0 native functions: format_bytes(), format_pico_time() and ps_thread_id() # MDEV-19629: Implement MySQL 8.0 native functions: format_bytes(), format_pico_time() and ps_thread_id()
# #
# Tests for the Performance Schema native function format_pico_time() # Tests for the native function format_pico_time()
# #
SELECT format_pico_time(NULL); SELECT format_pico_time(NULL);
@ -211,3 +211,222 @@ format_pico_time(5e3)
SELECT format_pico_time(6e2); SELECT format_pico_time(6e2);
format_pico_time(6e2) format_pico_time(6e2)
600 ps 600 ps
#
# Start of 11.8 tests
#
#
# MDEV-19629 Tests for the native function format_bytes()
#
SELECT format_bytes(NULL);
format_bytes(NULL)
NULL
SELECT format_bytes(0);
format_bytes(0)
0 bytes
SELECT format_bytes(1);
format_bytes(1)
1 bytes
SELECT format_bytes(1023);
format_bytes(1023)
1023 bytes
SELECT format_bytes(1024);
format_bytes(1024)
1.00 KiB
SELECT format_bytes(1025);
format_bytes(1025)
1.00 KiB
SELECT format_bytes(1024 * 1024 - 200);
format_bytes(1024 * 1024 - 200)
1023.80 KiB
SELECT format_bytes(1024 * 1024 - 1);
format_bytes(1024 * 1024 - 1)
1024.00 KiB
SELECT format_bytes(1024 * 1024);
format_bytes(1024 * 1024)
1.00 MiB
SELECT format_bytes(1024 * 1024 + 1);
format_bytes(1024 * 1024 + 1)
1.00 MiB
SELECT format_bytes(1024 * 1024 + 200);
format_bytes(1024 * 1024 + 200)
1.00 MiB
SELECT format_bytes(1024 * 1024 * 1024 - 1);
format_bytes(1024 * 1024 * 1024 - 1)
1024.00 MiB
SELECT format_bytes(1024 * 1024 * 1024);
format_bytes(1024 * 1024 * 1024)
1.00 GiB
SELECT format_bytes(1024 * 1024 * 1024 + 1);
format_bytes(1024 * 1024 * 1024 + 1)
1.00 GiB
SELECT format_bytes(1024 * 1024 * 1024 * 1024 - 1);
format_bytes(1024 * 1024 * 1024 * 1024 - 1)
1024.00 GiB
SELECT format_bytes(1024 * 1024 * 1024 * 1024);
format_bytes(1024 * 1024 * 1024 * 1024)
1.00 TiB
SELECT format_bytes(1024 * 1024 * 1024 * 1024 + 1);
format_bytes(1024 * 1024 * 1024 * 1024 + 1)
1.00 TiB
SELECT format_bytes(1024 * 1024 * 1024 * 1024 * 1024 - 1);
format_bytes(1024 * 1024 * 1024 * 1024 * 1024 - 1)
1024.00 TiB
SELECT format_bytes(1024 * 1024 * 1024 * 1024 * 1024);
format_bytes(1024 * 1024 * 1024 * 1024 * 1024)
1.00 PiB
SELECT format_bytes(1024 * 1024 * 1024 * 1024 * 1024 + 1);
format_bytes(1024 * 1024 * 1024 * 1024 * 1024 + 1)
1.00 PiB
SELECT format_bytes(power(2, 63));
format_bytes(power(2, 63))
8.00 EiB
## 1024^6 Eib
SELECT format_bytes(1152921504606846976-1);
format_bytes(1152921504606846976-1)
1.00 EiB
SELECT format_bytes(1180591620717411434000);
format_bytes(1180591620717411434000)
1024.00 EiB
## Negative values are ok
SELECT format_bytes(1024 * 1024 * -1);
format_bytes(1024 * 1024 * -1)
-1.00 MiB
## Force exponent format
SELECT format_bytes(118059162071741143500099);
format_bytes(118059162071741143500099)
1.02e+05 EiB
SELECT format_bytes(-118059162071741143500099);
format_bytes(-118059162071741143500099)
-1.02e+05 EiB
SELECT format_bytes(pow(2,400));
format_bytes(pow(2,400))
2.24e+102 EiB
## Valid hybrid number
SELECT format_bytes((pow(2, 63) - 1) * 2 + 1);
format_bytes((pow(2, 63) - 1) * 2 + 1)
16.00 EiB
## Text input
SELECT format_bytes("foo");
format_bytes("foo")
0 bytes
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'foo'
SELECT format_bytes("");
format_bytes("")
0 bytes
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT format_bytes("118059162071741143500099");
format_bytes("118059162071741143500099")
1.02e+05 EiB
SELECT format_bytes("-118059162071741143500099");
format_bytes("-118059162071741143500099")
-1.02e+05 EiB
## Recognizes up to first non-numeric
SELECT format_bytes("40000 * 2000");
format_bytes("40000 * 2000")
39.06 KiB
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '40000 * 2000'
SELECT format_bytes("40000 foo 2000");
format_bytes("40000 foo 2000")
39.06 KiB
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '40000 foo 2000'
## Aggregate functions
USE test;
CREATE TABLE memory_counts (id VARCHAR(10), bytes BIGINT UNSIGNED DEFAULT NULL) DEFAULT CHARSET = utf8mb4;
INSERT INTO memory_counts VALUES ('Bytes', 512);
INSERT INTO memory_counts VALUES ('10 KiB', 10 * 1024);
INSERT INTO memory_counts VALUES ('20 MiB', 20 * pow(1024,2));
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
sum(bytes) format_bytes(sum(bytes))
20982272 20.01 MiB
INSERT INTO memory_counts VALUES ('30 GiB', 30 * pow(1024,3));
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
sum(bytes) format_bytes(sum(bytes))
32233236992 30.02 GiB
INSERT INTO memory_counts VALUES ('40 TiB', 40 * pow(1024,4));
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
sum(bytes) format_bytes(sum(bytes))
44012698348032 40.03 TiB
INSERT INTO memory_counts VALUES ('50 PiB', 50 * pow(1024,5));
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
sum(bytes) format_bytes(sum(bytes))
56339008040479232 50.04 PiB
INSERT INTO memory_counts VALUES ('1 EiB', pow(1024,6));
SELECT id, format_bytes(bytes), bytes FROM memory_counts;
id format_bytes(bytes) bytes
Bytes 512 bytes 512
10 KiB 10.00 KiB 10240
20 MiB 20.00 MiB 20971520
30 GiB 30.00 GiB 32212254720
40 TiB 40.00 TiB 43980465111040
50 PiB 50.00 PiB 56294995342131200
1 EiB 1.00 EiB 1152921504606846976
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
sum(bytes) format_bytes(sum(bytes))
1209260512647326208 1.05 EiB
SELECT avg(bytes), format_bytes(avg(bytes)) FROM memory_counts;
avg(bytes) format_bytes(avg(bytes))
172751501806760886.8571 153.43 PiB
SELECT max(bytes), format_bytes(max(bytes)) FROM memory_counts;
max(bytes) format_bytes(max(bytes))
1152921504606846976 1.00 EiB
SELECT min(bytes), format_bytes(min(bytes)) FROM memory_counts;
min(bytes) format_bytes(min(bytes))
512 512 bytes
DROP TABLE memory_counts;
#
# End of 11.8 tests
#

View File

@ -2,7 +2,7 @@
--echo # MDEV-19629: Implement MySQL 8.0 native functions: format_bytes(), format_pico_time() and ps_thread_id() --echo # MDEV-19629: Implement MySQL 8.0 native functions: format_bytes(), format_pico_time() and ps_thread_id()
--echo # --echo #
--echo # Tests for the Performance Schema native function format_pico_time() --echo # Tests for the native function format_pico_time()
--echo # --echo #
--echo --echo
@ -118,3 +118,138 @@ SELECT format_pico_time(4e6);
SELECT format_pico_time(5e3); SELECT format_pico_time(5e3);
--echo --echo
SELECT format_pico_time(6e2); SELECT format_pico_time(6e2);
--echo #
--echo # Start of 11.8 tests
--echo #
--echo #
--echo # MDEV-19629 Tests for the native function format_bytes()
--echo #
--echo
SELECT format_bytes(NULL);
--echo
SELECT format_bytes(0);
--echo
SELECT format_bytes(1);
--echo
SELECT format_bytes(1023);
--echo
SELECT format_bytes(1024);
--echo
SELECT format_bytes(1025);
--echo
SELECT format_bytes(1024 * 1024 - 200);
--echo
SELECT format_bytes(1024 * 1024 - 1);
--echo
SELECT format_bytes(1024 * 1024);
--echo
SELECT format_bytes(1024 * 1024 + 1);
--echo
SELECT format_bytes(1024 * 1024 + 200);
--echo
SELECT format_bytes(1024 * 1024 * 1024 - 1);
--echo
SELECT format_bytes(1024 * 1024 * 1024);
--echo
SELECT format_bytes(1024 * 1024 * 1024 + 1);
--echo
SELECT format_bytes(1024 * 1024 * 1024 * 1024 - 1);
--echo
SELECT format_bytes(1024 * 1024 * 1024 * 1024);
--echo
SELECT format_bytes(1024 * 1024 * 1024 * 1024 + 1);
--echo
SELECT format_bytes(1024 * 1024 * 1024 * 1024 * 1024 - 1);
--echo
SELECT format_bytes(1024 * 1024 * 1024 * 1024 * 1024);
--echo
SELECT format_bytes(1024 * 1024 * 1024 * 1024 * 1024 + 1);
--echo
SELECT format_bytes(power(2, 63));
--echo
--echo ## 1024^6 Eib
SELECT format_bytes(1152921504606846976-1);
--echo
SELECT format_bytes(1180591620717411434000);
--echo
--echo ## Negative values are ok
SELECT format_bytes(1024 * 1024 * -1);
--echo
--echo ## Force exponent format
SELECT format_bytes(118059162071741143500099);
--echo
SELECT format_bytes(-118059162071741143500099);
--echo
SELECT format_bytes(pow(2,400));
--echo
--echo ## Valid hybrid number
SELECT format_bytes((pow(2, 63) - 1) * 2 + 1);
--echo
--echo ## Text input
SELECT format_bytes("foo");
--echo
SELECT format_bytes("");
--echo
SELECT format_bytes("118059162071741143500099");
--echo
SELECT format_bytes("-118059162071741143500099");
--echo
--echo ## Recognizes up to first non-numeric
SELECT format_bytes("40000 * 2000");
--echo
SELECT format_bytes("40000 foo 2000");
--echo ## Aggregate functions
USE test;
--echo
CREATE TABLE memory_counts (id VARCHAR(10), bytes BIGINT UNSIGNED DEFAULT NULL) DEFAULT CHARSET = utf8mb4;
--echo
# Max BIGINT unsigned is 18 446 744 073 709 551 615
INSERT INTO memory_counts VALUES ('Bytes', 512);
INSERT INTO memory_counts VALUES ('10 KiB', 10 * 1024);
INSERT INTO memory_counts VALUES ('20 MiB', 20 * pow(1024,2));
--echo
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
--echo
INSERT INTO memory_counts VALUES ('30 GiB', 30 * pow(1024,3));
--echo
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
--echo
INSERT INTO memory_counts VALUES ('40 TiB', 40 * pow(1024,4));
--echo
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
--echo
INSERT INTO memory_counts VALUES ('50 PiB', 50 * pow(1024,5));
--echo
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
--echo
INSERT INTO memory_counts VALUES ('1 EiB', pow(1024,6));
--echo
SELECT id, format_bytes(bytes), bytes FROM memory_counts;
--echo
SELECT sum(bytes), format_bytes(sum(bytes)) FROM memory_counts;
--echo
SELECT avg(bytes), format_bytes(avg(bytes)) FROM memory_counts;
--echo
SELECT max(bytes), format_bytes(max(bytes)) FROM memory_counts;
--echo
SELECT min(bytes), format_bytes(min(bytes)) FROM memory_counts;
--echo
DROP TABLE memory_counts;
--echo #
--echo # End of 11.8 tests
--echo #

View File

@ -1,6 +1,8 @@
SELECT sys.format_bytes(NULL); SELECT sys.format_bytes(NULL);
sys.format_bytes(NULL) sys.format_bytes(NULL)
NULL NULL
Warnings:
Note 1585 This function 'format_bytes' has the same name as a native function
SELECT sys.format_bytes(1); SELECT sys.format_bytes(1);
sys.format_bytes(1) sys.format_bytes(1)
1 bytes 1 bytes

View File

@ -10,8 +10,8 @@ file_io_latency varchar(12) YES NULL
current_connections decimal(41,0) YES NULL current_connections decimal(41,0) YES NULL
total_connections decimal(41,0) YES NULL total_connections decimal(41,0) YES NULL
unique_users bigint(21) NO 0 unique_users bigint(21) NO 0
current_memory text YES NULL current_memory varchar(14) YES NULL
total_memory_allocated text YES NULL total_memory_allocated varchar(14) YES NULL
SELECT * FROM sys.host_summary; SELECT * FROM sys.host_summary;
DESC sys.x$host_summary; DESC sys.x$host_summary;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -1,8 +1,8 @@
DESC sys.innodb_buffer_stats_by_schema; DESC sys.innodb_buffer_stats_by_schema;
Field Type Null Key Default Extra Field Type Null Key Default Extra
object_schema text YES NULL object_schema text YES NULL
allocated text YES NULL allocated varchar(14) YES NULL
data text YES NULL data varchar(14) YES NULL
pages bigint(21) NO 0 pages bigint(21) NO 0
pages_hashed bigint(21) NO 0 pages_hashed bigint(21) NO 0
pages_old bigint(21) NO 0 pages_old bigint(21) NO 0

View File

@ -2,8 +2,8 @@ DESC sys.innodb_buffer_stats_by_table;
Field Type Null Key Default Extra Field Type Null Key Default Extra
object_schema text YES NULL object_schema text YES NULL
object_name text YES NULL object_name text YES NULL
allocated text YES NULL allocated varchar(14) YES NULL
data text YES NULL data varchar(14) YES NULL
pages bigint(21) NO 0 pages bigint(21) NO 0
pages_hashed bigint(21) NO 0 pages_hashed bigint(21) NO 0
pages_old bigint(21) NO 0 pages_old bigint(21) NO 0

View File

@ -2,12 +2,12 @@ DESC sys.io_global_by_file_by_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra
file varchar(512) YES NULL file varchar(512) YES NULL
count_read bigint(20) unsigned NO NULL count_read bigint(20) unsigned NO NULL
total_read text YES NULL total_read varchar(14) YES NULL
avg_read text YES NULL avg_read varchar(14) YES NULL
count_write bigint(20) unsigned NO NULL count_write bigint(20) unsigned NO NULL
total_written text YES NULL total_written varchar(14) YES NULL
avg_write text YES NULL avg_write varchar(14) YES NULL
total text YES NULL total varchar(14) YES NULL
write_pct decimal(26,2) NO 0.00 write_pct decimal(26,2) NO 0.00
SELECT * FROM sys.io_global_by_file_by_bytes; SELECT * FROM sys.io_global_by_file_by_bytes;
DESC sys.x$io_global_by_file_by_bytes; DESC sys.x$io_global_by_file_by_bytes;

View File

@ -7,12 +7,12 @@ min_latency varchar(12) YES NULL
avg_latency varchar(12) YES NULL avg_latency varchar(12) YES NULL
max_latency varchar(12) YES NULL max_latency varchar(12) YES NULL
count_read bigint(20) unsigned NO NULL count_read bigint(20) unsigned NO NULL
total_read text YES NULL total_read varchar(14) YES NULL
avg_read text YES NULL avg_read varchar(14) YES NULL
count_write bigint(20) unsigned NO NULL count_write bigint(20) unsigned NO NULL
total_written text YES NULL total_written varchar(14) YES NULL
avg_written text YES NULL avg_written varchar(14) YES NULL
total_requested text YES NULL total_requested varchar(14) YES NULL
SELECT * FROM sys.io_global_by_wait_by_bytes; SELECT * FROM sys.io_global_by_wait_by_bytes;
DESC sys.x$io_global_by_wait_by_bytes; DESC sys.x$io_global_by_wait_by_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -9,11 +9,11 @@ read_latency varchar(12) YES NULL
write_latency varchar(12) YES NULL write_latency varchar(12) YES NULL
misc_latency varchar(12) YES NULL misc_latency varchar(12) YES NULL
count_read bigint(20) unsigned NO NULL count_read bigint(20) unsigned NO NULL
total_read text YES NULL total_read varchar(14) YES NULL
avg_read text YES NULL avg_read varchar(14) YES NULL
count_write bigint(20) unsigned NO NULL count_write bigint(20) unsigned NO NULL
total_written text YES NULL total_written varchar(14) YES NULL
avg_written text YES NULL avg_written varchar(14) YES NULL
SELECT * FROM sys.io_global_by_wait_by_latency; SELECT * FROM sys.io_global_by_wait_by_latency;
DESC sys.x$io_global_by_wait_by_latency; DESC sys.x$io_global_by_wait_by_latency;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -4,7 +4,7 @@ thread varchar(214) YES NULL
file varchar(512) YES NULL file varchar(512) YES NULL
latency varchar(12) YES NULL latency varchar(12) YES NULL
operation varchar(32) NO NULL operation varchar(32) NO NULL
requested text YES NULL requested varchar(14) YES NULL
SELECT * FROM sys.latest_file_io; SELECT * FROM sys.latest_file_io;
DESC sys.x$latest_file_io; DESC sys.x$latest_file_io;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -2,10 +2,10 @@ DESC sys.memory_by_host_by_current_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra
host varchar(60) YES NULL host varchar(60) YES NULL
current_count_used decimal(41,0) YES NULL current_count_used decimal(41,0) YES NULL
current_allocated text YES NULL current_allocated varchar(14) YES NULL
current_avg_alloc text YES NULL current_avg_alloc varchar(14) YES NULL
current_max_alloc text YES NULL current_max_alloc varchar(14) YES NULL
total_allocated text YES NULL total_allocated varchar(14) YES NULL
SELECT * FROM sys.memory_by_host_by_current_bytes; SELECT * FROM sys.memory_by_host_by_current_bytes;
DESC sys.x$memory_by_host_by_current_bytes; DESC sys.x$memory_by_host_by_current_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -3,10 +3,10 @@ Field Type Null Key Default Extra
thread_id bigint(20) unsigned NO NULL thread_id bigint(20) unsigned NO NULL
user varchar(384) YES NULL user varchar(384) YES NULL
current_count_used decimal(41,0) YES NULL current_count_used decimal(41,0) YES NULL
current_allocated text YES NULL current_allocated varchar(14) YES NULL
current_avg_alloc text YES NULL current_avg_alloc varchar(14) YES NULL
current_max_alloc text YES NULL current_max_alloc varchar(14) YES NULL
total_allocated text YES NULL total_allocated varchar(14) YES NULL
SELECT * FROM sys.memory_by_thread_by_current_bytes; SELECT * FROM sys.memory_by_thread_by_current_bytes;
DESC sys.x$memory_by_thread_by_current_bytes; DESC sys.x$memory_by_thread_by_current_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -2,10 +2,10 @@ DESC sys.memory_by_user_by_current_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra
user varchar(32) YES NULL user varchar(32) YES NULL
current_count_used decimal(41,0) YES NULL current_count_used decimal(41,0) YES NULL
current_allocated text YES NULL current_allocated varchar(14) YES NULL
current_avg_alloc text YES NULL current_avg_alloc varchar(14) YES NULL
current_max_alloc text YES NULL current_max_alloc varchar(14) YES NULL
total_allocated text YES NULL total_allocated varchar(14) YES NULL
SELECT * FROM sys.memory_by_user_by_current_bytes; SELECT * FROM sys.memory_by_user_by_current_bytes;
DESC sys.x$memory_by_user_by_current_bytes; DESC sys.x$memory_by_user_by_current_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -2,11 +2,11 @@ DESC sys.memory_global_by_current_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra
event_name varchar(128) NO NULL event_name varchar(128) NO NULL
current_count bigint(20) NO NULL current_count bigint(20) NO NULL
current_alloc text YES NULL current_alloc varchar(14) YES NULL
current_avg_alloc text YES NULL current_avg_alloc varchar(14) YES NULL
high_count bigint(20) NO NULL high_count bigint(20) NO NULL
high_alloc text YES NULL high_alloc varchar(14) YES NULL
high_avg_alloc text YES NULL high_avg_alloc varchar(14) YES NULL
SELECT * FROM sys.memory_global_by_current_bytes; SELECT * FROM sys.memory_global_by_current_bytes;
DESC sys.x$memory_global_by_current_bytes; DESC sys.x$memory_global_by_current_bytes;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -1,6 +1,6 @@
DESC sys.memory_global_total; DESC sys.memory_global_total;
Field Type Null Key Default Extra Field Type Null Key Default Extra
total_allocated text YES NULL total_allocated varchar(14) YES NULL
SELECT * FROM sys.memory_global_total; SELECT * FROM sys.memory_global_total;
DESC sys.x$memory_global_total; DESC sys.x$memory_global_total;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -19,7 +19,7 @@ tmp_disk_tables bigint(20) unsigned YES NULL
full_scan varchar(3) YES NULL full_scan varchar(3) YES NULL
last_statement longtext YES NULL last_statement longtext YES NULL
last_statement_latency varchar(12) YES NULL last_statement_latency varchar(12) YES NULL
current_memory text YES NULL current_memory varchar(14) YES NULL
last_wait varchar(128) YES NULL last_wait varchar(128) YES NULL
last_wait_latency varchar(13) YES NULL last_wait_latency varchar(13) YES NULL
source varchar(64) YES NULL source varchar(64) YES NULL

View File

@ -12,10 +12,10 @@ update_latency varchar(12) YES NULL
rows_deleted bigint(20) unsigned NO NULL rows_deleted bigint(20) unsigned NO NULL
delete_latency varchar(12) YES NULL delete_latency varchar(12) YES NULL
io_read_requests decimal(42,0) YES NULL io_read_requests decimal(42,0) YES NULL
io_read text YES NULL io_read varchar(14) YES NULL
io_read_latency varchar(12) YES NULL io_read_latency varchar(12) YES NULL
io_write_requests decimal(42,0) YES NULL io_write_requests decimal(42,0) YES NULL
io_write text YES NULL io_write varchar(14) YES NULL
io_write_latency varchar(12) YES NULL io_write_latency varchar(12) YES NULL
io_misc_requests decimal(42,0) YES NULL io_misc_requests decimal(42,0) YES NULL
io_misc_latency varchar(12) YES NULL io_misc_latency varchar(12) YES NULL

View File

@ -11,16 +11,16 @@ update_latency varchar(12) YES NULL
rows_deleted bigint(20) unsigned NO NULL rows_deleted bigint(20) unsigned NO NULL
delete_latency varchar(12) YES NULL delete_latency varchar(12) YES NULL
io_read_requests decimal(42,0) YES NULL io_read_requests decimal(42,0) YES NULL
io_read text YES NULL io_read varchar(14) YES NULL
io_read_latency varchar(12) YES NULL io_read_latency varchar(12) YES NULL
io_write_requests decimal(42,0) YES NULL io_write_requests decimal(42,0) YES NULL
io_write text YES NULL io_write varchar(14) YES NULL
io_write_latency varchar(12) YES NULL io_write_latency varchar(12) YES NULL
io_misc_requests decimal(42,0) YES NULL io_misc_requests decimal(42,0) YES NULL
io_misc_latency varchar(12) YES NULL io_misc_latency varchar(12) YES NULL
innodb_buffer_allocated text YES NULL innodb_buffer_allocated varchar(14) YES NULL
innodb_buffer_data text YES NULL innodb_buffer_data varchar(14) YES NULL
innodb_buffer_free text YES NULL innodb_buffer_free varchar(14) YES NULL
innodb_buffer_pages bigint(21) YES 0 innodb_buffer_pages bigint(21) YES 0
innodb_buffer_pages_hashed bigint(21) YES 0 innodb_buffer_pages_hashed bigint(21) YES 0
innodb_buffer_pages_old bigint(21) YES 0 innodb_buffer_pages_old bigint(21) YES 0

View File

@ -19,7 +19,7 @@ tmp_disk_tables bigint(20) unsigned YES NULL
full_scan varchar(3) YES NULL full_scan varchar(3) YES NULL
last_statement longtext YES NULL last_statement longtext YES NULL
last_statement_latency varchar(12) YES NULL last_statement_latency varchar(12) YES NULL
current_memory text YES NULL current_memory varchar(14) YES NULL
last_wait varchar(128) YES NULL last_wait varchar(128) YES NULL
last_wait_latency varchar(13) YES NULL last_wait_latency varchar(13) YES NULL
source varchar(64) YES NULL source varchar(64) YES NULL

View File

@ -10,8 +10,8 @@ file_io_latency varchar(12) YES NULL
current_connections decimal(41,0) YES NULL current_connections decimal(41,0) YES NULL
total_connections decimal(41,0) YES NULL total_connections decimal(41,0) YES NULL
unique_hosts bigint(21) NO 0 unique_hosts bigint(21) NO 0
current_memory text YES NULL current_memory varchar(14) YES NULL
total_memory_allocated text YES NULL total_memory_allocated varchar(14) YES NULL
SELECT * FROM sys.user_summary; SELECT * FROM sys.user_summary;
DESC sys.x$user_summary; DESC sys.x$user_summary;
Field Type Null Key Default Extra Field Type Null Key Default Extra

View File

@ -2,6 +2,13 @@
# Tests for sys schema # Tests for sys schema
# Verify the sys.format_bytes() function perfoms as expected # Verify the sys.format_bytes() function perfoms as expected
# Various protocols display ER_NATIVE_FCT_NAME_COLLISION very differently.
# Disable all of them.
--disable_ps_protocol
--disable_cursor_protocol
--disable_view_protocol
# Passing NULL/nothing should return NULL # Passing NULL/nothing should return NULL
SELECT sys.format_bytes(NULL); SELECT sys.format_bytes(NULL);

View File

@ -3538,7 +3538,7 @@ TEXT
##### Example ##### Example
```SQL ```SQL
mariadb> SELECT sys.format_bytes(2348723492723746) AS size; mariadb> SELECT format_bytes(2348723492723746) AS size;
+----------+ +----------+
| size | | size |
+----------+ +----------+
@ -3546,7 +3546,7 @@ mariadb> SELECT sys.format_bytes(2348723492723746) AS size;
+----------+ +----------+
1 row in set (0.00 sec) 1 row in set (0.00 sec)
mariadb> SELECT sys.format_bytes(2348723492723) AS size; mariadb> SELECT format_bytes(2348723492723) AS size;
+----------+ +----------+
| size | | size |
+----------+ +----------+
@ -3554,7 +3554,7 @@ mariadb> SELECT sys.format_bytes(2348723492723) AS size;
+----------+ +----------+
1 row in set (0.00 sec) 1 row in set (0.00 sec)
mariadb> SELECT sys.format_bytes(23487234) AS size; mariadb> SELECT format_bytes(23487234) AS size;
+-----------+ +-----------+
| size | | size |
+-----------+ +-----------+

View File

@ -353,12 +353,12 @@ BEGIN
(''io_global_by_file_by_bytes'', ''total''), (''io_global_by_file_by_bytes'', ''total''),
(''io_global_by_wait_by_bytes'', ''total_requested'') (''io_global_by_wait_by_bytes'', ''total_requested'')
) )
THEN CONCAT(''sys.format_bytes('', COLUMN_NAME, '') AS '', COLUMN_NAME) THEN CONCAT(''format_bytes('', COLUMN_NAME, '') AS '', COLUMN_NAME)
WHEN SUBSTRING(COLUMN_NAME, -8) = ''_latency'' WHEN SUBSTRING(COLUMN_NAME, -8) = ''_latency''
THEN CONCAT(''format_pico_time('', COLUMN_NAME, '') AS '', COLUMN_NAME) THEN CONCAT(''format_pico_time('', COLUMN_NAME, '') AS '', COLUMN_NAME)
WHEN SUBSTRING(COLUMN_NAME, -7) = ''_memory'' OR SUBSTRING(COLUMN_NAME, -17) = ''_memory_allocated'' WHEN SUBSTRING(COLUMN_NAME, -7) = ''_memory'' OR SUBSTRING(COLUMN_NAME, -17) = ''_memory_allocated''
OR ((SUBSTRING(COLUMN_NAME, -5) = ''_read'' OR SUBSTRING(COLUMN_NAME, -8) = ''_written'' OR SUBSTRING(COLUMN_NAME, -6) = ''_write'') AND SUBSTRING(COLUMN_NAME, 1, 6) <> ''COUNT_'') OR ((SUBSTRING(COLUMN_NAME, -5) = ''_read'' OR SUBSTRING(COLUMN_NAME, -8) = ''_written'' OR SUBSTRING(COLUMN_NAME, -6) = ''_write'') AND SUBSTRING(COLUMN_NAME, 1, 6) <> ''COUNT_'')
THEN CONCAT(''sys.format_bytes('', COLUMN_NAME, '') AS '', COLUMN_NAME) THEN CONCAT(''format_bytes('', COLUMN_NAME, '') AS '', COLUMN_NAME)
ELSE COLUMN_NAME ELSE COLUMN_NAME
END END
ORDER BY ORDINAL_POSITION ORDER BY ORDINAL_POSITION
@ -383,7 +383,7 @@ BEGIN
(''io_global_by_file_by_bytes'', ''total''), (''io_global_by_file_by_bytes'', ''total''),
(''io_global_by_wait_by_bytes'', ''total_requested'') (''io_global_by_wait_by_bytes'', ''total_requested'')
) )
THEN CONCAT(''sys.format_bytes(e.'', COLUMN_NAME, ''-IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME) THEN CONCAT(''format_bytes(e.'', COLUMN_NAME, ''-IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME)
WHEN SUBSTRING(COLUMN_NAME, 1, 4) IN (''max_'', ''min_'') AND SUBSTRING(COLUMN_NAME, -8) = ''_latency'' WHEN SUBSTRING(COLUMN_NAME, 1, 4) IN (''max_'', ''min_'') AND SUBSTRING(COLUMN_NAME, -8) = ''_latency''
THEN CONCAT(''format_pico_time(e.'', COLUMN_NAME, '') AS '', COLUMN_NAME) THEN CONCAT(''format_pico_time(e.'', COLUMN_NAME, '') AS '', COLUMN_NAME)
WHEN COLUMN_NAME = ''avg_latency'' WHEN COLUMN_NAME = ''avg_latency''
@ -395,12 +395,12 @@ BEGIN
WHEN SUBSTRING(COLUMN_NAME, -8) = ''_latency'' WHEN SUBSTRING(COLUMN_NAME, -8) = ''_latency''
THEN CONCAT(''format_pico_time(e.'', COLUMN_NAME, '' - IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME) THEN CONCAT(''format_pico_time(e.'', COLUMN_NAME, '' - IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME)
WHEN COLUMN_NAME IN (''avg_read'', ''avg_write'', ''avg_written'') WHEN COLUMN_NAME IN (''avg_read'', ''avg_write'', ''avg_written'')
THEN CONCAT(''sys.format_bytes(IFNULL((e.total_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''written''), ''-IFNULL(s.total_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''written''), '', 0))'', THEN CONCAT(''format_bytes(IFNULL((e.total_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''written''), ''-IFNULL(s.total_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''written''), '', 0))'',
''/NULLIF(e.count_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''write''), ''-IFNULL(s.count_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''write''), '', 0), 0), 0)) AS '', ''/NULLIF(e.count_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''write''), ''-IFNULL(s.count_'', IF(COLUMN_NAME = ''avg_read'', ''read'', ''write''), '', 0), 0), 0)) AS '',
COLUMN_NAME) COLUMN_NAME)
WHEN SUBSTRING(COLUMN_NAME, -7) = ''_memory'' OR SUBSTRING(COLUMN_NAME, -17) = ''_memory_allocated'' WHEN SUBSTRING(COLUMN_NAME, -7) = ''_memory'' OR SUBSTRING(COLUMN_NAME, -17) = ''_memory_allocated''
OR ((SUBSTRING(COLUMN_NAME, -5) = ''_read'' OR SUBSTRING(COLUMN_NAME, -8) = ''_written'' OR SUBSTRING(COLUMN_NAME, -6) = ''_write'') AND SUBSTRING(COLUMN_NAME, 1, 6) <> ''COUNT_'') OR ((SUBSTRING(COLUMN_NAME, -5) = ''_read'' OR SUBSTRING(COLUMN_NAME, -8) = ''_written'' OR SUBSTRING(COLUMN_NAME, -6) = ''_write'') AND SUBSTRING(COLUMN_NAME, 1, 6) <> ''COUNT_'')
THEN CONCAT(''sys.format_bytes(e.'', COLUMN_NAME, '' - IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME) THEN CONCAT(''format_bytes(e.'', COLUMN_NAME, '' - IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME)
ELSE CONCAT(''(e.'', COLUMN_NAME, '' - IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME) ELSE CONCAT(''(e.'', COLUMN_NAME, '' - IFNULL(s.'', COLUMN_NAME, '', 0)) AS '', COLUMN_NAME)
END END
ORDER BY ORDINAL_POSITION ORDER BY ORDINAL_POSITION
@ -785,7 +785,7 @@ SELECT ''UNIX_TIMESTAMP()'' AS Variable_name, ROUND(UNIX_TIMESTAMP(NOW(3)), 3) A
EXECUTE stmt_ndbcluster_status; EXECUTE stmt_ndbcluster_status;
SELECT 'ndbinfo.memoryusage' AS 'The following output is:'; SELECT 'ndbinfo.memoryusage' AS 'The following output is:';
SELECT node_id, memory_type, sys.format_bytes(used) AS used, used_pages, sys.format_bytes(total) AS total, total_pages, SELECT node_id, memory_type, format_bytes(used) AS used, used_pages, format_bytes(total) AS total, total_pages,
ROUND(100*(used/total), 2) AS 'Used %' ROUND(100*(used/total), 2) AS 'Used %'
FROM ndbinfo.memoryusage; FROM ndbinfo.memoryusage;
@ -870,9 +870,9 @@ SELECT ''UNIX_TIMESTAMP()'' AS Variable_name, ROUND(UNIX_TIMESTAMP(NOW(3)), 3) A
IF (@sys.diagnostics.allow_i_s_tables = 'ON') THEN IF (@sys.diagnostics.allow_i_s_tables = 'ON') THEN
SELECT 'Storage Engine Usage' AS 'The following output is:'; SELECT 'Storage Engine Usage' AS 'The following output is:';
SELECT ENGINE, COUNT(*) AS NUM_TABLES, SELECT ENGINE, COUNT(*) AS NUM_TABLES,
sys.format_bytes(SUM(DATA_LENGTH)) AS DATA_LENGTH, format_bytes(SUM(DATA_LENGTH)) AS DATA_LENGTH,
sys.format_bytes(SUM(INDEX_LENGTH)) AS INDEX_LENGTH, format_bytes(SUM(INDEX_LENGTH)) AS INDEX_LENGTH,
sys.format_bytes(SUM(DATA_LENGTH+INDEX_LENGTH)) AS TOTAL format_bytes(SUM(DATA_LENGTH+INDEX_LENGTH)) AS TOTAL
FROM information_schema.TABLES FROM information_schema.TABLES
GROUP BY ENGINE; GROUP BY ENGINE;

View File

@ -25,7 +25,6 @@ SOURCE ./triggers/sys_config_update_set_user.sql
SOURCE ./functions/extract_schema_from_file_name.sql SOURCE ./functions/extract_schema_from_file_name.sql
SOURCE ./functions/extract_table_from_file_name.sql SOURCE ./functions/extract_table_from_file_name.sql
SOURCE ./functions/format_bytes.sql
SOURCE ./functions/format_path.sql SOURCE ./functions/format_path.sql
SOURCE ./functions/format_statement.sql SOURCE ./functions/format_statement.sql
SOURCE ./functions/format_time.sql SOURCE ./functions/format_time.sql

View File

@ -25,7 +25,6 @@ SOURCE ./triggers/sys_config_update_set_user.sql
SOURCE ./functions/extract_schema_from_file_name.sql SOURCE ./functions/extract_schema_from_file_name.sql
SOURCE ./functions/extract_table_from_file_name.sql SOURCE ./functions/extract_table_from_file_name.sql
SOURCE ./functions/format_bytes.sql
SOURCE ./functions/format_path_57.sql SOURCE ./functions/format_path_57.sql
SOURCE ./functions/format_statement.sql SOURCE ./functions/format_statement.sql
SOURCE ./functions/format_time.sql SOURCE ./functions/format_time.sql

View File

@ -50,8 +50,8 @@ VIEW innodb_buffer_stats_by_schema (
rows_cached rows_cached
) AS ) AS
SELECT IF(LOCATE('.', ibp.table_name) = 0, 'InnoDB System', REPLACE(SUBSTRING_INDEX(ibp.table_name, '.', 1), '`', '')) AS object_schema, SELECT IF(LOCATE('.', ibp.table_name) = 0, 'InnoDB System', REPLACE(SUBSTRING_INDEX(ibp.table_name, '.', 1), '`', '')) AS object_schema,
sys.format_bytes(SUM(IF(ibp.compressed_size = 0, 16384, compressed_size))) AS allocated, format_bytes(SUM(IF(ibp.compressed_size = 0, 16384, compressed_size))) AS allocated,
sys.format_bytes(SUM(ibp.data_size)) AS data, format_bytes(SUM(ibp.data_size)) AS data,
COUNT(ibp.page_number) AS pages, COUNT(ibp.page_number) AS pages,
COUNT(IF(ibp.is_hashed = 'YES', 1, NULL)) AS pages_hashed, COUNT(IF(ibp.is_hashed = 'YES', 1, NULL)) AS pages_hashed,
COUNT(IF(ibp.is_old = 'YES', 1, NULL)) AS pages_old, COUNT(IF(ibp.is_old = 'YES', 1, NULL)) AS pages_old,

View File

@ -53,8 +53,8 @@ VIEW innodb_buffer_stats_by_table (
) AS ) AS
SELECT IF(LOCATE('.', ibp.table_name) = 0, 'InnoDB System', REPLACE(SUBSTRING_INDEX(ibp.table_name, '.', 1), '`', '')) AS object_schema, SELECT IF(LOCATE('.', ibp.table_name) = 0, 'InnoDB System', REPLACE(SUBSTRING_INDEX(ibp.table_name, '.', 1), '`', '')) AS object_schema,
REPLACE(SUBSTRING_INDEX(ibp.table_name, '.', -1), '`', '') AS object_name, REPLACE(SUBSTRING_INDEX(ibp.table_name, '.', -1), '`', '') AS object_name,
sys.format_bytes(SUM(IF(ibp.compressed_size = 0, 16384, compressed_size))) AS allocated, format_bytes(SUM(IF(ibp.compressed_size = 0, 16384, compressed_size))) AS allocated,
sys.format_bytes(SUM(ibp.data_size)) AS data, format_bytes(SUM(ibp.data_size)) AS data,
COUNT(ibp.page_number) AS pages, COUNT(ibp.page_number) AS pages,
COUNT(IF(ibp.is_hashed = 'YES', 1, NULL)) AS pages_hashed, COUNT(IF(ibp.is_hashed = 'YES', 1, NULL)) AS pages_hashed,
COUNT(IF(ibp.is_old = 'YES', 1, NULL)) AS pages_old, COUNT(IF(ibp.is_old = 'YES', 1, NULL)) AS pages_old,

View File

@ -57,8 +57,8 @@ SELECT IF(accounts.host IS NULL, 'background', accounts.host) AS host,
SUM(accounts.current_connections) AS current_connections, SUM(accounts.current_connections) AS current_connections,
SUM(accounts.total_connections) AS total_connections, SUM(accounts.total_connections) AS total_connections,
COUNT(DISTINCT user) AS unique_users, COUNT(DISTINCT user) AS unique_users,
sys.format_bytes(SUM(mem.current_allocated)) AS current_memory, format_bytes(SUM(mem.current_allocated)) AS current_memory,
sys.format_bytes(SUM(mem.total_allocated)) AS total_memory_allocated format_bytes(SUM(mem.total_allocated)) AS total_memory_allocated
FROM performance_schema.accounts FROM performance_schema.accounts
JOIN sys.x$host_summary_by_statement_latency AS stmt ON accounts.host = stmt.host JOIN sys.x$host_summary_by_statement_latency AS stmt ON accounts.host = stmt.host
JOIN sys.x$host_summary_by_file_io AS io ON accounts.host = io.host JOIN sys.x$host_summary_by_file_io AS io ON accounts.host = io.host

View File

@ -47,12 +47,12 @@ VIEW io_global_by_file_by_bytes (
) AS ) AS
SELECT sys.format_path(file_name) AS file, SELECT sys.format_path(file_name) AS file,
count_read, count_read,
sys.format_bytes(sum_number_of_bytes_read) AS total_read, format_bytes(sum_number_of_bytes_read) AS total_read,
sys.format_bytes(IFNULL(sum_number_of_bytes_read / NULLIF(count_read, 0), 0)) AS avg_read, format_bytes(IFNULL(sum_number_of_bytes_read / NULLIF(count_read, 0), 0)) AS avg_read,
count_write, count_write,
sys.format_bytes(sum_number_of_bytes_write) AS total_written, format_bytes(sum_number_of_bytes_write) AS total_written,
sys.format_bytes(IFNULL(sum_number_of_bytes_write / NULLIF(count_write, 0), 0.00)) AS avg_write, format_bytes(IFNULL(sum_number_of_bytes_write / NULLIF(count_write, 0), 0.00)) AS avg_write,
sys.format_bytes(sum_number_of_bytes_read + sum_number_of_bytes_write) AS total, format_bytes(sum_number_of_bytes_read + sum_number_of_bytes_write) AS total,
IFNULL(ROUND(100-((sum_number_of_bytes_read/ NULLIF((sum_number_of_bytes_read+sum_number_of_bytes_write), 0))*100), 2), 0.00) AS write_pct IFNULL(ROUND(100-((sum_number_of_bytes_read/ NULLIF((sum_number_of_bytes_read+sum_number_of_bytes_write), 0))*100), 2), 0.00) AS write_pct
FROM performance_schema.file_summary_by_instance FROM performance_schema.file_summary_by_instance
ORDER BY sum_number_of_bytes_read + sum_number_of_bytes_write DESC; ORDER BY sum_number_of_bytes_read + sum_number_of_bytes_write DESC;

View File

@ -67,12 +67,12 @@ SELECT SUBSTRING_INDEX(event_name, '/', -2) event_name,
format_pico_time(avg_timer_wait) AS avg_latency, format_pico_time(avg_timer_wait) AS avg_latency,
format_pico_time(max_timer_wait) AS max_latency, format_pico_time(max_timer_wait) AS max_latency,
count_read, count_read,
sys.format_bytes(sum_number_of_bytes_read) AS total_read, format_bytes(sum_number_of_bytes_read) AS total_read,
sys.format_bytes(IFNULL(sum_number_of_bytes_read / NULLIF(count_read, 0), 0)) AS avg_read, format_bytes(IFNULL(sum_number_of_bytes_read / NULLIF(count_read, 0), 0)) AS avg_read,
count_write, count_write,
sys.format_bytes(sum_number_of_bytes_write) AS total_written, format_bytes(sum_number_of_bytes_write) AS total_written,
sys.format_bytes(IFNULL(sum_number_of_bytes_write / NULLIF(count_write, 0), 0)) AS avg_written, format_bytes(IFNULL(sum_number_of_bytes_write / NULLIF(count_write, 0), 0)) AS avg_written,
sys.format_bytes(sum_number_of_bytes_write + sum_number_of_bytes_read) AS total_requested format_bytes(sum_number_of_bytes_write + sum_number_of_bytes_read) AS total_requested
FROM performance_schema.file_summary_by_event_name FROM performance_schema.file_summary_by_event_name
WHERE event_name LIKE 'wait/io/file/%' WHERE event_name LIKE 'wait/io/file/%'
AND count_star > 0 AND count_star > 0

View File

@ -70,11 +70,11 @@ SELECT SUBSTRING_INDEX(event_name, '/', -2) AS event_name,
format_pico_time(sum_timer_write) AS write_latency, format_pico_time(sum_timer_write) AS write_latency,
format_pico_time(sum_timer_misc) AS misc_latency, format_pico_time(sum_timer_misc) AS misc_latency,
count_read, count_read,
sys.format_bytes(sum_number_of_bytes_read) AS total_read, format_bytes(sum_number_of_bytes_read) AS total_read,
sys.format_bytes(IFNULL(sum_number_of_bytes_read / NULLIF(count_read, 0), 0)) AS avg_read, format_bytes(IFNULL(sum_number_of_bytes_read / NULLIF(count_read, 0), 0)) AS avg_read,
count_write, count_write,
sys.format_bytes(sum_number_of_bytes_write) AS total_written, format_bytes(sum_number_of_bytes_write) AS total_written,
sys.format_bytes(IFNULL(sum_number_of_bytes_write / NULLIF(count_write, 0), 0)) AS avg_written format_bytes(IFNULL(sum_number_of_bytes_write / NULLIF(count_write, 0), 0)) AS avg_written
FROM performance_schema.file_summary_by_event_name FROM performance_schema.file_summary_by_event_name
WHERE event_name LIKE 'wait/io/file/%' WHERE event_name LIKE 'wait/io/file/%'
AND count_star > 0 AND count_star > 0

View File

@ -48,7 +48,7 @@ SELECT IF(id IS NULL,
sys.format_path(object_name) file, sys.format_path(object_name) file,
format_pico_time(timer_wait) AS latency, format_pico_time(timer_wait) AS latency,
operation, operation,
sys.format_bytes(number_of_bytes) AS requested format_bytes(number_of_bytes) AS requested
FROM performance_schema.events_waits_history_long FROM performance_schema.events_waits_history_long
JOIN performance_schema.threads USING (thread_id) JOIN performance_schema.threads USING (thread_id)
LEFT JOIN information_schema.processlist ON processlist_id = id LEFT JOIN information_schema.processlist ON processlist_id = id

View File

@ -43,10 +43,10 @@ VIEW memory_by_host_by_current_bytes (
) AS ) AS
SELECT IF(host IS NULL, 'background', host) AS host, SELECT IF(host IS NULL, 'background', host) AS host,
SUM(current_count_used) AS current_count_used, SUM(current_count_used) AS current_count_used,
sys.format_bytes(SUM(current_number_of_bytes_used)) AS current_allocated, format_bytes(SUM(current_number_of_bytes_used)) AS current_allocated,
sys.format_bytes(IFNULL(SUM(current_number_of_bytes_used) / NULLIF(SUM(current_count_used), 0), 0)) AS current_avg_alloc, format_bytes(IFNULL(SUM(current_number_of_bytes_used) / NULLIF(SUM(current_count_used), 0), 0)) AS current_avg_alloc,
sys.format_bytes(MAX(current_number_of_bytes_used)) AS current_max_alloc, format_bytes(MAX(current_number_of_bytes_used)) AS current_max_alloc,
sys.format_bytes(SUM(sum_number_of_bytes_alloc)) AS total_allocated format_bytes(SUM(sum_number_of_bytes_alloc)) AS total_allocated
FROM performance_schema.memory_summary_by_host_by_event_name FROM performance_schema.memory_summary_by_host_by_event_name
GROUP BY IF(host IS NULL, 'background', host) GROUP BY IF(host IS NULL, 'background', host)
ORDER BY SUM(current_number_of_bytes_used) DESC; ORDER BY SUM(current_number_of_bytes_used) DESC;

View File

@ -50,10 +50,10 @@ SELECT thread_id,
CONCAT(t.processlist_user, '@', t.processlist_host), CONCAT(t.processlist_user, '@', t.processlist_host),
REPLACE(t.name, 'thread/', '')) user, REPLACE(t.name, 'thread/', '')) user,
SUM(mt.current_count_used) AS current_count_used, SUM(mt.current_count_used) AS current_count_used,
sys.format_bytes(SUM(mt.current_number_of_bytes_used)) AS current_allocated, format_bytes(SUM(mt.current_number_of_bytes_used)) AS current_allocated,
sys.format_bytes(IFNULL(SUM(mt.current_number_of_bytes_used) / NULLIF(SUM(current_count_used), 0), 0)) AS current_avg_alloc, format_bytes(IFNULL(SUM(mt.current_number_of_bytes_used) / NULLIF(SUM(current_count_used), 0), 0)) AS current_avg_alloc,
sys.format_bytes(MAX(mt.current_number_of_bytes_used)) AS current_max_alloc, format_bytes(MAX(mt.current_number_of_bytes_used)) AS current_max_alloc,
sys.format_bytes(SUM(mt.sum_number_of_bytes_alloc)) AS total_allocated format_bytes(SUM(mt.sum_number_of_bytes_alloc)) AS total_allocated
FROM performance_schema.memory_summary_by_thread_by_event_name AS mt FROM performance_schema.memory_summary_by_thread_by_event_name AS mt
JOIN performance_schema.threads AS t USING (thread_id) JOIN performance_schema.threads AS t USING (thread_id)
GROUP BY thread_id, IF(t.name = 'thread/sql/one_connection', GROUP BY thread_id, IF(t.name = 'thread/sql/one_connection',

View File

@ -43,10 +43,10 @@ VIEW memory_by_user_by_current_bytes (
) AS ) AS
SELECT IF(user IS NULL, 'background', user) AS user, SELECT IF(user IS NULL, 'background', user) AS user,
SUM(current_count_used) AS current_count_used, SUM(current_count_used) AS current_count_used,
sys.format_bytes(SUM(current_number_of_bytes_used)) AS current_allocated, format_bytes(SUM(current_number_of_bytes_used)) AS current_allocated,
sys.format_bytes(IFNULL(SUM(current_number_of_bytes_used) / NULLIF(SUM(current_count_used), 0), 0)) AS current_avg_alloc, format_bytes(IFNULL(SUM(current_number_of_bytes_used) / NULLIF(SUM(current_count_used), 0), 0)) AS current_avg_alloc,
sys.format_bytes(MAX(current_number_of_bytes_used)) AS current_max_alloc, format_bytes(MAX(current_number_of_bytes_used)) AS current_max_alloc,
sys.format_bytes(SUM(sum_number_of_bytes_alloc)) AS total_allocated format_bytes(SUM(sum_number_of_bytes_alloc)) AS total_allocated
FROM performance_schema.memory_summary_by_user_by_event_name FROM performance_schema.memory_summary_by_user_by_event_name
GROUP BY IF(user IS NULL, 'background', user) GROUP BY IF(user IS NULL, 'background', user)
ORDER BY SUM(current_number_of_bytes_used) DESC; ORDER BY SUM(current_number_of_bytes_used) DESC;

View File

@ -46,11 +46,11 @@ VIEW memory_global_by_current_bytes (
) AS ) AS
SELECT event_name, SELECT event_name,
current_count_used AS current_count, current_count_used AS current_count,
sys.format_bytes(current_number_of_bytes_used) AS current_alloc, format_bytes(current_number_of_bytes_used) AS current_alloc,
sys.format_bytes(IFNULL(current_number_of_bytes_used / NULLIF(current_count_used, 0), 0)) AS current_avg_alloc, format_bytes(IFNULL(current_number_of_bytes_used / NULLIF(current_count_used, 0), 0)) AS current_avg_alloc,
high_count_used AS high_count, high_count_used AS high_count,
sys.format_bytes(high_number_of_bytes_used) AS high_alloc, format_bytes(high_number_of_bytes_used) AS high_alloc,
sys.format_bytes(IFNULL(high_number_of_bytes_used / NULLIF(high_count_used, 0), 0)) AS high_avg_alloc format_bytes(IFNULL(high_number_of_bytes_used / NULLIF(high_count_used, 0), 0)) AS high_avg_alloc
FROM performance_schema.memory_summary_global_by_event_name FROM performance_schema.memory_summary_global_by_event_name
WHERE current_number_of_bytes_used > 0 WHERE current_number_of_bytes_used > 0
ORDER BY current_number_of_bytes_used DESC; ORDER BY current_number_of_bytes_used DESC;

View File

@ -33,5 +33,5 @@ CREATE OR REPLACE
VIEW memory_global_total ( VIEW memory_global_total (
total_allocated total_allocated
) AS ) AS
SELECT sys.format_bytes(SUM(CURRENT_NUMBER_OF_BYTES_USED)) total_allocated SELECT format_bytes(SUM(CURRENT_NUMBER_OF_BYTES_USED)) total_allocated
FROM performance_schema.memory_summary_global_by_event_name; FROM performance_schema.memory_summary_global_by_event_name;

View File

@ -116,7 +116,7 @@ SELECT pps.thread_id AS thd_id,
IF(esc.end_event_id IS NOT NULL, IF(esc.end_event_id IS NOT NULL,
format_pico_time(esc.timer_wait), format_pico_time(esc.timer_wait),
NULL) AS last_statement_latency, NULL) AS last_statement_latency,
sys.format_bytes(mem.current_allocated) AS current_memory, format_bytes(mem.current_allocated) AS current_memory,
ewc.event_name AS last_wait, ewc.event_name AS last_wait,
IF(ewc.end_event_id IS NULL AND ewc.event_name IS NOT NULL, IF(ewc.end_event_id IS NULL AND ewc.event_name IS NOT NULL,
'Still Waiting', 'Still Waiting',

View File

@ -80,10 +80,10 @@ SELECT pst.object_schema AS table_schema,
pst.count_delete AS rows_deleted, pst.count_delete AS rows_deleted,
format_pico_time(pst.sum_timer_delete) AS delete_latency, format_pico_time(pst.sum_timer_delete) AS delete_latency,
fsbi.count_read AS io_read_requests, fsbi.count_read AS io_read_requests,
sys.format_bytes(fsbi.sum_number_of_bytes_read) AS io_read, format_bytes(fsbi.sum_number_of_bytes_read) AS io_read,
format_pico_time(fsbi.sum_timer_read) AS io_read_latency, format_pico_time(fsbi.sum_timer_read) AS io_read_latency,
fsbi.count_write AS io_write_requests, fsbi.count_write AS io_write_requests,
sys.format_bytes(fsbi.sum_number_of_bytes_write) AS io_write, format_bytes(fsbi.sum_number_of_bytes_write) AS io_write,
format_pico_time(fsbi.sum_timer_write) AS io_write_latency, format_pico_time(fsbi.sum_timer_write) AS io_write_latency,
fsbi.count_misc AS io_misc_requests, fsbi.count_misc AS io_misc_requests,
format_pico_time(fsbi.sum_timer_misc) AS io_misc_latency format_pico_time(fsbi.sum_timer_misc) AS io_misc_latency

View File

@ -95,16 +95,16 @@ SELECT pst.object_schema AS table_schema,
pst.count_delete AS rows_deleted, pst.count_delete AS rows_deleted,
format_pico_time(pst.sum_timer_delete) AS delete_latency, format_pico_time(pst.sum_timer_delete) AS delete_latency,
fsbi.count_read AS io_read_requests, fsbi.count_read AS io_read_requests,
sys.format_bytes(fsbi.sum_number_of_bytes_read) AS io_read, format_bytes(fsbi.sum_number_of_bytes_read) AS io_read,
format_pico_time(fsbi.sum_timer_read) AS io_read_latency, format_pico_time(fsbi.sum_timer_read) AS io_read_latency,
fsbi.count_write AS io_write_requests, fsbi.count_write AS io_write_requests,
sys.format_bytes(fsbi.sum_number_of_bytes_write) AS io_write, format_bytes(fsbi.sum_number_of_bytes_write) AS io_write,
format_pico_time(fsbi.sum_timer_write) AS io_write_latency, format_pico_time(fsbi.sum_timer_write) AS io_write_latency,
fsbi.count_misc AS io_misc_requests, fsbi.count_misc AS io_misc_requests,
format_pico_time(fsbi.sum_timer_misc) AS io_misc_latency, format_pico_time(fsbi.sum_timer_misc) AS io_misc_latency,
sys.format_bytes(ibp.allocated) AS innodb_buffer_allocated, format_bytes(ibp.allocated) AS innodb_buffer_allocated,
sys.format_bytes(ibp.data) AS innodb_buffer_data, format_bytes(ibp.data) AS innodb_buffer_data,
sys.format_bytes(ibp.allocated - ibp.data) AS innodb_buffer_free, format_bytes(ibp.allocated - ibp.data) AS innodb_buffer_free,
ibp.pages AS innodb_buffer_pages, ibp.pages AS innodb_buffer_pages,
ibp.pages_hashed AS innodb_buffer_pages_hashed, ibp.pages_hashed AS innodb_buffer_pages_hashed,
ibp.pages_old AS innodb_buffer_pages_old, ibp.pages_old AS innodb_buffer_pages_old,

View File

@ -57,8 +57,8 @@ SELECT IF(accounts.user IS NULL, 'background', accounts.user) AS user,
SUM(accounts.current_connections) AS current_connections, SUM(accounts.current_connections) AS current_connections,
SUM(accounts.total_connections) AS total_connections, SUM(accounts.total_connections) AS total_connections,
COUNT(DISTINCT host) AS unique_hosts, COUNT(DISTINCT host) AS unique_hosts,
sys.format_bytes(SUM(mem.current_allocated)) AS current_memory, format_bytes(SUM(mem.current_allocated)) AS current_memory,
sys.format_bytes(SUM(mem.total_allocated)) AS total_memory_allocated format_bytes(SUM(mem.total_allocated)) AS total_memory_allocated
FROM performance_schema.accounts FROM performance_schema.accounts
LEFT JOIN sys.x$user_summary_by_statement_latency AS stmt ON IF(accounts.user IS NULL, 'background', accounts.user) = stmt.user LEFT JOIN sys.x$user_summary_by_statement_latency AS stmt ON IF(accounts.user IS NULL, 'background', accounts.user) = stmt.user
LEFT JOIN sys.x$user_summary_by_file_io AS io ON IF(accounts.user IS NULL, 'background', accounts.user) = io.user LEFT JOIN sys.x$user_summary_by_file_io AS io ON IF(accounts.user IS NULL, 'background', accounts.user) = io.user

View File

@ -867,7 +867,7 @@ protected:
class Create_func_format_pico_time : public Create_func_arg1 class Create_func_format_pico_time : public Create_func_arg1
{ {
public: public:
Item *create_1_arg(THD *thd, Item *arg1) override; virtual Item *create_1_arg(THD *thd, Item *arg1) override;
static Create_func_format_pico_time s_singleton; static Create_func_format_pico_time s_singleton;
@ -876,6 +876,17 @@ protected:
virtual ~Create_func_format_pico_time() = default; virtual ~Create_func_format_pico_time() = default;
}; };
class Create_func_format_bytes : public Create_func_arg1
{
public:
virtual Item *create_1_arg(THD *thd, Item *arg1) override;
static Create_func_format_bytes s_singleton;
protected:
Create_func_format_bytes() = default;
virtual ~Create_func_format_bytes() = default;
};
class Create_func_format : public Create_native_func class Create_func_format : public Create_native_func
{ {
@ -4002,6 +4013,15 @@ Create_func_format_pico_time::create_1_arg(THD *thd, Item *arg1)
} }
Create_func_format_bytes Create_func_format_bytes::s_singleton;
Item*
Create_func_format_bytes::create_1_arg(THD *thd, Item *arg1)
{
return new (thd->mem_root) Item_func_format_bytes(thd, arg1);
}
Create_func_format Create_func_format::s_singleton; Create_func_format Create_func_format::s_singleton;
Item* Item*
@ -6374,6 +6394,7 @@ const Native_func_registry func_array[] =
{ { STRING_WITH_LEN("FIND_IN_SET") }, BUILDER(Create_func_find_in_set)}, { { STRING_WITH_LEN("FIND_IN_SET") }, BUILDER(Create_func_find_in_set)},
{ { STRING_WITH_LEN("FLOOR") }, BUILDER(Create_func_floor)}, { { STRING_WITH_LEN("FLOOR") }, BUILDER(Create_func_floor)},
{ { STRING_WITH_LEN("FORMAT_PICO_TIME") }, BUILDER(Create_func_format_pico_time)}, { { STRING_WITH_LEN("FORMAT_PICO_TIME") }, BUILDER(Create_func_format_pico_time)},
{ { STRING_WITH_LEN("FORMAT_BYTES") }, BUILDER(Create_func_format_bytes)},
{ { STRING_WITH_LEN("FORMAT") }, BUILDER(Create_func_format)}, { { STRING_WITH_LEN("FORMAT") }, BUILDER(Create_func_format)},
{ { STRING_WITH_LEN("FOUND_ROWS") }, BUILDER(Create_func_found_rows)}, { { STRING_WITH_LEN("FOUND_ROWS") }, BUILDER(Create_func_found_rows)},
{ { STRING_WITH_LEN("FROM_BASE64") }, BUILDER(Create_func_from_base64)}, { { STRING_WITH_LEN("FROM_BASE64") }, BUILDER(Create_func_from_base64)},

View File

@ -6050,6 +6050,7 @@ bool Item_func_natural_sort_key::check_vcol_func_processor(void *arg)
VCOL_NON_DETERMINISTIC); VCOL_NON_DETERMINISTIC);
} }
String *Item_func_format_pico_time::val_str_ascii(String *) String *Item_func_format_pico_time::val_str_ascii(String *)
{ {
double time_val= args[0]->val_real(); double time_val= args[0]->val_real();
@ -6128,6 +6129,78 @@ String *Item_func_format_pico_time::val_str_ascii(String *)
return &m_value; return &m_value;
} }
String *Item_func_format_bytes::val_str_ascii(String *)
{
double bytes= args[0]->val_real();
null_value = args[0]->null_value;
if (null_value)
return 0;
double bytes_abs= fabs(bytes);
constexpr uint64_t kib{1024};
constexpr uint64_t mib{1024 * kib};
constexpr uint64_t gib{1024 * mib};
constexpr uint64_t tib{1024 * gib};
constexpr uint64_t pib{1024 * tib};
constexpr uint64_t eib{1024 * pib};
uint64_t divisor;
size_t len;
const char *unit;
if (bytes_abs >= eib)
{
divisor= eib;
unit= "EiB";
}
else if (bytes_abs >= pib)
{
divisor= pib;
unit= "PiB";
}
else if (bytes_abs >= tib)
{
divisor= tib;
unit= "TiB";
}
else if (bytes_abs >= gib)
{
divisor= gib;
unit= "GiB";
}
else if (bytes_abs >= mib)
{
divisor= mib;
unit= "MiB";
}
else if (bytes_abs >= kib)
{
divisor= kib;
unit= "KiB";
}
else
{
divisor= 1;
unit= "bytes";
}
if (divisor == 1)
len= snprintf(m_value_buffer, sizeof(m_value_buffer), "%4d %s", (int)bytes, unit);
else
{
double value= bytes / divisor;
if (fabs(value) >= 100000.0)
len= snprintf(m_value_buffer, sizeof(m_value_buffer), "%4.2e %s", value, unit);
else
len= snprintf(m_value_buffer, sizeof(m_value_buffer), "%4.2f %s", value, unit);
}
m_value.length(len);
return &m_value;
}
#ifdef WITH_WSREP #ifdef WITH_WSREP
#include "wsrep_mysqld.h" #include "wsrep_mysqld.h"
#include "wsrep_server_state.h" #include "wsrep_server_state.h"

View File

@ -2408,6 +2408,7 @@ public:
{ return get_item_copy<Item_temptable_rowid>(thd, this); } { return get_item_copy<Item_temptable_rowid>(thd, this); }
}; };
class Item_func_format_pico_time : public Item_str_ascii_func class Item_func_format_pico_time : public Item_str_ascii_func
{ {
/* Format is 'AAAA.BB UUU' = 11 characters or 'AAA ps' = 6 characters. */ /* Format is 'AAAA.BB UUU' = 11 characters or 'AAA ps' = 6 characters. */
@ -2434,6 +2435,33 @@ public:
} }
}; };
class Item_func_format_bytes : public Item_str_ascii_func
{
/* Format is '-A.AAe+BB UUU' = 13 or 'AAAA.BB UUU' = 11 characters or 'AAAA bytes' = 10 characters. */
char m_value_buffer[14];
String m_value;
public:
Item_func_format_bytes(THD *thd, Item *a): Item_str_ascii_func(thd, a) {}
String *val_str_ascii(String *) override;
LEX_CSTRING func_name_cstring() const override
{
static LEX_CSTRING name= {STRING_WITH_LEN("format_bytes")};
return name;
}
bool fix_length_and_dec(THD *thd) override
{
m_value.set(m_value_buffer, sizeof(m_value_buffer), default_charset());
fix_length_and_charset(sizeof(m_value_buffer), default_charset());
return false;
}
Item *do_get_copy(THD *thd) const override
{
return get_item_copy<Item_func_format_bytes>(thd, this);
}
};
#ifdef WITH_WSREP #ifdef WITH_WSREP
#include "wsrep_api.h" #include "wsrep_api.h"