mariadb/mysql-test/main/func_format.result
2024-11-26 13:10:01 +04:00

432 lines
10 KiB
Text

# MDEV-19629: Implement MySQL 8.0 native functions: format_bytes(), format_pico_time() and ps_thread_id()
#
# Tests for the native function format_pico_time()
#
SELECT format_pico_time(NULL);
format_pico_time(NULL)
NULL
SELECT format_pico_time(0);
format_pico_time(0)
0 ps
SELECT format_pico_time(1);
format_pico_time(1)
1 ps
SELECT format_pico_time(999);
format_pico_time(999)
999 ps
SELECT format_pico_time(1000);
format_pico_time(1000)
1.00 ns
SELECT format_pico_time(1001);
format_pico_time(1001)
1.00 ns
SELECT format_pico_time(999999);
format_pico_time(999999)
1000.00 ns
SELECT format_pico_time(1000000);
format_pico_time(1000000)
1.00 us
SELECT format_pico_time(1000001);
format_pico_time(1000001)
1.00 us
SELECT format_pico_time(1010000);
format_pico_time(1010000)
1.01 us
SELECT format_pico_time(987654321);
format_pico_time(987654321)
987.65 us
SELECT format_pico_time(1000000000);
format_pico_time(1000000000)
1.00 ms
SELECT format_pico_time(999876000000);
format_pico_time(999876000000)
999.88 ms
SELECT format_pico_time(999999999999);
format_pico_time(999999999999)
1000.00 ms
SELECT format_pico_time(1000000000000);
format_pico_time(1000000000000)
1.00 s
SELECT format_pico_time(59000000000000);
format_pico_time(59000000000000)
59.00 s
SELECT format_pico_time(60000000000000);
format_pico_time(60000000000000)
1.00 min
SELECT format_pico_time(3549000000000000);
format_pico_time(3549000000000000)
59.15 min
SELECT format_pico_time(3599000000000000);
format_pico_time(3599000000000000)
59.98 min
SELECT format_pico_time(3600000000000000);
format_pico_time(3600000000000000)
1.00 h
SELECT format_pico_time(power(2, 63));
format_pico_time(power(2, 63))
106.75 d
SELECT format_pico_time((power(2, 63) - 1) * 2 + 1);
format_pico_time((power(2, 63) - 1) * 2 + 1)
213.50 d
SELECT format_pico_time(36000000.495523);
format_pico_time(36000000.495523)
36.00 us
SELECT format_pico_time(1000 * pow(10,12) * 86400);
format_pico_time(1000 * pow(10,12) * 86400)
1000.00 d
SELECT format_pico_time(86400000000000000000);
format_pico_time(86400000000000000000)
1000.00 d
SELECT format_pico_time(86400000000000000000+5000);
format_pico_time(86400000000000000000+5000)
1000.00 d
## Negative values are ok
SELECT format_pico_time(1010000 * -1);
format_pico_time(1010000 * -1)
-1.01 us
## Force exponent
SELECT format_pico_time(8650000000000000000099);
format_pico_time(8650000000000000000099)
1.00e+05 d
SELECT format_pico_time(-8650000000000000000099);
format_pico_time(-8650000000000000000099)
-1.00e+05 d
SELECT format_pico_time(8640000000000000000099 * 2);
format_pico_time(8640000000000000000099 * 2)
2.00e+05 d
## Text input
SELECT format_pico_time("foo");
format_pico_time("foo")
0 ps
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'foo'
SELECT format_pico_time("");
format_pico_time("")
0 ps
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT format_pico_time("118059162071741143500099");
format_pico_time("118059162071741143500099")
1.37e+06 d
SELECT format_pico_time("-118059162071741143500099");
format_pico_time("-118059162071741143500099")
-1.37e+06 d
## Recognizes up to first non-numeric
SELECT format_pico_time("40000 * 2000");
format_pico_time("40000 * 2000")
40.00 ns
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '40000 * 2000'
SELECT format_pico_time("40000 foo 2000");
format_pico_time("40000 foo 2000")
40.00 ns
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '40000 foo 2000'
## Aggregate functions
USE test;
CREATE TABLE timer_waits (id VARCHAR(10), wait BIGINT UNSIGNED DEFAULT NULL) DEFAULT CHARSET = utf8mb4;
INSERT INTO timer_waits VALUES ('1 sec', 1000000000000);
INSERT INTO timer_waits VALUES ('1 min', 60000000000000);
INSERT INTO timer_waits VALUES ('1 hour', 3600000000000000);
INSERT INTO timer_waits VALUES ('1 day', 86400000000000000);
INSERT INTO timer_waits VALUES ('100 days', 8640000000000000000);
SELECT id, format_pico_time(wait), wait FROM timer_waits;
id format_pico_time(wait) wait
1 sec 1.00 s 1000000000000
1 min 1.00 min 60000000000000
1 hour 1.00 h 3600000000000000
1 day 1.00 d 86400000000000000
100 days 100.00 d 8640000000000000000
SELECT sum(wait), format_pico_time(sum(wait)) FROM timer_waits;
sum(wait) format_pico_time(sum(wait))
8730061000000000000 101.04 d
SELECT avg(wait), format_pico_time(avg(wait)) FROM timer_waits;
avg(wait) format_pico_time(avg(wait))
1746012200000000000.0000 20.21 d
SELECT min(wait), format_pico_time(min(wait)) FROM timer_waits;
min(wait) format_pico_time(min(wait))
1000000000000 1.00 s
SELECT max(wait), format_pico_time(max(wait)) FROM timer_waits;
max(wait) format_pico_time(max(wait))
8640000000000000000 100.00 d
DROP TABLE timer_waits;
## Using Scientific Notation
SELECT format_pico_time(3e9);
format_pico_time(3e9)
3.00 ms
SELECT format_pico_time(4e6);
format_pico_time(4e6)
4.00 us
SELECT format_pico_time(5e3);
format_pico_time(5e3)
5.00 ns
SELECT format_pico_time(6e2);
format_pico_time(6e2)
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
#