Commit c2d2c1e7 authored by Sergei Petrunia's avatar Sergei Petrunia

MDEV-26519: Improved histograms

Save extra information in the histogram:

    "target_histogram_size": nnn,
    "collected_at": "(date and time)",
    "collected_by": "(server version)",
parent a0916cf5
--source include/json_hb_histogram.inc
# The time on ANALYSE FORMAT=JSON is rather variable
--replace_regex /("(collected_at|collected_by)": )"[^"]*"/\1"REPLACED"/
......@@ -1487,7 +1487,7 @@ set histogram_size=254;
set histogram_type=@DOUBLE_PREC_TYPE;
ANALYZE TABLE City;
FLUSH TABLES;
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,hex(histogram),decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='COUNTRYLANGUAGE' and UPPER(column_name) = 'PERCENTAGE';;
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='COUNTRYLANGUAGE' and UPPER(column_name) = 'PERCENTAGE';;
UPPER(db_name) WORLD
UPPER(table_name) COUNTRYLANGUAGE
UPPER(column_name) PERCENTAGE
......@@ -1498,9 +1498,8 @@ avg_length 4.0000
avg_frequency 2.7640
hist_size 100
hist_type SINGLE_PREC_HB
hex(histogram) 0000000000000000000000000101010101010101010202020303030304040404050505050606070707080809090A0A0B0C0D0D0E0E0F10111213131415161718191B1C1E202224292A2E33373B4850575F6A76818C9AA7B9C4CFDADFE5EBF0F4F8FAFCFF
decode_histogram(hist_type,histogram) 0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.004,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.000,0.000,0.004,0.000,0.004,0.000,0.000,0.004,0.000,0.004,0.000,0.004,0.000,0.004,0.004,0.004,0.000,0.004,0.000,0.004,0.004,0.004,0.004,0.004,0.000,0.004,0.004,0.004,0.004,0.004,0.004,0.008,0.004,0.008,0.008,0.008,0.008,0.020,0.004,0.016,0.020,0.016,0.016,0.051,0.031,0.027,0.031,0.043,0.047,0.043,0.043,0.055,0.051,0.071,0.043,0.043,0.043,0.020,0.024,0.024,0.020,0.016,0.016,0.008,0.008,0.012,0.000
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,hex(histogram),decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='CITY' and UPPER(column_name) = 'POPULATION';;
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='CITY' and UPPER(column_name) = 'POPULATION';;
UPPER(db_name) WORLD
UPPER(table_name) CITY
UPPER(column_name) POPULATION
......@@ -1511,7 +1510,6 @@ avg_length 4.0000
avg_frequency 1.0467
hist_size 254
hist_type DOUBLE_PREC_HB
hex(histogram) 1F00A1002B023002350238023F02430249024E02520258025D02630268026E02720276027B02800285028C02920297029D02A102A802AC02B402BC02C402CC02D302DA02E302EA02F102F802010305030C03120319031F03290333033D0343034F03590363036D037803840390039A03A603B303C303D103E003F203020412042404330440045304600472047F049104A204B804C804DE04F2040A0526053F0558056F058E05B305D905F4051306380667068406AB06DA06020731075C079407C507F8072E085E08A508DF0824096909CC092E0A760AD50A400BA90B150CAD0C310D240E130F0E103B11B9126B14F0166B192F1CB71FFF240630483FC567
decode_histogram(hist_type,histogram) 0.00047,0.00198,0.00601,0.00008,0.00008,0.00005,0.00011,0.00006,0.00009,0.00008,0.00006,0.00009,0.00008,0.00009,0.00008,0.00009,0.00006,0.00006,0.00008,0.00008,0.00008,0.00011,0.00009,0.00008,0.00009,0.00006,0.00011,0.00006,0.00012,0.00012,0.00012,0.00012,0.00011,0.00011,0.00014,0.00011,0.00011,0.00011,0.00014,0.00006,0.00011,0.00009,0.00011,0.00009,0.00015,0.00015,0.00015,0.00009,0.00018,0.00015,0.00015,0.00015,0.00017,0.00018,0.00018,0.00015,0.00018,0.00020,0.00024,0.00021,0.00023,0.00027,0.00024,0.00024,0.00027,0.00023,0.00020,0.00029,0.00020,0.00027,0.00020,0.00027,0.00026,0.00034,0.00024,0.00034,0.00031,0.00037,0.00043,0.00038,0.00038,0.00035,0.00047,0.00056,0.00058,0.00041,0.00047,0.00056,0.00072,0.00044,0.00060,0.00072,0.00061,0.00072,0.00066,0.00085,0.00075,0.00078,0.00082,0.00073,0.00108,0.00089,0.00105,0.00105,0.00151,0.00150,0.00110,0.00145,0.00163,0.00160,0.00165,0.00232,0.00201,0.00371,0.00365,0.00383,0.00459,0.00583,0.00662,0.00984,0.00969,0.01080,0.01379,0.02063,0.04308,0.05960,0.15816,0.59464
set histogram_type=@SINGLE_PREC_TYPE;
set histogram_size=0;
......@@ -1648,10 +1646,10 @@ test.t2 analyze status OK
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, HEX(histogram)
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type HEX(histogram)
test t2 id 1 1024 0.0000 8.0000 63 SINGLE_PREC_HB 03070B0F13171B1F23272B2F33373B3F43474B4F53575B5F63676B6F73777B7F83878B8F93979B9FA3A7ABAFB3B7BBBFC3C7CBCFD3D7DBDFE3E7EBEFF3F7FB
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t2 id 1 1024 0.0000 8.0000 63 SINGLE_PREC_HB 0.012,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016
set histogram_size=0;
drop table t1, t2;
set use_stat_tables=@save_use_stat_tables;
......@@ -1669,9 +1667,9 @@ Level Code Message
select db_name, table_name, column_name,
HEX(min_value), HEX(max_value),
nulls_ratio, avg_frequency,
hist_size, hist_type, HEX(histogram)
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
db_name table_name column_name HEX(min_value) HEX(max_value) nulls_ratio avg_frequency hist_size hist_type HEX(histogram)
db_name table_name column_name HEX(min_value) HEX(max_value) nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a D879626AF872675F73E662F8 D879626AF872675F73E662F8 0.0000 1.0000 0 NULL NULL
drop table t1;
#
......
......@@ -91,6 +91,7 @@ SELECT * FROM mysql.index_stats;
SELECT COUNT(*) FROM t1;
SELECT * FROM mysql.column_stats
WHERE db_name='test' AND table_name='t1' AND column_name='a';
SELECT MIN(t1.a), MAX(t1.a),
......@@ -187,6 +188,7 @@ DELETE FROM mysql.column_stats;
set histogram_size=4;
ANALYZE TABLE t1;
--source include/histogram_replaces.inc
SELECT db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
......@@ -200,6 +202,7 @@ set histogram_size=8;
set histogram_type=@DOUBLE_PREC_TYPE;
ANALYZE TABLE t1;
--source include/histogram_replaces.inc
SELECT db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
......@@ -668,8 +671,10 @@ ANALYZE TABLE City;
FLUSH TABLES;
--enable_result_log
--query_vertical select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,hex(histogram),decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='COUNTRYLANGUAGE' and UPPER(column_name) = 'PERCENTAGE';
--query_vertical select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,hex(histogram),decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='CITY' and UPPER(column_name) = 'POPULATION';
--source include/histogram_replaces.inc
--query_vertical select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='COUNTRYLANGUAGE' and UPPER(column_name) = 'PERCENTAGE';
--source include/histogram_replaces.inc
--query_vertical select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='CITY' and UPPER(column_name) = 'POPULATION';
set histogram_type=@SINGLE_PREC_TYPE;
set histogram_size=0;
......@@ -715,6 +720,7 @@ set histogram_size=10;
analyze table t1 persistent for all;
--source include/histogram_replaces.inc
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
......@@ -741,6 +747,7 @@ show variables like 'histogram%';
analyze table t1 persistent for all;
--source include/histogram_replaces.inc
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
......@@ -786,10 +793,11 @@ set histogram_size=63;
analyze table t2 persistent for all;
--source include/histogram_replaces.inc
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, HEX(histogram)
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
set histogram_size=0;
......@@ -807,10 +815,11 @@ insert into t1 values(unhex('D879626AF872675F73E662F8'));
analyze table t1 persistent for all;
show warnings;
--source include/histogram_replaces.inc
select db_name, table_name, column_name,
HEX(min_value), HEX(max_value),
nulls_ratio, avg_frequency,
hist_size, hist_type, HEX(histogram)
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
drop table t1;
......@@ -974,6 +983,7 @@ INSERT INTO t1 SELECT id+9192 FROM t1;
--echo # This query will should show a full table scan analysis.
--echo #
ANALYZE TABLE t1;
--source include/histogram_replaces.inc
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
......@@ -984,6 +994,7 @@ set analyze_sample_percentage=0.1;
--echo # This query will show an innacurate avg_frequency value.
--echo #
ANALYZE TABLE t1;
--source include/histogram_replaces.inc
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
......@@ -993,6 +1004,7 @@ from mysql.column_stats;
--echo #
set analyze_sample_percentage=25;
ANALYZE TABLE t1;
--source include/histogram_replaces.inc
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
......@@ -1003,6 +1015,7 @@ set analyze_sample_percentage=0;
--echo # Test self adjusting sampling level.
--echo #
ANALYZE TABLE t1;
--source include/histogram_replaces.inc
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
......@@ -1014,6 +1027,7 @@ explain select * from t1;
set analyze_sample_percentage=100;
ANALYZE TABLE t1;
--source include/histogram_replaces.inc
select table_name, column_name, min_value, max_value, nulls_ratio, avg_length, avg_frequency,
DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
......
......@@ -234,6 +234,9 @@ FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 0 49 0.0000 1.0000 4 JSON_HB {
"target_histogram_size": 4,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0",
......@@ -259,6 +262,9 @@ test t1 a 0 49 0.0000 1.0000 4 JSON_HB {
]
}
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 4 JSON_HB {
"target_histogram_size": 4,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "vvvvvvvvvvvvv",
......@@ -284,6 +290,9 @@ test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 4 JSON_HB {
]
}
test t1 c aaaa dddddddd 0.1250 7.0000 4 JSON_HB {
"target_histogram_size": 4,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "aaaa",
......@@ -309,6 +318,9 @@ test t1 c aaaa dddddddd 0.1250 7.0000 4 JSON_HB {
]
}
test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 3 JSON_HB {
"target_histogram_size": 4,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1989-03-12",
......@@ -329,6 +341,9 @@ test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 3 JSON_HB {
]
}
test t1 e 0.01 0.112 0.2250 6.2000 4 JSON_HB {
"target_histogram_size": 4,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0.01",
......@@ -354,6 +369,9 @@ test t1 e 0.01 0.112 0.2250 6.2000 4 JSON_HB {
]
}
test t1 f 1 5 0.2000 6.4000 4 JSON_HB {
"target_histogram_size": 4,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "\u0001",
......@@ -393,6 +411,9 @@ FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 0 49 0.0000 1.0000 7 JSON_HB {
"target_histogram_size": 8,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0",
......@@ -433,6 +454,9 @@ test t1 a 0 49 0.0000 1.0000 7 JSON_HB {
]
}
test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 5 JSON_HB {
"target_histogram_size": 8,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "vvvvvvvvvvvvv",
......@@ -463,6 +487,9 @@ test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 5 JSON_HB {
]
}
test t1 c aaaa dddddddd 0.1250 7.0000 5 JSON_HB {
"target_histogram_size": 8,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "aaaa",
......@@ -493,6 +520,9 @@ test t1 c aaaa dddddddd 0.1250 7.0000 5 JSON_HB {
]
}
test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 4 JSON_HB {
"target_histogram_size": 8,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1989-03-12",
......@@ -518,6 +548,9 @@ test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 4 JSON_HB {
]
}
test t1 e 0.01 0.112 0.2250 6.2000 5 JSON_HB {
"target_histogram_size": 8,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0.01",
......@@ -548,6 +581,9 @@ test t1 e 0.01 0.112 0.2250 6.2000 5 JSON_HB {
]
}
test t1 f 1 5 0.2000 6.4000 5 JSON_HB {
"target_histogram_size": 8,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "\u0001",
......@@ -1811,7 +1847,7 @@ set histogram_size=254;
set histogram_type=@DOUBLE_PREC_TYPE;
ANALYZE TABLE City;
FLUSH TABLES;
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,hex(histogram),decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='COUNTRYLANGUAGE' and UPPER(column_name) = 'PERCENTAGE';;
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='COUNTRYLANGUAGE' and UPPER(column_name) = 'PERCENTAGE';;
UPPER(db_name) WORLD
UPPER(table_name) COUNTRYLANGUAGE
UPPER(column_name) PERCENTAGE
......@@ -1822,8 +1858,10 @@ avg_length 4.0000
avg_frequency 2.7640
hist_size 85
hist_type JSON_HB
hex(histogram) 7B0A202022686973746F6772616D5F6862223A205B0A202020207B0A202020202020227374617274223A2022302E30222C0A2020202020202273697A65223A20302E3036363035363931312C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E31222C0A2020202020202273697A65223A20302E3032303332353230332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E32222C0A2020202020202273697A65223A20302E3032323335373732342C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E33222C0A2020202020202273697A65223A20302E3031373237363432332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E34222C0A2020202020202273697A65223A20302E3032353430363530342C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E35222C0A2020202020202273697A65223A20302E3032303332353230332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E36222C0A2020202020202273697A65223A20302E3032303332353230332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E37222C0A2020202020202273697A65223A20302E3031373237363432332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E39222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022312E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022312E33222C0A2020202020202273697A65223A20302E3031323139353132322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E34222C0A2020202020202273697A65223A20302E3031353234333930322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E35222C0A2020202020202273697A65223A20302E3030353038313330312C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E36222C0A2020202020202273697A65223A20302E3031353234333930322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022312E39222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022322E32222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E33222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E34222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E35222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022332E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022332E32222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022332E33222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022332E35222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022332E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022332E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022342E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022342E34222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022342E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022342E39222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A2022352E33222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022352E35222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022352E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022362E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A2022362E34222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022362E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A2022372E32222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022372E34222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022372E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022382E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022382E35222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022382E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022392E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022392E35222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A202231302E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231302E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231312E34222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202231322E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231322E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202231332E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231342E36222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202231362E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202231372E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202231392E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202232302E33222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202232322E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202232332E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202232392E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202233322E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202233342E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202233392E39222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202234342E36222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A2031300A202020207D2C0A202020207B0A202020202020227374617274223A202234392E31222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202235322E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202235382E34222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A2031300A202020207D2C0A202020207B0A202020202020227374617274223A202236342E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202236392E39222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A2031300A202020207D2C0A202020207B0A202020202020227374617274223A202237362E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202238302E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202238352E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202238372E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202238392E35222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202239322E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239332E36222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202239352E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239362E39222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239382E30222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239392E30222C0A2020202020202273697A65223A20302E3030363039373536312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A202239392E39222C0A20202020202022656E64223A202239392E39222C0A2020202020202273697A65223A20302E3031353234333930322C0A202020202020226E6476223A20310A202020207D0A20205D0A7D
decode_histogram(hist_type,histogram) {
"target_histogram_size": 100,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0.0",
......@@ -2253,7 +2291,7 @@ decode_histogram(hist_type,histogram) {
}
]
}
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,hex(histogram),decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='CITY' and UPPER(column_name) = 'POPULATION';;
select UPPER(db_name),UPPER(table_name),UPPER(column_name),min_value,max_value,nulls_ratio,avg_length,avg_frequency,hist_size,hist_type,decode_histogram(hist_type,histogram) from mysql.column_stats where UPPER(db_name)='WORLD' and UPPER(table_name)='CITY' and UPPER(column_name) = 'POPULATION';;
UPPER(db_name) WORLD
UPPER(table_name) CITY
UPPER(column_name) POPULATION
......@@ -2264,8 +2302,10 @@ avg_length 4.0000
avg_frequency 1.0467
hist_size 240
hist_type JSON_HB
hex(histogram) 7B0A202022686973746F6772616D5F6862223A205B0A202020207B0A202020202020227374617274223A20223432222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231363336222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202235383038222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223136323433222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223239303334222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223731303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223839323030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223839343437222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031300A202020207D2C0A202020207B0A202020202020227374617274223A20223930303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031310A202020207D2C0A202020207B0A202020202020227374617274223A20223930353030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223930383134222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223931313030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223931373030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A20223932303434222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223932353734222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A20223932393838222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223933333432222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223933393030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A20223934323030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223934373030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223935303532222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223935353231222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223936313030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223936363236222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223936393338222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223937333030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223937393239222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223938323933222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223938363430222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223939333030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223939373831222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313030313138222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313030343930222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313030393234222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031320A202020207D2C0A202020207B0A202020202020227374617274223A2022313031323935222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313031363630222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313032313231222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313032333739222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313032383230222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313033333030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313033363533222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313034343030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313035303830222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313035353330222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313036303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313036343030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313036393936222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313037333239222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313037373730222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313038323534222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313038363030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313039323235222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313039363030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313130303334222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313130373030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313131343534222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031320A202020207D2C0A202020207B0A202020202020227374617274223A2022313132303037222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313132363733222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313133343934222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313134303635222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313134383135222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313135343833222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313136313332222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313136363935222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313137323538222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313138303830222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313138383135222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313139333931222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313139393930222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313230373030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313231313937222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313231383432222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313232343030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313233323733222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313233373736222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313234303732222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313234363030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313235323336222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313235373030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313236323832222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313236383732222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313237333530222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313237383938222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313238363531222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313239363838222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313330323135222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313331313439222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313332313237222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313332383230222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313333343433222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313333393336222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313334383335222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313336303632222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313337303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313337373030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313338343138222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313339333537222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313430313639222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313431313332222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313432313730222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313432393930222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313434313236222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313435313530222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313436313035222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313437313234222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313437393339222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313438383637222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313439393030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313531303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313532313934222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313533333434222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313534393830222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313535393431222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313537333538222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313538373230222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313630333539222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313631353030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313633313030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313634333637222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313635353833222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313637313833222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313638393533222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313730313233222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313731333633222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313732363438222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313733383738222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313734393834222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313736353736222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313738323030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313739323538222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313830343030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313832313438222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313833323631222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313834353030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313835393531222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313837353537222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313839303336222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313930323535222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313932353039222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313934313030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313935343638222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313937303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313939303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323030393031222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323032343531222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323034393030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323036333338222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323038303534222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323131303638222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323133323731222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323135333733222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323137343939222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323139373631222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323232303330222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323234303434222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323236353733222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323239323132222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323332383131222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323335373630222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323339313234222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323431373639222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323433383235222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323436353335222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323439323030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323533353837222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323535363137222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323539353337222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323632393437222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323635323131222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323639333933222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323732303538222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323735393930222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323738383239222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323832313937222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323836383438222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323931303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022323934313235222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323939313138222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333031353034222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333035363939222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333131323030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333135303833222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333139333733222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333234363632222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333238373131222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333332383030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333337393636222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333432323030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333438313030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333533343030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333538363633222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333632343730222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333636373132222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333735303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333831373235222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333836323336222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333935343032222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343033313531222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343131353432222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343139303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343235353739222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343333313830222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343431363439222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343530313830222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343539383834222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343639353333222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343736363638222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343833313535222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343935353430222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353130303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353230303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022353330393635222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353534363336222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353638383535222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022353837323131222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363036393332222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363234323639222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363530313030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363639313831222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373031383237222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373238303630222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373632303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373934323436222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022383330303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022383739303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393437343833222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231303032323339222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231303630323537222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231313139313137222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231313836393236222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231323438373030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231333436313736222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231343538343833222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231363135333639222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231383631323635222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202232313137353030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202232353030303030222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202232383936303136222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202234303137373333222C0A2020202020202273697A65223A20302E3030343136373638382C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202236373538383435222C0A20202020202022656E64223A20223130353030303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D0A20205D0A7D
decode_histogram(hist_type,histogram) {
"target_histogram_size": 254,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "42",
......@@ -3542,6 +3582,9 @@ FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 1 3 0.0000 1.0000 3 JSON_HB {
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -3587,6 +3630,9 @@ FROM mysql.column_stats
ORDER BY db_name, table_name, column_name;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a 1 5 0.0000 1.0000 5 JSON_HB {
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -3653,10 +3699,332 @@ test.t2 analyze status OK
select db_name, table_name, column_name,
min_value, max_value,
nulls_ratio, avg_frequency,
hist_size, hist_type, HEX(histogram)
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type HEX(histogram)
test t2 id 1 1024 0.0000 8.0000 63 JSON_HB 7B0A202022686973746F6772616D5F6862223A205B0A202020207B0A202020202020227374617274223A202231222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223137222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223333222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A20223530222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223636222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223832222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A20223939222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313135222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313332222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313438222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313634222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022313831222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313937222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323133222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022323330222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323436222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323633222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323739222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323935222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022333132222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333238222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333434222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022333631222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333737222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333934222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343130222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343236222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022343433222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343539222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343735222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022343932222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353038222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353235222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353431222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353537222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022353734222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353930222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363036222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022363233222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363339222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363536222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363732222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363838222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022373035222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373231222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373337222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022373534222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373730222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373837222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383033222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383139222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022383336222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383532222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383638222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022383835222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393031222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393138222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393334222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393530222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A2022393637222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393833222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393939222C0A2020202020202273697A65223A20302E3031353939313231312C0A202020202020226E6476223A2031380A202020207D2C0A202020207B0A202020202020227374617274223A202231303136222C0A20202020202022656E64223A202231303234222C0A2020202020202273697A65223A20302E3030383534343932322C0A202020202020226E6476223A20390A202020207D0A20205D0A7D
db_name table_name column_name min_value max_value nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t2 id 1 1024 0.0000 8.0000 63 JSON_HB {
"target_histogram_size": 63,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
"size": 0.015991211,
"ndv": 17
},
{
"start": "17",
"size": 0.015991211,
"ndv": 17
},
{
"start": "33",
"size": 0.015991211,
"ndv": 18
},
{
"start": "50",
"size": 0.015991211,
"ndv": 17
},
{
"start": "66",
"size": 0.015991211,
"ndv": 17
},
{
"start": "82",
"size": 0.015991211,
"ndv": 18
},
{
"start": "99",
"size": 0.015991211,
"ndv": 17
},
{
"start": "115",
"size": 0.015991211,
"ndv": 17
},
{
"start": "132",
"size": 0.015991211,
"ndv": 17
},
{
"start": "148",
"size": 0.015991211,
"ndv": 17
},
{
"start": "164",
"size": 0.015991211,
"ndv": 18
},
{
"start": "181",
"size": 0.015991211,
"ndv": 17
},
{
"start": "197",
"size": 0.015991211,
"ndv": 17
},
{
"start": "213",
"size": 0.015991211,
"ndv": 18
},
{
"start": "230",
"size": 0.015991211,
"ndv": 17
},
{
"start": "246",
"size": 0.015991211,
"ndv": 17
},
{
"start": "263",
"size": 0.015991211,
"ndv": 17
},
{
"start": "279",
"size": 0.015991211,
"ndv": 17
},
{
"start": "295",
"size": 0.015991211,
"ndv": 18
},
{
"start": "312",
"size": 0.015991211,
"ndv": 17
},
{
"start": "328",
"size": 0.015991211,
"ndv": 17
},
{
"start": "344",
"size": 0.015991211,
"ndv": 18
},
{
"start": "361",
"size": 0.015991211,
"ndv": 17
},
{
"start": "377",
"size": 0.015991211,
"ndv": 17
},
{
"start": "394",
"size": 0.015991211,
"ndv": 17
},
{
"start": "410",
"size": 0.015991211,
"ndv": 17
},
{
"start": "426",
"size": 0.015991211,
"ndv": 18
},
{
"start": "443",
"size": 0.015991211,
"ndv": 17
},
{
"start": "459",
"size": 0.015991211,
"ndv": 17
},
{
"start": "475",
"size": 0.015991211,
"ndv": 18
},
{
"start": "492",
"size": 0.015991211,
"ndv": 17
},
{
"start": "508",
"size": 0.015991211,
"ndv": 17
},
{
"start": "525",
"size": 0.015991211,
"ndv": 17
},
{
"start": "541",
"size": 0.015991211,
"ndv": 17
},
{
"start": "557",
"size": 0.015991211,
"ndv": 18
},
{
"start": "574",
"size": 0.015991211,
"ndv": 17
},
{
"start": "590",
"size": 0.015991211,
"ndv": 17
},
{
"start": "606",
"size": 0.015991211,
"ndv": 18
},
{
"start": "623",
"size": 0.015991211,
"ndv": 17
},
{
"start": "639",
"size": 0.015991211,
"ndv": 17
},
{
"start": "656",
"size": 0.015991211,
"ndv": 17
},
{
"start": "672",
"size": 0.015991211,
"ndv": 17
},
{
"start": "688",
"size": 0.015991211,
"ndv": 18
},
{
"start": "705",
"size": 0.015991211,
"ndv": 17
},
{
"start": "721",
"size": 0.015991211,
"ndv": 17
},
{
"start": "737",
"size": 0.015991211,
"ndv": 18
},
{
"start": "754",
"size": 0.015991211,
"ndv": 17
},
{
"start": "770",
"size": 0.015991211,
"ndv": 17
},
{
"start": "787",
"size": 0.015991211,
"ndv": 17
},
{
"start": "803",
"size": 0.015991211,
"ndv": 17
},
{
"start": "819",
"size": 0.015991211,
"ndv": 18
},
{
"start": "836",
"size": 0.015991211,
"ndv": 17
},
{
"start": "852",
"size": 0.015991211,
"ndv": 17
},
{
"start": "868",
"size": 0.015991211,
"ndv": 18
},
{
"start": "885",
"size": 0.015991211,
"ndv": 17
},
{
"start": "901",
"size": 0.015991211,
"ndv": 17
},
{
"start": "918",
"size": 0.015991211,
"ndv": 17
},
{
"start": "934",
"size": 0.015991211,
"ndv": 17
},
{
"start": "950",
"size": 0.015991211,
"ndv": 18
},
{
"start": "967",
"size": 0.015991211,
"ndv": 17
},
{
"start": "983",
"size": 0.015991211,
"ndv": 17
},
{
"start": "999",
"size": 0.015991211,
"ndv": 18
},
{
"start": "1016",
"end": "1024",
"size": 0.008544922,
"ndv": 9
}
]
}
set histogram_size=0;
drop table t1, t2;
set use_stat_tables=@save_use_stat_tables;
......@@ -3674,9 +4042,9 @@ Level Code Message
select db_name, table_name, column_name,
HEX(min_value), HEX(max_value),
nulls_ratio, avg_frequency,
hist_size, hist_type, HEX(histogram)
hist_size, hist_type, decode_histogram(hist_type,histogram)
FROM mysql.column_stats;
db_name table_name column_name HEX(min_value) HEX(max_value) nulls_ratio avg_frequency hist_size hist_type HEX(histogram)
db_name table_name column_name HEX(min_value) HEX(max_value) nulls_ratio avg_frequency hist_size hist_type decode_histogram(hist_type,histogram)
test t1 a D879626AF872675F73E662F8 D879626AF872675F73E662F8 0.0000 1.0000 0 NULL NULL
drop table t1;
#
......@@ -3817,6 +4185,9 @@ DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1 17384 0.0000 4.0000 14.0000 {
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -3884,6 +4255,9 @@ DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 111 17026 0.0000 4.0000 10.4739 {
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "111",
......@@ -3951,6 +4325,9 @@ DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1 17384 0.0000 4.0000 14.0401 {
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -4018,6 +4395,9 @@ DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1 17384 0.0000 4.0000 13.9812 {
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -4091,6 +4471,9 @@ DECODE_HISTOGRAM(hist_type, histogram)
from mysql.column_stats;
table_name column_name min_value max_value nulls_ratio avg_length avg_frequency DECODE_HISTOGRAM(hist_type, histogram)
t1 id 1 17384 0.0000 4.0000 14.0000 {
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -4189,6 +4572,9 @@ test.t1_json analyze status OK
select * from mysql.column_stats where table_name='t1_json';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1_json a a-0 a-9 0.0000 3.0000 1.0000 10 JSON_HB {
"target_histogram_size": 100,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "a-0",
......@@ -4336,7 +4722,7 @@ explain select * from t1_json limit 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1_json ALL NULL NULL NULL NULL 10
Warnings:
Warning 4186 Failed to parse histogram for table test.t1_json: Histogram must have at least one bucket at offset 18.
Warning 4186 Failed to parse histogram for table test.t1_json: Histogram must have at least one bucket at offset 19.
create table t2 (
city varchar(100)
);
......@@ -4381,6 +4767,9 @@ ANALYZE TABLE Country, City, CountryLanguage persistent for all;
SELECT column_name, min_value, max_value, hist_size, hist_type, histogram FROM mysql.column_stats;
column_name min_value max_value hist_size hist_type histogram
Code ABW ZWE 48 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "ABW",
......@@ -4626,6 +5015,9 @@ Code ABW ZWE 48 JSON_HB {
]
}
Country ABW ZWE 39 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "ABW",
......@@ -4826,6 +5218,9 @@ Country ABW ZWE 39 JSON_HB {
]
}
Name Afghanistan Zimbabwe 48 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "Afghanistan",
......@@ -5071,6 +5466,9 @@ Name Afghanistan Zimbabwe 48 JSON_HB {
]
}
SurfaceArea 0.40 17075400.00 48 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0.40",
......@@ -5316,6 +5714,9 @@ SurfaceArea 0.40 17075400.00 48 JSON_HB {
]
}
Population 0 1277558000 48 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0",
......@@ -5561,6 +5962,9 @@ Population 0 1277558000 48 JSON_HB {
]
}
Capital 1 4074 47 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -5801,6 +6205,9 @@ Capital 1 4074 47 JSON_HB {
]
}
ID 1 4079 50 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -6056,6 +6463,9 @@ ID 1 4079 50 JSON_HB {
]
}
Name A Coruña (La Coruña) Ürgenc 50 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "A Coruña (La Coruña)",
......@@ -6311,6 +6721,9 @@ Name A Coruña (La Coruña) Ürgenc 50 JSON_HB {
]
}
Population 42 10500000 50 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "42",
......@@ -6566,6 +6979,9 @@ Population 42 10500000 50 JSON_HB {
]
}
Country ABW ZWE 50 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "ABW",
......@@ -6821,6 +7237,9 @@ Country ABW ZWE 50 JSON_HB {
]
}
Language Abhyasi [South]Mande 48 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "Abhyasi",
......@@ -7066,6 +7485,9 @@ Language Abhyasi [South]Mande 48 JSON_HB {
]
}
Percentage 0.0 99.9 47 JSON_HB {
"target_histogram_size": 50,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0.0",
......@@ -7342,6 +7764,9 @@ select histogram
from mysql.column_stats where table_name='t10' and db_name=database();
histogram
{
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "Berlin",
......@@ -7391,6 +7816,9 @@ SELECT DECODE_HISTOGRAM(hist_type, histogram) from mysql.column_stats;
DECODE_HISTOGRAM(hist_type, histogram)
NULL
{
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -7450,6 +7878,9 @@ from mysql.column_stats
where db_name=database() and table_name='t1';
decode_histogram(hist_type, histogram)
{
"target_histogram_size": 10,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "Ñ",
......@@ -7512,6 +7943,9 @@ test.t1 analyze status OK
select histogram from mysql.column_stats where table_name = 't1';
histogram
{
"target_histogram_size": 4,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "1",
......@@ -7584,6 +8018,9 @@ test.t1 analyze status OK
select * from mysql.column_stats where table_name='t1';
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
test t1 a 0 900 0.0000 4.0000 100.0000 10 JSON_HB {
"target_histogram_size": 254,
"collected_at": "REPLACED",
"collected_by": "REPLACED",
"histogram_hb": [
{
"start": "0",
......
......@@ -8,7 +8,6 @@ let $histogram_type_override='JSON_HB';
--source include/have_innodb.inc
--source include/have_stat_tables.inc
--source include/have_sequence.inc
--source include/analyze-format.inc
--disable_warnings
drop table if exists t1;
--enable_warnings
......@@ -33,6 +32,7 @@ set histogram_type=json_hb;
create table t1_json (a varchar(255));
insert into t1_json select concat('a-', a) from ten;
analyze table t1_json persistent for all;
--source include/json_hb_histogram.inc
select * from mysql.column_stats where table_name='t1_json';
explain extended select * from t1_json where a between 'a-3a' and 'zzzzzzzzz';
analyze select * from t1_json where a between 'a-3a' and 'zzzzzzzzz';
......@@ -134,6 +134,7 @@ set histogram_size=50;
ANALYZE TABLE Country, City, CountryLanguage persistent for all;
--enable_result_log
--source include/histogram_replaces.inc
SELECT column_name, min_value, max_value, hist_size, hist_type, histogram FROM mysql.column_stats;
analyze select * from Country use index () where Code between 'BBC' and 'GGG';
analyze select * from Country use index () where Code < 'BBC';
......@@ -161,6 +162,7 @@ from mysql.column_stats where table_name='t10' and db_name=database();
insert into t10 values ('Berlin'),('Paris'),('Rome');
set histogram_size=10, histogram_type='json_hb';
analyze table t10 persistent for all;
--source include/histogram_replaces.inc
select histogram
from mysql.column_stats where table_name='t10' and db_name=database();
drop table t10;
......@@ -184,6 +186,7 @@ CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (NULL,1), (NULL,2);
SET histogram_type = JSON_HB;
ANALYZE TABLE t1 PERSISTENT FOR ALL;
--source include/histogram_replaces.inc
SELECT DECODE_HISTOGRAM(hist_type, histogram) from mysql.column_stats;
drop table t1;
......@@ -214,6 +217,7 @@ select hex(a) from t1;
set histogram_type='json_hb';
analyze table t1 persistent for all;
--source include/histogram_replaces.inc
select decode_histogram(hist_type, histogram)
from mysql.column_stats
where db_name=database() and table_name='t1';
......@@ -228,6 +232,7 @@ create table t1 ( a varchar(100) character set cp1251);
insert into t1 values ( _cp1251 x'88'),( _cp1251 x'98');
analyze table t1 persistent for all;
--source include/histogram_replaces.inc
select hist_type, histogram
from mysql.column_stats
where db_name=database() and table_name='t1';
......@@ -265,6 +270,7 @@ insert into t1 select 6 from seq_1_to_25;
set histogram_size=4, histogram_type=JSON_HB;
analyze table t1 persistent for all;
--source include/json_hb_histogram.inc
select histogram from mysql.column_stats where table_name = 't1';
drop table t1;
......@@ -299,6 +305,7 @@ insert into t1 select 100*A.a from t0 A, t0 B, t0 C;
select a, count(*) from t1 group by a order by a;
set histogram_type=json_hb, histogram_size=default;
analyze table t1 persistent for all;
--source include/json_hb_histogram.inc
select * from mysql.column_stats where table_name='t1';
analyze select * from t1 where a=0;
analyze select * from t1 where a=50;
......
......@@ -22,7 +22,13 @@
/*
@brief
Un-escape a JSON string and save it into *out.
@detail
There's no way to tell how much space is needed for the output.
Start with a small string and increase its size until json_unescape()
succeeds.
*/
static bool json_unescape_to_string(const char *val, int val_len, String* out)
......@@ -55,7 +61,13 @@ static bool json_unescape_to_string(const char *val, int val_len, String* out)
/*
@brief
Escape a JSON string and save it into *out.
@detail
There's no way to tell how much space is needed for the output.
Start with a small string and increase its size until json_escape()
succeeds.
*/
static bool json_escape_to_string(const String *str, String* out)
......@@ -145,6 +157,8 @@ class Histogram_json_builder : public Histogram_builder
bucket.size= 0;
writer.start_object();
append_histogram_params();
writer.add_member(Histogram_json_hb::JSON_NAME).start_array();
}
......@@ -153,6 +167,27 @@ class Histogram_json_builder : public Histogram_builder
private:
bool bucket_is_empty() { return bucket.ndv == 0; }
void append_histogram_params()
{
char buf[128];
time_t cur_time_t= my_time(0);
struct tm curtime;
localtime_r(&cur_time_t, &curtime);
my_snprintf(buf, sizeof(buf), "%d-%02d-%02d %2d:%02d:%02d %s",
curtime.tm_year + 1900,
curtime.tm_mon+1,
curtime.tm_mday,
curtime.tm_hour,
curtime.tm_min,
curtime.tm_sec,
system_time_zone);
writer.add_member("target_histogram_size").add_ull(hist_width);
writer.add_member("collected_at").add_str(buf);
writer.add_member("collected_by").add_str(server_version);
}
/*
Flush the current bucket out (to JSON output), and set it to be empty.
*/
......@@ -423,6 +458,15 @@ class Json_saved_parser_state
};
/*
@brief
Read a constant from JSON document and save it in *out.
@detail
The JSON document stores constant in text form, we need to save it in
KeyTupleFormat. String constants in JSON may be escaped.
*/
bool read_bucket_endpoint(json_engine_t *je, Field *field, String *out,
const char **err)
{
......@@ -508,8 +552,9 @@ int Histogram_json_hb::parse_bucket(json_engine_t *je, Field *field,
double size_d;
longlong ndv_ll;
StringBuffer<128> value_buf;
int rc;
while (!json_scan_next(je) && je->state != JST_OBJ_END)
while (!(rc= json_scan_next(je)) && je->state != JST_OBJ_END)
{
Json_saved_parser_state save1(je);
Json_string start_str("start");
......@@ -579,6 +624,9 @@ int Histogram_json_hb::parse_bucket(json_engine_t *je, Field *field,
return 1;
}
if (rc)
return 1;
if (!have_start)
{
*err= "\"start\" element not present";
......@@ -625,13 +673,12 @@ bool Histogram_json_hb::parse(MEM_ROOT *mem_root, const char *db_name,
json_engine_t je;
int rc;
const char *err= "JSON parse error";
double total_size= 0.0;
int end_element= -1;
double total_size;
int end_element;
bool end_assigned;
DBUG_ENTER("Histogram_json_hb::parse");
DBUG_ASSERT(type_arg == JSON_HB);
Json_string hist_key_name(JSON_NAME);
json_scan_start(&je, &my_charset_utf8mb4_bin,
(const uchar*)hist_data,
(const uchar*)hist_data+hist_data_len);
......@@ -645,15 +692,21 @@ bool Histogram_json_hb::parse(MEM_ROOT *mem_root, const char *db_name,
goto err;
}
while (1)
{
if (json_scan_next(&je))
goto err;
if (je.state == JST_OBJ_END)
break; // End of object
if (je.state != JST_KEY || !json_key_matches(&je, hist_key_name.get()))
{
err= "Root element must be histogram_hb";
goto err;
}
if (je.state != JST_KEY)
goto err; // Can' really have this: JSON object has keys in it
Json_string hist_key_name(JSON_NAME);
if (json_key_matches(&je, hist_key_name.get()))
{
total_size= 0.0;
end_element= -1;
if (json_scan_next(&je))
goto err;
......@@ -668,9 +721,16 @@ bool Histogram_json_hb::parse(MEM_ROOT *mem_root, const char *db_name,
if (end_assigned && end_element != -1)
end_element= (int)buckets.size();
}
if (rc > 0) // Got error other than EOF
goto err;
}
else
{
// Some unknown member. Skip it.
if (json_skip_key(&je))
return 1;
}
}
if (buckets.size() < 1)
{
......
......@@ -24,6 +24,11 @@
Histogram format in JSON:
{
// The next three are saved but not currently analyzed:
"target_histogram_size": nnn,
"collected_at": "(date and time)",
"collected_by": "(server version)",
"histogram_hb": [
{ "start": "value", "size":nnn.nn, "ndv": nnn },
...
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment