revision-id: e92d464e51f869144d683e19368762e74f5c7e98 (mariadb-10.6.1-123-ge92d464e51f) parent(s): bfdc2ee636901e6f4c86a94e082092e5edc931a1 author: Sergei Petrunia committer: Sergei Petrunia timestamp: 2021-09-10 10:45:04 +0300 message: MDEV-26519: JSON Histograms: improve histogram collection Basic ideas: 1. Store "popular" values in their own buckets. 2. Also store ndv (Number of Distinct Values) in each bucket. Because of #1, the buckets are now variable-size, so store the size in each bucket. Adjust selectivity estimation functions accordingly. --- mysql-test/main/statistics_json.result | 6538 ++++++++++++++++++++++++++------ sql/opt_histogram_json.cc | 453 ++- sql/opt_histogram_json.h | 51 +- 3 files changed, 5723 insertions(+), 1319 deletions(-) diff --git a/mysql-test/main/statistics_json.result b/mysql-test/main/statistics_json.result index 102fcfff194..75ba065f89b 100644 --- a/mysql-test/main/statistics_json.result +++ b/mysql-test/main/statistics_json.result @@ -232,12 +232,12 @@ nulls_ratio, avg_frequency, hist_size, hist_type, HEX(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 t1 a 0 49 0.0000 1.0000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B2230222C20223131222C20223234222C20223338222C20223439225D0A7D -test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B0A202020202276767676767676767676767676222C0A202020202277777777777777777777777777777777777777777777777777777777222C0A20202020227878787878787878787878787878787878787878787878787878222C0A2020202022797979222C0A20202020227A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A220A20205D0A7D -test t1 c aaaa dddddddd 0.1250 7.0000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B2261616161222C202261616161222C2022636363636363636363222C20226464646464646464222C20226464646464646464225D0A7D -test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B0A2020202022313938392D30332D3132222C0A2020202022313938392D30332D3132222C0A2020202022313939302D30352D3135222C0A2020202022313939382D30382D3238222C0A2020202022313939392D30372D3233220A20205D0A7D -test t1 e 0.01 0.112 0.2250 6.2000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B22302E3031222C2022302E3031222C2022302E3035222C2022302E31222C2022302E313132225D0A7D -test t1 f 1 5 0.2000 6.4000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B2201222C202202222C202203222C202204222C202205225D0A7D +test t1 a 0 49 0.0000 1.0000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202230222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A2031300A202020207D2C0A202020207B0A202020202020227374617274223A20223131222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A2031300A202020207D2C0A202020207B0A202020202020227374617274223A20223234222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A2031300A202020207D2C0A202020207B0A202020202020227374617274223A20223338222C0A20202020202022656E64223A20223439222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A2031300A202020207D0A20205D0A7D +test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202276767676767676767676767676222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202277777777777777777777777777777777777777777777777777777777222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A20227878787878787878787878787878787878787878787878787878222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022797979222C0A20202020202022656E64223A20227A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20320A202020207D0A20205D0A7D +test t1 c aaaa dddddddd 0.1250 7.0000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202261616161222C0A2020202020202273697A65223A20302E3235373134323835372C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022626262222C0A2020202020202273697A65223A20302E3232383537313432392C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022636363636363636363222C0A2020202020202273697A65223A20302E3232383537313432392C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A20226464646464646464222C0A20202020202022656E64223A20226464646464646464222C0A2020202020202273697A65223A20302E3238353731343238362C0A202020202020226E6476223A20310A202020207D0A20205D0A7D +test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A2022313938392D30332D3132222C0A2020202020202273697A65223A20302E3332333532393431322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022313939302D30352D3135222C0A2020202020202273697A65223A20302E3431313736343730362C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022313939382D30382D3238222C0A2020202020202273697A65223A20302E3233353239343131382C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022313939392D30372D3233222C0A20202020202022656E64223A2022313939392D30372D3233222C0A2020202020202273697A65223A20302E3032393431313736352C0A202020202020226E6476223A20310A202020207D0A20205D0A7D +test t1 e 0.01 0.112 0.2250 6.2000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A2022302E3031222C0A2020202020202273697A65223A20302E3338373039363737342C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E303132222C0A2020202020202273697A65223A20302E3232353830363435322C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022302E31222C0A2020202020202273697A65223A20302E3235383036343531362C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E313132222C0A20202020202022656E64223A2022302E313132222C0A2020202020202273697A65223A20302E3132393033323235382C0A202020202020226E6476223A20310A202020207D0A20205D0A7D +test t1 f 1 5 0.2000 6.4000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202201222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A202202222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A202203222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A202204222C0A20202020202022656E64223A202205222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20320A202020207D0A20205D0A7D DELETE FROM mysql.column_stats; set histogram_size=8; set histogram_type=@DOUBLE_PREC_TYPE; @@ -251,12 +251,12 @@ nulls_ratio, avg_frequency, hist_size, hist_type, HEX(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 t1 a 0 49 0.0000 1.0000 8 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B2230222C202235222C20223131222C20223138222C20223234222C20223332222C20223338222C20223433222C20223439225D0A7D -test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 8 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B0A202020202276767676767676767676767676222C0A202020202276767676767676767676767676222C0A202020202277777777777777777777777777777777777777777777777777777777222C0A202020202277777777777777777777777777777777777777777777777777777777222C0A20202020227878787878787878787878787878787878787878787878787878222C0A2020202022797979222C0A2020202022797979222C0A20202020227A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A222C0A20202020227A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A220A20205D0A7D -test t1 c aaaa dddddddd 0.1250 7.0000 8 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B0A202020202261616161222C0A202020202261616161222C0A202020202261616161222C0A2020202022626262626262222C0A2020202022636363636363636363222C0A2020202022636363636363636363222C0A20202020226464646464646464222C0A20202020226464646464646464222C0A20202020226464646464646464220A20205D0A7D -test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 8 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B0A2020202022313938392D30332D3132222C0A2020202022313938392D30332D3132222C0A2020202022313938392D30332D3132222C0A2020202022313939302D30352D3135222C0A2020202022313939302D30352D3135222C0A2020202022313939302D30352D3135222C0A2020202022313939382D30382D3238222C0A2020202022313939392D30372D3233222C0A2020202022313939392D30372D3233220A20205D0A7D -test t1 e 0.01 0.112 0.2250 6.2000 8 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B0A2020202022302E3031222C0A2020202022302E3031222C0A2020202022302E3031222C0A2020202022302E3031222C0A2020202022302E3035222C0A2020202022302E31222C0A2020202022302E31222C0A2020202022302E313132222C0A2020202022302E313132220A20205D0A7D -test t1 f 1 5 0.2000 6.4000 8 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B2201222C202202222C202202222C202203222C202203222C202204222C202204222C202205222C202205225D0A7D +test t1 a 0 49 0.0000 1.0000 8 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202230222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A202235222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A20223131222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A20223138222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A20223234222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A20223332222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A20223338222C0A202020202020227369 7A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A20223433222C0A20202020202022656E64223A20223439222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20350A202020207D0A20205D0A7D +test t1 b vvvvvvvvvvvvv zzzzzzzzzzzzzzzzzz 0.2000 6.4000 5 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202276767676767676767676767676222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202277777777777777777777777777777777777777777777777777777777222C0A2020202020202273697A65223A20302E32313837352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A20227878787878787878787878787878787878787878787878787878222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022797979222C0A2020202020202273697A65223A20302E313837352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A20227A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A222C0A20202020202022656E64223A20227A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A222C0A2020202020202273697A65223A20302E3231 3837352C0A202020202020226E6476223A20310A202020207D0A20205D0A7D +test t1 c aaaa dddddddd 0.1250 7.0000 5 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202261616161222C0A2020202020202273697A65223A20302E3235373134323835372C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022626262222C0A2020202020202273697A65223A20302E3032383537313432392C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022626262626262222C0A2020202020202273697A65223A20302E322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022636363636363636363222C0A2020202020202273697A65223A20302E3232383537313432392C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A20226464646464646464222C0A20202020202022656E64223A20226464646464646464222C0A2020202020202273697A65223A20302E3238353731343238362C0A202020202020226E6476223A20310A202020207D0A20205D0A7D +test t1 d 1989-03-12 1999-07-23 0.1500 8.5000 4 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A2022313938392D30332D3132222C0A2020202020202273697A65223A20302E3332333532393431322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022313939302D30352D3135222C0A2020202020202273697A65223A20302E3431313736343730362C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022313939382D30382D3238222C0A2020202020202273697A65223A20302E3032393431313736352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022313939392D30372D3233222C0A20202020202022656E64223A2022313939392D30372D3233222C0A2020202020202273697A65223A20302E3233353239343131382C0A202020202020226E6476223A20310A202020207D0A20205D0A7D +test t1 e 0.01 0.112 0.2250 6.2000 5 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A2022302E3031222C0A2020202020202273697A65223A20302E3338373039363737342C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E303132222C0A2020202020202273697A65223A20302E3036343531363132392C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E3035222C0A2020202020202273697A65223A20302E3136313239303332332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E31222C0A2020202020202273697A65223A20302E3235383036343531362C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E313132222C0A20202020202022656E64223A2022302E313132222C0A2020202020202273697A65223A20302E3132393033323235382C0A202020202020226E6476223A20310A202020207D0A20205D0A7D +test t1 f 1 5 0.2000 6.4000 5 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202201222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202202222C0A2020202020202273697A65223A20302E32352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202203222C0A2020202020202273697A65223A20302E313837352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202204222C0A2020202020202273697A65223A20302E333132352C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202205222C0A20202020202022656E64223A202205222C0A2020202020202273697A65223A20302E3132352C0A202020202020226E6476223A20310A202020207D0A20205D0A7D DELETE FROM mysql.column_stats; set histogram_size= 0; set histogram_type=@SINGLE_PREC_TYPE; @@ -1500,112 +1500,477 @@ max_value 99.9 nulls_ratio 0.0000 avg_length 4.0000 avg_frequency 2.7640 -hist_size 100 +hist_size 93 hist_type JSON_HB -hex(histogram) 7B0A202022686973746F6772616D5F68625F7631223A205B0A2020202022302E30222C0A2020202022302E30222C0A2020202022302E30222C0A2020202022302E30222C0A2020202022302E30222C0A2020202022302E30222C0A2020202022302E30222C0A2020202022302E31222C0A2020202022302E31222C0A2020202022302E32222C0A2020202022302E32222C0A2020202022302E33222C0A2020202022302E33222C0A2020202022302E34222C0A2020202022302E34222C0A2020202022302E34222C0A2020202022302E35222C0A2020202022302E35222C0A2020202022302E36222C0A2020202022302E36222C0A2020202022302E37222C0A2020202022302E38222C0A2020202022302E39222C0A2020202022312E30222C0A2020202022312E31222C0A2020202022312E33222C0A2020202022312E33222C0A2020202022312E34222C0A2020202022312E35222C0A2020202022312E36222C0A2020202022312E37222C0A2020202022312E38222C0A2020202022312E39222C0A2020202022322E30222C0A2020202022322E32222C0A2020202022322E33222C0A2020202022322E34222C0A2020202022322E35222C0A2020202022322E37222C0A2020202022322E38222C0A2020202022332E30222C0A2020202022332E32222C0A20202020 22332E33222C0A2020202022332E35222C0A2020202022332E37222C0A2020202022332E38222C0A2020202022342E31222C0A2020202022342E33222C0A2020202022342E37222C0A2020202022342E39222C0A2020202022352E33222C0A2020202022352E35222C0A2020202022352E37222C0A2020202022352E39222C0A2020202022362E34222C0A2020202022362E37222C0A2020202022372E30222C0A2020202022372E34222C0A2020202022372E36222C0A2020202022372E38222C0A2020202022382E32222C0A2020202022382E37222C0A2020202022392E30222C0A2020202022392E33222C0A2020202022392E37222C0A202020202231302E35222C0A202020202231312E30222C0A202020202231312E38222C0A202020202231322E34222C0A202020202231332E32222C0A202020202231342E30222C0A202020202231352E38222C0A202020202231362E35222C0A202020202231382E30222C0A202020202231392E37222C0A202020202232312E32222C0A202020202232332E32222C0A202020202232372E38222C0A202020202233312E30222C0A202020202233322E39222C0A202020202233362E34222C0A202020202234312E36222C0A202020202234352E37222C0A202020202235302E32222C0A202020202235322E36222C0A202020202236302E332 22C0A202020202236352E33222C0A202020202237322E31222C0A202020202237362E37222C0A202020202238312E32222C0A202020202238352E36222C0A202020202238372E36222C0A202020202238392E37222C0A202020202239322E31222C0A202020202239342E31222C0A202020202239352E38222C0A202020202239372E32222C0A202020202239382E31222C0A202020202239392E30222C0A202020202239392E39222C0A202020202239392E39220A20205D0A7D +hex(histogram) 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A2022302E30222C0A2020202020202273697A65223A20302E3036363035363931312C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E31222C0A2020202020202273697A65223A20302E3032303332353230332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E32222C0A2020202020202273697A65223A20302E3032323335373732342C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E33222C0A2020202020202273697A65223A20302E3031373237363432332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E34222C0A2020202020202273697A65223A20302E3032353430363530342C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E35222C0A2020202020202273697A65223A20302E3032303332353230332C0A202020202020226E6476223A20310A202020207D2C0A20202020 7B0A202020202020227374617274223A2022302E36222C0A2020202020202273697A65223A20302E3032303332353230332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E37222C0A2020202020202273697A65223A20302E3031373237363432332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E38222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022302E39222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022312E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022312E32222C0A2020202020202273697A65223 A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022312E33222C0A2020202020202273697A65223A20302E3030353038313330312C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E34222C0A2020202020202273697A65223A20302E3031353234333930322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E35222C0A2020202020202273697A65223A20302E3030353038313330312C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E36222C0A2020202020202273697A65223A20302E3031353234333930322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E37222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022312E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A 202020207B0A202020202020227374617274223A2022312E39222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E32222C0A2020202020202273697A65223A20302E3031313137383836322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022322E33222C0A2020202020202273697A65223A20302E3031303136323630322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022322E34222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A2022322E35222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E36222C0A20202020202022736 97A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022322E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022322E39222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022332E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022332E32222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022332E33222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022332E35222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020 207D2C0A202020207B0A202020202020227374617274223A2022332E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022332E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022342E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022342E33222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022342E36222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022342E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022352E30222C0A202020202 0202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A2022352E34222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022352E36222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022352E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022362E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022362E34222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20320A202020207D2C0A202020207B0A202020202020227374617274223A2022362E36222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A2034 0A202020207D2C0A202020207B0A202020202020227374617274223A2022362E39222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A2022372E33222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022372E35222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022372E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022382E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022382E35222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20330A202020207D2C0A202020207B0A202020202020227374617274223A2022382E37222C0A2 020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022392E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022392E34222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A2022392E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231302E35222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231312E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231312E36222C0A2020202020202273697A65223A20302E3030393134363334312C0A20202020202022 6E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202231322E33222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231322E39222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202231332E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202231342E36222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202231362E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20350A202020207D2C0A202020207B0A202020202020227374617274223A202231362E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A2020202020202273746 17274223A202231382E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202231392E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202232312E32222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202232332E32222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202232372E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202233302E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202233322E33222C0A2020202020202273697A65223A20302E30 30393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202233342E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202233392E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202234332E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202234372E35222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202235302E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202235352E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2 C0A202020207B0A202020202020227374617274223A202236302E34222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20380A202020207D2C0A202020207B0A202020202020227374617274223A202236352E33222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202237312E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202237362E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202238302E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202238342E38222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202238362E36222C0A 2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20390A202020207D2C0A202020207B0A202020202020227374617274223A202238382E39222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239302E37222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239332E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239352E30222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202239352E39222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20370A202020207D2C0A202020207B0A202020202020227374617274223A202239372E33222C0A2020202020202273697A65223A20302E3030393134363334312C0A2020202 02020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202239382E31222C0A2020202020202273697A65223A20302E3030393134363334312C0A202020202020226E6476223A20360A202020207D2C0A202020207B0A202020202020227374617274223A202239392E30222C0A2020202020202273697A65223A20302E3030363039373536312C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A202239392E39222C0A20202020202022656E64223A202239392E39222C0A2020202020202273697A65223A20302E3031353234333930322C0A202020202020226E6476223A20310A202020207D0A20205D0A7D decode_histogram(hist_type,histogram) { - "histogram_hb_v1": [ - "0.0", - "0.0", - "0.0", - "0.0", - "0.0", - "0.0", - "0.0", - "0.1", - "0.1", - "0.2", - "0.2", - "0.3", - "0.3", - "0.4", - "0.4", - "0.4", - "0.5", - "0.5", - "0.6", - "0.6", - "0.7", - "0.8", - "0.9", - "1.0", - "1.1", - "1.3", - "1.3", - "1.4", - "1.5", - "1.6", - "1.7", - "1.8", - "1.9", - "2.0", - "2.2", - "2.3", - "2.4", - "2.5", - "2.7", - "2.8", - "3.0", - "3.2", - "3.3", - "3.5", - "3.7", - "3.8", - "4.1", - "4.3", - "4.7", - "4.9", - "5.3", - "5.5", - "5.7", - "5.9", - "6.4", - "6.7", - "7.0", - "7.4", - "7.6", - "7.8", - "8.2", - "8.7", - "9.0", - "9.3", - "9.7", - "10.5", - "11.0", - "11.8", - "12.4", - "13.2", - "14.0", - "15.8", - "16.5", - "18.0", - "19.7", - "21.2", - "23.2", - "27.8", - "31.0", - "32.9", - "36.4", - "41.6", - "45.7", - "50.2", - "52.6", - "60.3", - "65.3", - "72.1", - "76.7", - "81.2", - "85.6", - "87.6", - "89.7", - "92.1", - "94.1", - "95.8", - "97.2", - "98.1", - "99.0", - "99.9", - "99.9" + "histogram_hb_v2": [ + { + "start": "0.0", + "size": 0.066056911, + "ndv": 1 + }, + { + "start": "0.1", + "size": 0.020325203, + "ndv": 1 + }, + { + "start": "0.2", + "size": 0.022357724, + "ndv": 1 + }, + { + "start": "0.3", + "size": 0.017276423, + "ndv": 1 + }, + { + "start": "0.4", + "size": 0.025406504, + "ndv": 1 + }, + { + "start": "0.5", + "size": 0.020325203, + "ndv": 1 + }, + { + "start": "0.6", + "size": 0.020325203, + "ndv": 1 + }, + { + "start": "0.7", + "size": 0.017276423, + "ndv": 1 + }, + { + "start": "0.8", + "size": 0.010162602, + "ndv": 1 + }, + { + "start": "0.9", + "size": 0.010162602, + "ndv": 1 + }, + { + "start": "1.0", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "1.1", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "1.2", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "1.3", + "size": 0.005081301, + "ndv": 1 + }, + { + "start": "1.4", + "size": 0.015243902, + "ndv": 1 + }, + { + "start": "1.5", + "size": 0.005081301, + "ndv": 1 + }, + { + "start": "1.6", + "size": 0.015243902, + "ndv": 1 + }, + { + "start": "1.7", + "size": 0.010162602, + "ndv": 1 + }, + { + "start": "1.8", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "1.9", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "2.0", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "2.2", + "size": 0.011178862, + "ndv": 1 + }, + { + "start": "2.3", + "size": 0.010162602, + "ndv": 1 + }, + { + "start": "2.4", + "size": 0.009146341, + "ndv": 1 + }, + { + "start": "2.5", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "2.6", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "2.7", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "2.9", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "3.1", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "3.2", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "3.3", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "3.5", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "3.7", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "3.8", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "4.1", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "4.3", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "4.6", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "4.8", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "5.0", + "size": 0.009146341, + "ndv": 5 + }, + { + "start": "5.4", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "5.6", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "5.7", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "6.0", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "6.4", + "size": 0.009146341, + "ndv": 2 + }, + { + "start": "6.6", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "6.9", + "size": 0.009146341, + "ndv": 5 + }, + { + "start": "7.3", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "7.5", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "7.8", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "8.1", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "8.5", + "size": 0.009146341, + "ndv": 3 + }, + { + "start": "8.7", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "9.0", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "9.4", + "size": 0.009146341, + "ndv": 4 + }, + { + "start": "9.7", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "10.5", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "11.0", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "11.6", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "12.3", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "12.9", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "13.8", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "14.6", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "16.1", + "size": 0.009146341, + "ndv": 5 + }, + { + "start": "16.8", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "18.1", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "19.7", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "21.2", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "23.2", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "27.7", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "30.0", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "32.3", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "34.8", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "39.8", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "43.7", + "size": 0.009146341, + "ndv": 9 + }, + { + "start": "47.5", + "size": 0.009146341, + "ndv": 9 + }, + { + "start": "50.8", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "55.1", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "60.4", + "size": 0.009146341, + "ndv": 8 + }, + { + "start": "65.3", + "size": 0.009146341, + "ndv": 9 + }, + { + "start": "71.7", + "size": 0.009146341, + "ndv": 9 + }, + { + "start": "76.7", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "80.0", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "84.8", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "86.6", + "size": 0.009146341, + "ndv": 9 + }, + { + "start": "88.9", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "90.7", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "93.0", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "95.0", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "95.9", + "size": 0.009146341, + "ndv": 7 + }, + { + "start": "97.3", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "98.1", + "size": 0.009146341, + "ndv": 6 + }, + { + "start": "99.0", + "size": 0.006097561, + "ndv": 4 + }, + { + "start": "99.9", + "end": "99.9", + "size": 0.015243902, + "ndv": 1 + } ] } 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';; @@ -1617,266 +1982,1287 @@ max_value 10500000 nulls_ratio 0.0000 avg_length 4.0000 avg_frequency 1.0467 -hist_size 254 +hist_size 255 hist_type JSON_HB -hex(histogram) 7B0A202022686973746F6772616D5F68625F7631223A205B0A20202020223432222C0A202020202231353030222C0A202020202235323030222C0A20202020223133313534222C0A20202020223237303235222C0A20202020223531393639222C0A20202020223839303633222C0A20202020223839343030222C0A20202020223839393030222C0A20202020223930323030222C0A20202020223930363033222C0A20202020223930393539222C0A20202020223931323033222C0A20202020223931373739222C0A20202020223932323339222C0A20202020223932353833222C0A20202020223933303030222C0A20202020223933333436222C0A20202020223933393030222C0A20202020223934313933222C0A20202020223934363835222C0A20202020223935303030222C0A20202020223935343438222C0A20202020223936303030222C0A20202020223936333232222C0A20202020223936383030222C0A20202020223937313638222C0A20202020223937363030222C0A20202020223938313233222C0A20202020223938333939222C0A20202020223938393030222C0A20202020223939343030222C0A20202020223939383931222C0A2020202022313030313439222C0A2020202022313030353435222C0A2020202022313030393430222C0A 2020202022313031323935222C0A2020202022313031363536222C0A2020202022313032303532222C0A2020202022313032333631222C0A2020202022313032373136222C0A2020202022313033323737222C0A2020202022313033353739222C0A2020202022313034313436222C0A2020202022313034373635222C0A2020202022313035313939222C0A2020202022313035373030222C0A2020202022313036303738222C0A2020202022313036363030222C0A2020202022313037303036222C0A2020202022313037343030222C0A2020202022313037373939222C0A2020202022313038323737222C0A2020202022313038373234222C0A2020202022313039323235222C0A2020202022313039353736222C0A2020202022313130303136222C0A2020202022313130353331222C0A2020202022313131323538222C0A2020202022313131383832222C0A2020202022313132343530222C0A2020202022313133313335222C0A2020202022313133393538222C0A2020202022313134333935222C0A2020202022313134393830222C0A2020202022313135363938222C0A2020202022313136323536222C0A2020202022313136393239222C0A2020202022313137353339222C0A2020202022313138323030222C0A2020202022313138383538222C0A20202020223131393 43030222C0A2020202022313139393930222C0A2020202022313230363435222C0A2020202022313231303937222C0A2020202022313231373038222C0A2020202022313232313036222C0A2020202022313233313030222C0A2020202022313233343030222C0A2020202022313233393538222C0A2020202022313234323739222C0A2020202022313234393433222C0A2020202022313235343037222C0A2020202022313235393937222C0A2020202022313236333436222C0A2020202022313237303030222C0A2020202022313237343834222C0A2020202022313237393639222C0A2020202022313238373330222C0A2020202022313239373030222C0A2020202022313330323135222C0A2020202022313331313338222C0A2020202022313331383631222C0A2020202022313332373434222C0A2020202022313333333030222C0A2020202022313333383539222C0A2020202022313334343139222C0A2020202022313335363033222C0A2020202022313336363937222C0A2020202022313337323635222C0A2020202022313337393934222C0A2020202022313338393033222C0A2020202022313339363732222C0A2020202022313430343539222C0A2020202022313431343638222C0A2020202022313432333032222C0A2020202022313433303732222C0A202020 2022313434313538222C0A2020202022313435313530222C0A2020202022313436303836222C0A2020202022313437303030222C0A2020202022313437373434222C0A2020202022313438353833222C0A2020202022313439373032222C0A2020202022313530363234222C0A2020202022313531373538222C0A2020202022313532393833222C0A2020202022313534323937222C0A2020202022313535323434222C0A2020202022313536343638222C0A2020202022313538303030222C0A2020202022313539313033222C0A2020202022313630363339222C0A2020202022313631393130222C0A2020202022313633333531222C0A2020202022313634343633222C0A2020202022313635353833222C0A2020202022313637303531222C0A2020202022313638373032222C0A2020202022313639393330222C0A2020202022313731303536222C0A2020202022313732333537222C0A2020202022313733363030222C0A2020202022313734353030222C0A2020202022313735363631222C0A2020202022313737353232222C0A2020202022313738373438222C0A2020202022313739383138222C0A2020202022313831333339222C0A2020202022313832363339222C0A2020202022313833353030222C0A2020202022313834383539222C0A20202020223138363030302 22C0A2020202022313837363931222C0A2020202022313839303336222C0A2020202022313930313233222C0A2020202022313932323437222C0A2020202022313934303030222C0A2020202022313935333436222C0A2020202022313936353139222C0A2020202022313938313833222C0A2020202022323030313731222C0A2020202022323031353638222C0A2020202022323033323936222C0A2020202022323035353630222C0A2020202022323037313030222C0A2020202022323039303338222C0A2020202022323131373030222C0A2020202022323134323934222C0A2020202022323135353837222C0A2020202022323137383034222C0A2020202022323139373733222C0A2020202022323232303330222C0A2020202022323233383931222C0A2020202022323236353039222C0A2020202022323239303630222C0A2020202022323331373234222C0A2020202022323335303733222C0A2020202022323337373133222C0A2020202022323430393030222C0A2020202022323432383230222C0A2020202022323434393734222C0A2020202022323437343532222C0A2020202022323531333438222C0A2020202022323534333530222C0A2020202022323536343030222C0A2020202022323630353132222C0A2020202022323633323437222C0A202020202232 3635343530222C0A2020202022323639363030222C0A2020202022323732303538222C0A2020202022323735383037222C0A2020202022323738333137222C0A2020202022323832303730222C0A2020202022323836303030222C0A2020202022323839333736222C0A2020202022323933313035222C0A2020202022323937303030222C0A2020202022333030353030222C0A2020202022333033343437222C0A2020202022333038353731222C0A2020202022333132393237222C0A2020202022333136343338222C0A2020202022333230303935222C0A2020202022333235303030222C0A2020202022333239383530222C0A2020202022333333323030222C0A2020202022333337393737222C0A2020202022333432323030222C0A2020202022333438303730222C0A2020202022333533303436222C0A2020202022333537353532222C0A2020202022333631393538222C0A2020202022333635333832222C0A2020202022333731363031222C0A2020202022333739353230222C0A2020202022333834303030222C0A2020202022333931313730222C0A2020202022333939313735222C0A2020202022343037303138222C0A2020202022343136323839222C0A2020202022343230303030222C0A2020202022343237363532222C0A2020202022343334333734222C0A2 020202022343431393638222C0A2020202022343530323838222C0A2020202022343539383834222C0A2020202022343639303030222C0A2020202022343735363537222C0A2020202022343832333030222C0A2020202022343930353234222C0A2020202022353038303030222C0A2020202022353138323832222C0A2020202022353239303933222C0A2020202022353430333330222C0A2020202022353633323130222C0A2020202022353737333532222C0A2020202022353933333231222C0A2020202022363130303030222C0A2020202022363334303635222C0A2020202022363536353632222C0A2020202022363734313030222C0A2020202022373033303030222C0A2020202022373330303030222C0A2020202022373632303030222C0A2020202022373932383538222C0A2020202022383233333031222C0A2020202022383734303030222C0A2020202022393335333631222C0A2020202022393839393735222C0A202020202231303430303030222C0A202020202231303936383239222C0A202020202231313531323734222C0A202020202231323137333539222C0A202020202231323937353236222C0A202020202231333738303837222C0A202020202231353033343531222C0A202020202231363734303030222C0A202020202231393638343030222C0A 202020202232313339313235222C0A202020202232353539343234222C0A202020202232393430363233222C0A202020202234303137373333222C0A202020202236343634363933222C0A20202020223130353030303030220A20205D0A7D +hex(histogram) 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A20223432222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231353030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202235323030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223133313534222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223237303235222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223531393639222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A20202020 7D2C0A202020207B0A202020202020227374617274223A20223839303633222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223839343030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223839393030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A20340A202020207D2C0A202020207B0A202020202020227374617274223A20223930323030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223930363033222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223930393539222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223 931323033222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223931373739222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031320A202020207D2C0A202020207B0A202020202020227374617274223A20223932323339222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A20223932353833222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A20223933303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223933333432222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223933383937222C0A2020202020202273697A65223A20302E30 303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A20223934313030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223934363531222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223934393437222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223935343131222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223936303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223936333135222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360 A202020207D2C0A202020207B0A202020202020227374617274223A20223936383030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223937313638222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A20223937353037222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A20223938313030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223938333834222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223938383138222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A2020202020202273746172 74223A20223939333837222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A20223939383632222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313030313331222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313030343930222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313030393136222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031310A202020207D2C0A202020207B0A202020202020227374617274223A2022313031323436222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313031353738222C0A2020202020202 273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313032303139222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313032333034222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313032373032222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313033323131222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031310A202020207D2C0A202020207B0A202020202020227374617274223A2022313033353536222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313034303133222C0A2020202020202273697A65223A20302E30303339323235332C 0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313034373233222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313035313636222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313035363932222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031320A202020207D2C0A202020207B0A202020202020227374617274223A2022313036303034222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313036353233222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313037303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202 020207D2C0A202020207B0A202020202020227374617274223A2022313037333534222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313037373730222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313038313231222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313038353738222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313039313834222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313039353030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A20202020202022 7374617274223A2022313039393735222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313130343230222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313131323030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313131373632222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031320A202020207D2C0A202020207B0A202020202020227374617274223A2022313132343139222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313133303930222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313133383636222C0A2 020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313134323336222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313134393030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313135353438222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313136313838222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313136373630222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313137323538222C0A2020202020202273697A65223A20302E303033 39323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313138303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313138373531222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313139323837222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313139383030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313230333738222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313231303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223 A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313231363030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313231393637222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313232373335222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313233333636222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313233383735222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313234323135222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A20 2020202020227374617274223A2022313234373735222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313235333030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313235383132222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313236333033222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313236383732222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313237323834222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A20223132373 83135222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313238333538222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313239343534222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031320A202020207D2C0A202020207B0A202020202020227374617274223A2022313330303331222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313331303131222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313331373139222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313332353030222C0A2020202020202273697A65223A 20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313333313638222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313333363735222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313334303531222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313335303234222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313336333936222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313337303631222C0A2020202020202273697A65223A20302E30303339323235332C0A20202020202 0226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313337383030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313338343639222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313339333537222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313430303432222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313431303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313432303438222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A20 2020207B0A202020202020227374617274223A2022313432363930222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313433373236222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313434373631222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313435383233222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313436353134222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313437353237222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223 A2022313438313130222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313439323232222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313530313132222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022313531303639222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313532343633222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313533333833222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313535303030222C0A20202020202022 73697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313535393431222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313537333332222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313538333436222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313539363635222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313631313931222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313632343732222C0A2020202020202273697A65223A20302E30303339323235332C0 A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313633393030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313634383531222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313636353132222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313637363631222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313639333033222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313730353030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A2020 20207D2C0A202020207B0A202020202020227374617274223A2022313731363537222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313732373130222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313733393737222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313735303631222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313736353831222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313738323030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227 374617274223A2022313739323039222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313830323733222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313831393030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313833313333222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313834313635222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313835363333222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313836393339222C0A20 20202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313838343433222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313839353934222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313931313634222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313933313536222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031330A202020207D2C0A202020207B0A202020202020227374617274223A2022313934333031222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313935363239222C0A2020202020202273697A65223A20302E3030333 9323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022313937323736222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022313939313834222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323031303733222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323032343531222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323034383939222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022323036323239222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A 2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323037383434222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323130333638222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323132393737222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323134393537222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323136393033222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323138353030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202 020202020227374617274223A2022323231303437222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323232373030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323234383937222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323237373030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323239373030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323333343030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A202232333630 3030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323339363030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323431373639222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323433373731222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323436323036222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323438343733222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323533303030222C0A2020202020202273697A65223A2 0302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323534383637222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323537383632222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323632303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323634313135222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323636353639222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022323730333234222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020 226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323733303630222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323736393136222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323739393830222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323833303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022323837303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022323931313137222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202 020207B0A202020202020227374617274223A2022323934313235222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022323939303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022333031323937222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333034393532222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333039393030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022333133363139222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A 2022333138353632222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333232363835222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333236373736222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333330333132222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333335303738222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333339313934222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333433333030222C0A202020202020227 3697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333439353831222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333534313339222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333539343030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022333632373733222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333636373132222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333734393435222C0A2020202020202273697A65223A20302E30303339323235332C0A 202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333830383436222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333835323031222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022333933303330222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343031323831222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343039363332222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343137353137222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A20202 0207D2C0A202020207B0A202020202020227374617274223A2022343232353432222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343239303736222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343336393030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343434323939222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343533383133222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022343631313236222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A2020202020202273 74617274223A2022343730373831222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343738313535222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343834363734222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022343935353430222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022353039353130222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022353139383733222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031340A202020207D2C0A202020207B0A202020202020227374617274223A2022353330303030222C0A202 0202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022353431313632222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022353634353839222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022353830313030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022353936393734222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022363138343737222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022363339303030222C0A2020202020202273697A65223A20302E30303339 323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022363538363330222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022363833373934222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022373036373730222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022373338313530222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022373638303832222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022373938343330222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2 031350A202020207D2C0A202020207B0A202020202020227374617274223A2022383337353838222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A2022383739303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022393430393638222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A2022393937303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A202231303530303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A202231313031303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A 202020202020227374617274223A202231313537353037222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A202231323232373634222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231333034373736222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231333938383030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031350A202020207D2C0A202020207B0A202020202020227374617274223A202231353138303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202231363931363030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A2020202020202273746172742 23A202231393735323934222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202232313638303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202232353936303030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202232393832313436222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202234323635323030222C0A2020202020202273697A65223A20302E30303339323235332C0A202020202020226E6476223A2031360A202020207D2C0A202020207B0A202020202020227374617274223A202236373839343739222C0A20202020202022656E64223A20223130353030303030222C0A2020202020202273697A65223A20302E3030333637373337322C0A202020202020226E6476223A2031350A202020207D0A20205D0A7D decode_histogram(hist_type,histogram) { - "histogram_hb_v1": [ - "42", - "1500", - "5200", - "13154", - "27025", - "51969", - "89063", - "89400", - "89900", - "90200", - "90603", - "90959", - "91203", - "91779", - "92239", - "92583", - "93000", - "93346", - "93900", - "94193", - "94685", - "95000", - "95448", - "96000", - "96322", - "96800", - "97168", - "97600", - "98123", - "98399", - "98900", - "99400", - "99891", - "100149", - "100545", - "100940", - "101295", - "101656", - "102052", - "102361", - "102716", - "103277", - "103579", - "104146", - "104765", - "105199", - "105700", - "106078", - "106600", - "107006", - "107400", - "107799", - "108277", - "108724", - "109225", - "109576", - "110016", - "110531", - "111258", - "111882", - "112450", - "113135", - "113958", - "114395", - "114980", - "115698", - "116256", - "116929", - "117539", - "118200", - "118858", - "119400", - "119990", - "120645", - "121097", - "121708", - "122106", - "123100", - "123400", - "123958", - "124279", - "124943", - "125407", - "125997", - "126346", - "127000", - "127484", - "127969", - "128730", - "129700", - "130215", - "131138", - "131861", - "132744", - "133300", - "133859", - "134419", - "135603", - "136697", - "137265", - "137994", - "138903", - "139672", - "140459", - "141468", - "142302", - "143072", - "144158", - "145150", - "146086", - "147000", - "147744", - "148583", - "149702", - "150624", - "151758", - "152983", - "154297", - "155244", - "156468", - "158000", - "159103", - "160639", - "161910", - "163351", - "164463", - "165583", - "167051", - "168702", - "169930", - "171056", - "172357", - "173600", - "174500", - "175661", - "177522", - "178748", - "179818", - "181339", - "182639", - "183500", - "184859", - "186000", - "187691", - "189036", - "190123", - "192247", - "194000", - "195346", - "196519", - "198183", - "200171", - "201568", - "203296", - "205560", - "207100", - "209038", - "211700", - "214294", - "215587", - "217804", - "219773", - "222030", - "223891", - "226509", - "229060", - "231724", - "235073", - "237713", - "240900", - "242820", - "244974", - "247452", - "251348", - "254350", - "256400", - "260512", - "263247", - "265450", - "269600", - "272058", - "275807", - "278317", - "282070", - "286000", - "289376", - "293105", - "297000", - "300500", - "303447", - "308571", - "312927", - "316438", - "320095", - "325000", - "329850", - "333200", - "337977", - "342200", - "348070", - "353046", - "357552", - "361958", - "365382", - "371601", - "379520", - "384000", - "391170", - "399175", - "407018", - "416289", - "420000", - "427652", - "434374", - "441968", - "450288", - "459884", - "469000", - "475657", - "482300", - "490524", - "508000", - "518282", - "529093", - "540330", - "563210", - "577352", - "593321", - "610000", - "634065", - "656562", - "674100", - "703000", - "730000", - "762000", - "792858", - "823301", - "874000", - "935361", - "989975", - "1040000", - "1096829", - "1151274", - "1217359", - "1297526", - "1378087", - "1503451", - "1674000", - "1968400", - "2139125", - "2559424", - "2940623", - "4017733", - "6464693", - "10500000" + "histogram_hb_v2": [ + { + "start": "42", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "1500", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "5200", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "13154", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "27025", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "51969", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "89063", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "89400", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "89900", + "size": 0.00392253, + "ndv": 4 + }, + { + "start": "90200", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "90603", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "90959", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "91203", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "91779", + "size": 0.00392253, + "ndv": 12 + }, + { + "start": "92239", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "92583", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "93000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "93342", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "93897", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "94100", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "94651", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "94947", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "95411", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "96000", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "96315", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "96800", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "97168", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "97507", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "98100", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "98384", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "98818", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "99387", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "99862", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "100131", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "100490", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "100916", + "size": 0.00392253, + "ndv": 11 + }, + { + "start": "101246", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "101578", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "102019", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "102304", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "102702", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "103211", + "size": 0.00392253, + "ndv": 11 + }, + { + "start": "103556", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "104013", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "104723", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "105166", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "105692", + "size": 0.00392253, + "ndv": 12 + }, + { + "start": "106004", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "106523", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "107000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "107354", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "107770", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "108121", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "108578", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "109184", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "109500", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "109975", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "110420", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "111200", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "111762", + "size": 0.00392253, + "ndv": 12 + }, + { + "start": "112419", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "113090", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "113866", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "114236", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "114900", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "115548", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "116188", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "116760", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "117258", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "118000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "118751", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "119287", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "119800", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "120378", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "121000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "121600", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "121967", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "122735", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "123366", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "123875", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "124215", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "124775", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "125300", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "125812", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "126303", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "126872", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "127284", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "127815", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "128358", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "129454", + "size": 0.00392253, + "ndv": 12 + }, + { + "start": "130031", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "131011", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "131719", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "132500", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "133168", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "133675", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "134051", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "135024", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "136396", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "137061", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "137800", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "138469", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "139357", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "140042", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "141000", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "142048", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "142690", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "143726", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "144761", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "145823", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "146514", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "147527", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "148110", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "149222", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "150112", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "151069", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "152463", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "153383", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "155000", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "155941", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "157332", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "158346", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "159665", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "161191", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "162472", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "163900", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "164851", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "166512", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "167661", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "169303", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "170500", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "171657", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "172710", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "173977", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "175061", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "176581", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "178200", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "179209", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "180273", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "181900", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "183133", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "184165", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "185633", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "186939", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "188443", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "189594", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "191164", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "193156", + "size": 0.00392253, + "ndv": 13 + }, + { + "start": "194301", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "195629", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "197276", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "199184", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "201073", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "202451", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "204899", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "206229", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "207844", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "210368", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "212977", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "214957", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "216903", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "218500", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "221047", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "222700", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "224897", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "227700", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "229700", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "233400", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "236000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "239600", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "241769", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "243771", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "246206", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "248473", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "253000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "254867", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "257862", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "262000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "264115", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "266569", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "270324", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "273060", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "276916", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "279980", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "283000", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "287000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "291117", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "294125", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "299000", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "301297", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "304952", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "309900", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "313619", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "318562", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "322685", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "326776", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "330312", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "335078", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "339194", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "343300", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "349581", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "354139", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "359400", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "362773", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "366712", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "374945", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "380846", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "385201", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "393030", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "401281", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "409632", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "417517", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "422542", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "429076", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "436900", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "444299", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "453813", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "461126", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "470781", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "478155", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "484674", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "495540", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "509510", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "519873", + "size": 0.00392253, + "ndv": 14 + }, + { + "start": "530000", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "541162", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "564589", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "580100", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "596974", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "618477", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "639000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "658630", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "683794", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "706770", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "738150", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "768082", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "798430", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "837588", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "879000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "940968", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "997000", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "1050000", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "1101000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "1157507", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "1222764", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "1304776", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "1398800", + "size": 0.00392253, + "ndv": 15 + }, + { + "start": "1518000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "1691600", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "1975294", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "2168000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "2596000", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "2982146", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "4265200", + "size": 0.00392253, + "ndv": 16 + }, + { + "start": "6789479", + "end": "10500000", + "size": 0.003677372, + "ndv": 15 + } ] } set histogram_type=@SINGLE_PREC_TYPE; @@ -1949,7 +3335,7 @@ nulls_ratio, avg_frequency, hist_size, hist_type, HEX(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 t1 a 1 3 0.0000 1.0000 10 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B2231222C202231222C202231222C202231222C202232222C202232222C202232222C202233222C202233222C202233222C202233225D0A7D +test t1 a 1 3 0.0000 1.0000 3 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202231222C0A2020202020202273697A65223A20302E3333333333333333332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202232222C0A2020202020202273697A65223A20302E3333333333333333332C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202233222C0A20202020202022656E64223A202233222C0A2020202020202273697A65223A20302E3333333333333333332C0A202020202020226E6476223A20310A202020207D0A20205D0A7D set histogram_size=default; drop table t1; # @@ -1974,7 +3360,7 @@ nulls_ratio, avg_frequency, hist_size, hist_type, HEX(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 t1 a 1 5 0.0000 1.0000 10 JSON_HB 7B0A202022686973746F6772616D5F68625F7631223A205B2231222C202231222C202232222C202232222C202233222C202233222C202234222C202234222C202235222C202235222C202235225D0A7D +test t1 a 1 5 0.0000 1.0000 5 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202231222C0A2020202020202273697A65223A20302E322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202232222C0A2020202020202273697A65223A20302E322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202233222C0A2020202020202273697A65223A20302E322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202234222C0A2020202020202273697A65223A20302E322C0A202020202020226E6476223A20310A202020207D2C0A202020207B0A202020202020227374617274223A202235222C0A20202020202022656E64223A202235222C0A2020202020202273697A65223A20302E322C0A202020202020226E6476223A20310A202020207D0A20205D0A7D set histogram_size=0; set histogram_type=@SINGLE_PREC_TYPE; drop table t1; @@ -2015,7 +3401,7 @@ nulls_ratio, avg_frequency, hist_size, hist_type, HEX(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 7B0A202022686973746F6772616D5F68625F7631223A205B0A202020202231222C0A20202020223137222C0A20202020223333222C0A20202020223439222C0A20202020223636222C0A20202020223832222C0A20202020223938222C0A2020202022313134222C0A2020202022313331222C0A2020202022313437222C0A2020202022313633222C0A2020202022313739222C0A2020202022313936222C0A2020202022323132222C0A2020202022323238222C0A2020202022323434222C0A2020202022323631222C0A2020202022323737222C0A2020202022323933222C0A2020202022333039222C0A2020202022333236222C0A2020202022333432222C0A2020202022333538222C0A2020202022333734222C0A2020202022333931222C0A2020202022343037222C0A2020202022343233222C0A2020202022343339222C0A2020202022343536222C0A2020202022343732222C0A2020202022343838222C0A2020202022353034222C0A2020202022353231222C0A2020202022353337222C0A2020202022353533222C0A2020202022353639222C0A2020202022353836222C0A2020202022363032222C0A2020202022363138222C0A2020202022363334222C0A2020202022363531222C0A202020202236363722 2C0A2020202022363833222C0A2020202022363939222C0A2020202022373136222C0A2020202022373332222C0A2020202022373438222C0A2020202022373634222C0A2020202022373831222C0A2020202022373937222C0A2020202022383133222C0A2020202022383239222C0A2020202022383436222C0A2020202022383632222C0A2020202022383738222C0A2020202022383934222C0A2020202022393131222C0A2020202022393237222C0A2020202022393433222C0A2020202022393539222C0A2020202022393736222C0A2020202022393932222C0A202020202231303038222C0A202020202231303234220A20205D0A7D +test t2 id 1 1024 0.0000 8.0000 64 JSON_HB 7B0A202022686973746F6772616D5F68625F7632223A205B0A202020207B0A202020202020227374617274223A202231222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223137222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223333222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223439222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223636222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223832222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031 370A202020207D2C0A202020207B0A202020202020227374617274223A20223938222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313134222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313331222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313437222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313633222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022313739222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A20223 13936222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323132222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323238222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323434222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323631222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323737222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022323933222C0A2020202020202273697A65223A20302E303135383639313431 2C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333039222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333236222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333432222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333538222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333734222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022333931222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0 A202020202020227374617274223A2022343037222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343233222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343339222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343536222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343732222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022343838222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353034222C0A2020202020202273 697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353231222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353337222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353533222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353639222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022353836222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363032222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223 A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363138222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363334222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363531222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363637222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363833222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022363939222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A20202020202022737461727422 3A2022373136222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373332222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373438222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373634222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373831222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022373937222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383133222C0A2020202020202273697A65223A20302E30313538363 93134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383239222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383436222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383632222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383738222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022383934222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393131222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A2020 20207B0A202020202020227374617274223A2022393237222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393433222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393539222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393736222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A2022393932222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231303038222C0A2020202020202273697A65223A20302E3031353836393134312C0A202020202020226E6476223A2031370A202020207D2C0A202020207B0A202020202020227374617274223A202231303234222C0A20202 020202022656E64223A202231303234222C0A2020202020202273697A65223A20322E343431343036652D342C0A202020202020226E6476223A20310A202020207D0A20205D0A7D set histogram_size=0; drop table t1, t2; set use_stat_tables=@save_use_stat_tables; @@ -2176,18 +3562,63 @@ 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 { - "histogram_hb_v1": [ - "1", - "1639", - "3277", - "4916", - "6554", - "9193", - "10831", - "12469", - "14108", - "15746", - "17384" + "histogram_hb_v2": [ + { + "start": "1", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "1639", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "3277", + "size": 0.099997384, + "ndv": 1640 + }, + { + "start": "4916", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "6554", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "8192", + "size": 0.099997384, + "ndv": 1640 + }, + { + "start": "10831", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "12469", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "14107", + "size": 0.099997384, + "ndv": 1640 + }, + { + "start": "15746", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "17384", + "end": "17384", + "size": 2.615792e-5, + "ndv": 1 + } ] } set analyze_sample_percentage=0.1; @@ -2203,18 +3634,63 @@ 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 { - "histogram_hb_v1": [ - "111", - "988", - "2490", - "4088", - "5743", - "7806", - "10217", - "12072", - "14178", - "15144", - "17026" + "histogram_hb_v2": [ + { + "start": "111", + "size": 0.099056604, + "ndv": 20 + }, + { + "start": "988", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "2490", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "4088", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "5743", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "7772", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "10164", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "12022", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "14092", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "15122", + "size": 0.099056604, + "ndv": 21 + }, + { + "start": "16975", + "end": "17026", + "size": 0.009433962, + "ndv": 2 + } ] } # @@ -2230,18 +3706,63 @@ 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 { - "histogram_hb_v1": [ - "1", - "1623", - "3252", - "4868", - "6483", - "8151", - "10789", - "12433", - "14077", - "15724", - "17384" + "histogram_hb_v2": [ + { + "start": "1", + "size": 0.09999826, + "ndv": 1591 + }, + { + "start": "1623", + "size": 0.09999826, + "ndv": 1600 + }, + { + "start": "3252", + "size": 0.09999826, + "ndv": 1587 + }, + { + "start": "4868", + "size": 0.09999826, + "ndv": 1593 + }, + { + "start": "6483", + "size": 0.09999826, + "ndv": 1630 + }, + { + "start": "8151", + "size": 0.09999826, + "ndv": 1608 + }, + { + "start": "10789", + "size": 0.09999826, + "ndv": 1619 + }, + { + "start": "12433", + "size": 0.09999826, + "ndv": 1627 + }, + { + "start": "14077", + "size": 0.09999826, + "ndv": 1614 + }, + { + "start": "15724", + "size": 0.09999826, + "ndv": 1624 + }, + { + "start": "17384", + "end": "17384", + "size": 1.739705e-5, + "ndv": 1 + } ] } set analyze_sample_percentage=0; @@ -2257,18 +3778,63 @@ 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 { - "histogram_hb_v1": [ - "1", - "1651", - "3306", - "4948", - "6596", - "9239", - "10863", - "12495", - "14113", - "15757", - "17384" + "histogram_hb_v2": [ + { + "start": "1", + "size": 0.099999181, + "ndv": 1651 + }, + { + "start": "1651", + "size": 0.099999181, + "ndv": 1656 + }, + { + "start": "3306", + "size": 0.099999181, + "ndv": 1642 + }, + { + "start": "4948", + "size": 0.099999181, + "ndv": 1649 + }, + { + "start": "6596", + "size": 0.099999181, + "ndv": 1644 + }, + { + "start": "9239", + "size": 0.099999181, + "ndv": 1625 + }, + { + "start": "10863", + "size": 0.099999181, + "ndv": 1633 + }, + { + "start": "12495", + "size": 0.099999181, + "ndv": 1619 + }, + { + "start": "14113", + "size": 0.099999181, + "ndv": 1645 + }, + { + "start": "15757", + "size": 0.099999181, + "ndv": 1628 + }, + { + "start": "17384", + "end": "17384", + "size": 8.190612e-6, + "ndv": 1 + } ] } # @@ -2290,18 +3856,63 @@ 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 { - "histogram_hb_v1": [ - "1", - "1639", - "3277", - "4916", - "6554", - "9193", - "10831", - "12469", - "14108", - "15746", - "17384" + "histogram_hb_v2": [ + { + "start": "1", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "1639", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "3277", + "size": 0.099997384, + "ndv": 1640 + }, + { + "start": "4916", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "6554", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "8192", + "size": 0.099997384, + "ndv": 1640 + }, + { + "start": "10831", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "12469", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "14107", + "size": 0.099997384, + "ndv": 1640 + }, + { + "start": "15746", + "size": 0.099997384, + "ndv": 1639 + }, + { + "start": "17384", + "end": "17384", + "size": 2.615792e-5, + "ndv": 1 + } ] } explain select * from t1; @@ -2345,122 +3956,72 @@ test.t1_json analyze status Engine-independent statistics collected 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 100 JSON_HB { - "histogram_hb_v1": [ - "a-0", - "a-0", - "a-0", - "a-0", - "a-0", - "a-0", - "a-0", - "a-0", - "a-0", - "a-0", - "a-1", - "a-1", - "a-1", - "a-1", - "a-1", - "a-1", - "a-1", - "a-1", - "a-1", - "a-1", - "a-2", - "a-2", - "a-2", - "a-2", - "a-2", - "a-2", - "a-2", - "a-2", - "a-2", - "a-2", - "a-3", - "a-3", - "a-3", - "a-3", - "a-3", - "a-3", - "a-3", - "a-3", - "a-3", - "a-3", - "a-4", - "a-4", - "a-4", - "a-4", - "a-4", - "a-4", - "a-4", - "a-4", - "a-4", - "a-4", - "a-5", - "a-5", - "a-5", - "a-5", - "a-5", - "a-5", - "a-5", - "a-5", - "a-5", - "a-5", - "a-6", - "a-6", - "a-6", - "a-6", - "a-6", - "a-6", - "a-6", - "a-6", - "a-6", - "a-6", - "a-7", - "a-7", - "a-7", - "a-7", - "a-7", - "a-7", - "a-7", - "a-7", - "a-7", - "a-7", - "a-8", - "a-8", - "a-8", - "a-8", - "a-8", - "a-8", - "a-8", - "a-8", - "a-8", - "a-8", - "a-9", - "a-9", - "a-9", - "a-9", - "a-9", - "a-9", - "a-9", - "a-9", - "a-9", - "a-9", - "a-9" +test t1_json a a-0 a-9 0.0000 3.0000 1.0000 10 JSON_HB { + "histogram_hb_v2": [ + { + "start": "a-0", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-1", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-2", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-3", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-4", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-5", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-6", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-7", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-8", + "size": 0.1, + "ndv": 1 + }, + { + "start": "a-9", + "end": "a-9", + "size": 0.1, + "ndv": 1 + } ] } explain extended select * from t1_json where a between 'a-3a' and 'zzzzzzzzz'; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 59.41 Using where +1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 10.00 Using where Warnings: Note 1003 select `test`.`t1_json`.`a` AS `a` from `test`.`t1_json` where `test`.`t1_json`.`a` between 'a-3a' and 'zzzzzzzzz' analyze select * from t1_json where a between 'a-3a' and 'zzzzzzzzz'; id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra -1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 10.00 59.41 60.00 Using where +1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 10.00 10.00 60.00 Using where explain extended select * from t1_json where a < 'b-1a'; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 99.01 Using where +1 SIMPLE t1_json ALL NULL NULL NULL NULL 10 90.00 Using where Warnings: Note 1003 select `test`.`t1_json`.`a` AS `a` from `test`.`t1_json` where `test`.`t1_json`.`a` < 'b-1a' analyze select * from t1_json where a > 'zzzzzzzzz'; @@ -2470,7 +4031,7 @@ drop table ten; UPDATE mysql.column_stats SET histogram='["a-1", "a-2", {"a": "b"}, "a-3"]' WHERE table_name='t1_json'; FLUSH TABLES; explain extended select * from t1_json where a between 'a-3a' and 'zzzzzzzzz'; -ERROR HY000: Failed to parse histogram: Root JSON element must be a JSON object at offset 1. +ERROR HY000: Failed to parse histogram: Root JSON element must be a JSON object at offset 12345. create table t2 ( city varchar(100) ); @@ -2484,20 +4045,20 @@ test.t2 analyze status Engine-independent statistics collected test.t2 analyze status OK explain extended select * from t2 where city = 'Moscow'; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE t2 ALL NULL NULL NULL NULL 101 98.04 Using where +1 SIMPLE t2 ALL NULL NULL NULL NULL 101 50.00 Using where Warnings: Note 1003 select `test`.`t2`.`city` AS `city` from `test`.`t2` where `test`.`t2`.`city` = 'Moscow' analyze select * from t2 where city = 'Moscow'; id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra -1 SIMPLE t2 ALL NULL NULL NULL NULL 101 101.00 98.04 98.02 Using where +1 SIMPLE t2 ALL NULL NULL NULL NULL 101 101.00 50.00 98.02 Using where explain extended select * from t2 where city = 'Helsinki'; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE t2 ALL NULL NULL NULL NULL 101 2.00 Using where +1 SIMPLE t2 ALL NULL NULL NULL NULL 101 50.00 Using where Warnings: Note 1003 select `test`.`t2`.`city` AS `city` from `test`.`t2` where `test`.`t2`.`city` = 'Helsinki' analyze select * from t2 where city = 'helsinki'; id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra -1 SIMPLE t2 ALL NULL NULL NULL NULL 101 101.00 2.00 1.98 Using where +1 SIMPLE t2 ALL NULL NULL NULL NULL 101 101.00 50.00 1.98 Using where explain extended select * from t2 where city < 'Lagos'; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t2 ALL NULL NULL NULL NULL 101 50.00 Using where @@ -2514,672 +4075,3277 @@ set histogram_size=50; 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 50 JSON_HB { - "histogram_hb_v1": [ - "ABW", - "ALB", - "ARM", - "AUS", - "BEN", - "BHR", - "BMU", - "BTN", - "CCK", - "CMR", - "COL", - "CXR", - "DJI", - "ECU", - "ESP", - "FLK", - "GBR", - "GLP", - "GRD", - "GUM", - "HRV", - "IOT", - "ISR", - "JPN", - "KIR", - "LBN", - "LKA", - "MAC", - "MDG", - "MLI", - "MOZ", - "MWI", - "NCL", - "NIU", - "NZL", - "PER", - "PRI", - "PSE", - "RUS", - "SGP", - "SLE", - "SPM", - "SWE", - "TCD", - "TKM", - "TUR", - "UGA", - "UZB", - "VIR", - "YEM", - "ZWE" +Code ABW ZWE 60 JSON_HB { + "histogram_hb_v2": [ + { + "start": "ABW", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ALB", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ARG", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ATF", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "AZE", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "BFA", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "BHS", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "BMU", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "BRN", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "CAF", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "CHL", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "COD", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "COM", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "CXR", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "DEU", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "DOM", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ERI", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ETH", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "FRA", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "GBR", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "GIN", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "GNQ", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "GTM", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "HKG", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "HTI", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "IOT", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ISL", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "JOR", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "KGZ", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "KOR", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "LBR", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "LKA", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "LVA", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "MDA", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "MHL", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "MMR", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "MRT", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "MWI", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "NCL", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "NIC", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "NPL", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "PAK", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "PHL", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "PRI", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "PSE", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ROM", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "SDN", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "SHN", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "SLV", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "STP", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "SWE", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "TCA", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "TJK", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "TON", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "TUV", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "UKR", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "UZB", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "VGB", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "WLF", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "ZAF", + "end": "ZWE", + "size": 0.012552301, + "ndv": 3 + } ] } -Name Afghanistan Zimbabwe 50 JSON_HB { - "histogram_hb_v1": [ - "Afghanistan", - "Andorra", - "Argentina", - "Azerbaijan", - "Belarus", - "Bermuda", - "Bouvet Island", - "Burkina Faso", - "Cape Verde", - "China", - "Comoros", - "Croatia", - "Denmark", - "Ecuador", - "Eritrea", - "Fiji Islands", - "French Southern territories", - "Ghana", - "Guadeloupe", - "Guinea-Bissau", - "Honduras", - "Indonesia", - "Italy", - "Kazakstan", - "Laos", - "Libyan Arab Jamahiriya", - "Macedonia", - "Mali", - "Mauritania", - "Moldova", - "Mozambique", - "Netherlands", - "Nicaragua", - "North Korea", - "Palau", - "Peru", - "Puerto Rico", - "Rwanda", - "Saint Pierre and Miquelon", - "Saudi Arabia", - "Slovakia", - "South Africa", - "Sudan", - "Switzerland", - "Thailand", - "Tunisia", - "Tuvalu", - "United States", - "Venezuela", - "Western Sahara", - "Zimbabwe" +Country ABW ZWE 39 JSON_HB { + "histogram_hb_v2": [ + { + "start": "ABW", + "size": 0.019857808, + "ndv": 11 + }, + { + "start": "ASM", + "size": 0.019857808, + "ndv": 14 + }, + { + "start": "BIH", + "size": 0.007109586, + "ndv": 5 + }, + { + "start": "BRA", + "size": 0.061289532, + "ndv": 1 + }, + { + "start": "BRB", + "size": 0.019857808, + "ndv": 9 + }, + { + "start": "CHL", + "size": 0.002451581, + "ndv": 1 + }, + { + "start": "CHN", + "size": 0.0889924, + "ndv": 1 + }, + { + "start": "CIV", + "size": 0.019857808, + "ndv": 10 + }, + { + "start": "CUB", + "size": 0.019857808, + "ndv": 6 + }, + { + "start": "DEU", + "size": 0.019857808, + "ndv": 8 + }, + { + "start": "EGY", + "size": 0.019857808, + "ndv": 4 + }, + { + "start": "ESP", + "size": 0.019857808, + "ndv": 11 + }, + { + "start": "GBR", + "size": 0.019857808, + "ndv": 2 + }, + { + "start": "GEO", + "size": 0.019857808, + "ndv": 21 + }, + { + "start": "IDN", + "size": 0.014219171, + "ndv": 1 + }, + { + "start": "IND", + "size": 0.083598921, + "ndv": 1 + }, + { + "start": "IRL", + "size": 0.019857808, + "ndv": 3 + }, + { + "start": "IRQ", + "size": 0.019857808, + "ndv": 6 + }, + { + "start": "JOR", + "size": 7.354744e-4, + "ndv": 1 + }, + { + "start": "JPN", + "size": 0.060799215, + "ndv": 1 + }, + { + "start": "KAZ", + "size": 0.019857808, + "ndv": 7 + }, + { + "start": "KOR", + "size": 0.019857808, + "ndv": 15 + }, + { + "start": "MCO", + "size": 0.002941898, + "ndv": 4 + }, + { + "start": "MEX", + "size": 0.042412356, + "ndv": 1 + }, + { + "start": "MHL", + "size": 0.019857808, + "ndv": 20 + }, + { + "start": "NGA", + "size": 0.019857808, + "ndv": 4 + }, + { + "start": "NLD", + "size": 0.019857808, + "ndv": 7 + }, + { + "start": "PAK", + "size": 0.008090218, + "ndv": 4 + }, + { + "start": "PHL", + "size": 0.033341505, + "ndv": 1 + }, + { + "start": "PLW", + "size": 0.019857808, + "ndv": 8 + }, + { + "start": "PSE", + "size": 0.008825693, + "ndv": 5 + }, + { + "start": "RUS", + "size": 0.046334886, + "ndv": 1 + }, + { + "start": "RWA", + "size": 0.019857808, + "ndv": 18 + }, + { + "start": "SWE", + "size": 0.019857808, + "ndv": 16 + }, + { + "start": "TUR", + "size": 0.019857808, + "ndv": 4 + }, + { + "start": "TZA", + "size": 0.015935278, + "ndv": 4 + }, + { + "start": "USA", + "size": 0.067173327, + "ndv": 1 + }, + { + "start": "UZB", + "size": 0.019857808, + "ndv": 7 + }, + { + "start": "VNM", + "end": "ZWE", + "size": 0.018877176, + "ndv": 9 + } ] } -SurfaceArea 0.40 17075400.00 50 JSON_HB { - "histogram_hb_v1": [ - "0.40", - "14.00", - "36.00", - "78.00", - "160.00", - "200.00", - "264.00", - "347.00", - "430.00", - "468.00", - "650.00", - "800.00", - "1705.00", - "2831.00", - "5130.00", - "9251.00", - "12173.00", - "17818.00", - "21056.00", - "26338.00", - "28896.00", - "36125.00", - "45227.00", - "51100.00", - "64589.00", - "71740.00", - "86600.00", - "99434.00", - "110861.00", - "117600.00", - "143100.00", - "175016.00", - "199900.00", - "238533.00", - "267668.00", - "301316.00", - "329758.00", - "357022.00", - "446550.00", - "488100.00", - "580367.00", - "622984.00", - "756626.00", - "883749.00", - "1098581.00", - "1246700.00", - "1566500.00", - "2149690.00", - "2724900.00", - "9363520.00", - "17075400.00" +Name Afghanistan Zimbabwe 60 JSON_HB { + "histogram_hb_v2": [ + { + "start": "Afghanistan", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Andorra", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Antigua and Barbuda", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Australia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Bahrain", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Belgium", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Bhutan", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Bouvet Island", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Bulgaria", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Cameroon", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Central African Republic", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Christmas Island", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Congo", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Croatia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Côte dIvoire", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Dominican Republic", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "El Salvador", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Ethiopia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Finland", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "French Southern territories", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Germany", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Greenland", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Guatemala", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Haiti", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Hong Kong", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Indonesia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Israel", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Jordan", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Kuwait", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Lebanon", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Liechtenstein", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Macedonia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Maldives", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Martinique", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Mexico", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Mongolia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Myanmar", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Netherlands", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Nicaragua", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Norfolk Island", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Oman", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Panama", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Philippines", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Puerto Rico", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Rwanda", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Saint Lucia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "San Marino", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Seychelles", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Slovenia", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "South Georgia and the South Sandwich Islands", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Sudan", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Sweden", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Tajikistan", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Tokelau", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Turkey", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Uganda", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "United States", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Vanuatu", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Virgin Islands, U.S.", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "Yugoslavia", + "end": "Zimbabwe", + "size": 0.012552301, + "ndv": 3 + } ] } -Population 0 1277558000 50 JSON_HB { - "histogram_hb_v1": [ - "0", - "0", - "1000", - "2500", - "11000", - "17000", - "27000", - "43000", - "68000", - "83000", - "103000", - "154000", - "214000", - "279000", - "328000", - "435700", - "578000", - "754700", - "1158000", - "1305000", - "1987800", - "2441000", - "2856000", - "3282000", - "3615000", - "3869000", - "4473000", - "4854000", - "5171300", - "5605000", - "6485000", - "7651000", - "8190900", - "9169000", - "10097000", - "10640000", - "11234000", - "12646000", - "15864000", - "18827000", - "21778000", - "22720000", - "24318000", - "31147000", - "39441700", - "50456000", - "59623400", - "68470000", - "111506000", - "170115000", - "1277558000" +SurfaceArea 0.40 17075400.00 60 JSON_HB { + "histogram_hb_v2": [ + { + "start": "0.40", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "14.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "26.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "59.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "102.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "181.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "236.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "264.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "344.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "388.00", + "size": 0.016736402, + "ndv": 3 + }, + { + "start": "455.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "549.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "694.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "800.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1399.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "2510.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "4000.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "6257.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "10400.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "12173.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "17364.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "20256.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "23200.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "27834.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "29800.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "36125.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "43094.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "49012.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "56785.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "65610.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "75517.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "86600.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "93030.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "108889.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "112088.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "120538.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "143998.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "175016.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "199900.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "238391.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "245857.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "274000.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "309500.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "329758.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "357022.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "438317.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "462840.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "513115.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "581730.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "637657.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "756626.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "824292.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1001449.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1138914.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1267000.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1648195.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "2149690.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "2505813.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "7741220.00", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "9970610.00", + "end": "17075400.00", + "size": 0.012552301, + "ndv": 3 + } ] } -Capital 1 4074 50 JSON_HB { - "histogram_hb_v1": [ - "1", - "35", - "63", - "129", - "150", - "191", - "204", - "539", - "583", - "587", - "653", - "766", - "905", - "919", - "927", - "938", - "1447", - "1522", - "1786", - "1822", - "1889", - "2295", - "2331", - "2429", - "2438", - "2447", - "2460", - "2484", - "2509", - "2690", - "2710", - "2734", - "2807", - "2882", - "2912", - "2972", - "3017", - "3063", - "3068", - "3171", - "3207", - "3217", - "3244", - "3306", - "3334", - "3349", - "3425", - "3499", - "3537", - "3791", - "4074" +Population 0 1277558000 59 JSON_HB { + "histogram_hb_v2": [ + { + "start": "0", + "size": 0.029288703, + "ndv": 1 + }, + { + "start": "50", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "2000", + "size": 0.016736402, + "ndv": 2 + }, + { + "start": "3200", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "11000", + "size": 0.016736402, + "ndv": 3 + }, + { + "start": "17000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "25000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "38000", + "size": 0.016736402, + "ndv": 3 + }, + { + "start": "64000", + "size": 0.016736402, + "ndv": 3 + }, + { + "start": "71000", + "size": 0.016736402, + "ndv": 3 + }, + { + "start": "83000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "103000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "149000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "181000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "235000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "286000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "380200", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "435700", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "473000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "638000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "861000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1213000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1439200", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "1987800", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "2424200", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "2662000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "3101000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "3401200", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "3698500", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "3869000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "4459000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "4699000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "5074000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "5398700", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "6097000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "6485000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "7430000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "8091800", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "8495000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "9586000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "10236000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "10640000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "11201000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "11937000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "15085000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "16125000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "18886000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "21778000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "22720000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "24170000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "29490000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "33517000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "40377000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "50456000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "59623400", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "67702000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "82164700", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "129155000", + "size": 0.016736402, + "ndv": 4 + }, + { + "start": "212107000", + "end": "1277558000", + "size": 0.016736402, + "ndv": 4 + } ] } -ID 1 4079 50 JSON_HB { - "histogram_hb_v1": [ - "1", - "82", - "164", - "245", - "327", - "408", - "490", - "572", - "653", - "735", - "816", - "898", - "979", - "1061", - "1143", - "1224", - "1306", - "1387", - "1469", - "1551", - "1632", - "1714", - "1795", - "1877", - "1958", - "2040", - "2122", - "2203", - "2285", - "2366", - "2448", - "2529", - "2611", - "2693", - "2774", - "2856", - "2937", - "3019", - "3101", - "3182", - "3264", - "3345", - "3427", - "3508", - "3590", - "3672", - "3753", - "3835", - "3916", - "3998", - "4079" +Capital 1 4074 58 JSON_HB { + "histogram_hb_v2": [ + { + "start": "1", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "35", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "62", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "126", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "148", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "179", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "192", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "211", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "539", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "554", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "586", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "645", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "756", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "901", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "910", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "919", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "927", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "937", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "1365", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "1450", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "1530", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "1791", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "1822", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "1889", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2257", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2317", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2409", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2432", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2440", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2452", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2460", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2482", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2508", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2515", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2696", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2726", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2738", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2807", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2881", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2890", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2919", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "2974", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3018", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3064", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3068", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3171", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3206", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3212", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3236", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3250", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3315", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3334", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3349", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3424", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3492", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3520", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3539", + "size": 0.017241379, + "ndv": 4 + }, + { + "start": "3813", + "end": "4074", + "size": 0.017241379, + "ndv": 4 + } ] } -Name A Coruña (La Coruña) Ürgenc 50 JSON_HB { - "histogram_hb_v1": [ - "A Coruña (La Coruña)", - "Almere", - "Araraquara", - "Bairiki", - "Bawshar", - "Bikaner", - "Brescia", - "Camaragibe", - "Charleroi", - "Ciudad de México", - "Córdoba", - "Dire Dawa", - "Elgin", - "Francisco Morato", - "Gijón", - "Guntur", - "Helsingborg", - "Hunjiang", - "Isesaki", - "Jevpatorija", - "Kalookan", - "Khandwa", - "Korla", - "La Rioja", - "Lilongwe", - "Lübeck", - "Maracanaú", - "Meru", - "Moradabad", - "Nakuru", - "Niihama", - "Ocumare del Tuy", - "Oxnard", - "Penza", - "Porbandar", - "Qarchak", - "Resende", - "Saint Helens", - "San Miguel", - "Saskatoon", - "Shomolu", - "Srinagar", - "São Paulo", - "Taubaté", - "Tokorozawa", - "Terepovets", - "Vanadzor", - "Waru", - "Yamoussoukro", - "Zhangjiang", - "Ürgenc" +ID 1 4079 51 JSON_HB { + "histogram_hb_v2": [ + { + "start": "1", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "82", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "163", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "244", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "325", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "406", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "487", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "568", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "649", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "730", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "811", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "892", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "973", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1054", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1135", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1216", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1297", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1378", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1459", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1540", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1621", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1702", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1783", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1864", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "1945", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2026", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2107", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2188", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2269", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2350", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2431", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2512", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2593", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2674", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2755", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2836", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2917", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "2998", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3079", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3160", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3241", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3322", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3403", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3484", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3565", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3646", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3727", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3808", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3889", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "3970", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "4051", + "end": "4079", + "size": 0.007109586, + "ndv": 29 + } ] } -Country ABW ZWE 50 JSON_HB { - "histogram_hb_v1": [ - "ABW", - "ASM", - "BLR", - "BRA", - "BRA", - "BRA", - "CAN", - "CHN", - "CHN", - "CHN", - "CHN", - "CIV", - "CUB", - "DEU", - "EGY", - "ESP", - "GBR", - "GHA", - "IDN", - "IND", - "IND", - "IND", - "IND", - "IRN", - "ISR", - "JPN", - "JPN", - "JPN", - "KAZ", - "KOR", - "MDV", - "MEX", - "MEX", - "NGA", - "NLD", - "PAK", - "PHL", - "PHL", - "PRK", - "RUS", - "RUS", - "SAU", - "SYC", - "TUR", - "UKR", - "USA", - "USA", - "USA", - "USA", - "VNM", - "ZWE" +Name A Coruña (La Coruña) Ürgenc 51 JSON_HB { + "histogram_hb_v2": [ + { + "start": "A Coruña (La Coruña)", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Almere", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Arapiraca", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Baidyabati", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Batumi", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Bijapur", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Breda", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Callao", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "Chaoyang", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Ciudad Losada", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Curitiba", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "Dili", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "El Tigre", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Fort Wayne", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Gera", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "Guigang", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "Hayward", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Hubli-Dharwad", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Irbil", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Jelenia Góra", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Kairouan", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Kelowna", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Kolpino", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Kénitra", + "size": 0.019857808, + "ndv": 77 + }, + { + "start": "Lianyuan", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Luoyang", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Mangalore", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Meihekou", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Mombasa", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Nagaon", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Newark", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Nuuk", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Osnabrück", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Paterson", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Plovdiv", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Puqi", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Rasht", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Río Cuarto", + "size": 0.019857808, + "ndv": 74 + }, + { + "start": "San Francisco del Rincón", + "size": 0.019857808, + "ndv": 71 + }, + { + "start": "Santiago de los Caballeros", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Shaoyang", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Sorocaba", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "Swansea", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Tando Adam", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Tijuana", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "Tsukuba", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "Ussurijsk", + "size": 0.019857808, + "ndv": 76 + }, + { + "start": "Volgograd", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "Xianning", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "Yuzhou", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "al-Najaf", + "end": "Ürgenc", + "size": 0.007109586, + "ndv": 29 + } ] } -Population 42 10500000 50 JSON_HB { - "histogram_hb_v1": [ - "42", - "55810", - "90646", - "92686", - "94784", - "96921", - "99155", - "101046", - "103104", - "105643", - "107761", - "110000", - "113126", - "116278", - "119503", - "122400", - "125070", - "127634", - "131480", - "135000", - "139283", - "143922", - "148362", - "154125", - "160510", - "167051", - "173627", - "179956", - "186332", - "194265", - "202134", - "212977", - "222859", - "237206", - "249263", - "265200", - "281928", - "300148", - "320296", - "342584", - "366549", - "401281", - "438638", - "479884", - "531800", - "623457", - "753778", - "977856", - "1266461", - "2130359", - "10500000" +Population 42 10500000 51 JSON_HB { + "histogram_hb_v2": [ + { + "start": "42", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "55810", + "size": 0.019857808, + "ndv": 63 + }, + { + "start": "90642", + "size": 0.019857808, + "ndv": 70 + }, + { + "start": "92686", + "size": 0.019857808, + "ndv": 74 + }, + { + "start": "94709", + "size": 0.019857808, + "ndv": 72 + }, + { + "start": "96883", + "size": 0.019857808, + "ndv": 74 + }, + { + "start": "98980", + "size": 0.019857808, + "ndv": 74 + }, + { + "start": "101000", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "102878", + "size": 0.019857808, + "ndv": 72 + }, + { + "start": "105419", + "size": 0.019857808, + "ndv": 75 + }, + { + "start": "107663", + "size": 0.019857808, + "ndv": 76 + }, + { + "start": "109755", + "size": 0.019857808, + "ndv": 74 + }, + { + "start": "112965", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "116103", + "size": 0.019857808, + "ndv": 76 + }, + { + "start": "119262", + "size": 0.019857808, + "ndv": 77 + }, + { + "start": "121954", + "size": 0.019857808, + "ndv": 74 + }, + { + "start": "124775", + "size": 0.019857808, + "ndv": 76 + }, + { + "start": "127350", + "size": 0.019857808, + "ndv": 76 + }, + { + "start": "131062", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "134222", + "size": 0.019857808, + "ndv": 77 + }, + { + "start": "138900", + "size": 0.019857808, + "ndv": 75 + }, + { + "start": "143000", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "147744", + "size": 0.019857808, + "ndv": 75 + }, + { + "start": "153022", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "159110", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "165889", + "size": 0.019857808, + "ndv": 77 + }, + { + "start": "172561", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "179000", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "185154", + "size": 0.019857808, + "ndv": 77 + }, + { + "start": "192733", + "size": 0.019857808, + "ndv": 77 + }, + { + "start": "200827", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "210068", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "221047", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "233400", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "246535", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "262481", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "277305", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "296127", + "size": 0.019857808, + "ndv": 78 + }, + { + "start": "315382", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "337580", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "361747", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "390350", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "425836", + "size": 0.019857808, + "ndv": 80 + }, + { + "start": "468931", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "517785", + "size": 0.019857808, + "ndv": 77 + }, + { + "start": "593321", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "703324", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "877239", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "1157507", + "size": 0.019857808, + "ndv": 79 + }, + { + "start": "1704735", + "size": 0.019857808, + "ndv": 81 + }, + { + "start": "4336000", + "end": "10500000", + "size": 0.007109586, + "ndv": 29 + } ] } -Country ABW ZWE 50 JSON_HB { - "histogram_hb_v1": [ - "ABW", - "ALB", - "ATG", - "AZE", - "BFA", - "BIH", - "BRB", - "CAN", - "CHL", - "CMR", - "COG", - "CRI", - "DEU", - "ECU", - "ETH", - "FRO", - "GEO", - "GMB", - "GTM", - "HND", - "IDN", - "IRN", - "ITA", - "KAZ", - "KHM", - "LBR", - "LTU", - "MAR", - "MHL", - "MMR", - "MOZ", - "MUS", - "NAM", - "NGA", - "NPL", - "PAK", - "PHL", - "PRY", - "RUS", - "SDN", - "SLE", - "SVK", - "TCA", - "THA", - "TUN", - "TZA", - "UKR", - "UZB", - "VNM", - "ZAF", - "ZWE" +Country ABW ZWE 52 JSON_HB { + "histogram_hb_v2": [ + { + "start": "ABW", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "ALB", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "ASM", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "AZE", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "BEN", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "BHR", + "size": 0.019308943, + "ndv": 8 + }, + { + "start": "BRA", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "CAF", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "CHE", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "CIV", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "COD", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "COM", + "size": 0.019308943, + "ndv": 8 + }, + { + "start": "CZE", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "DNK", + "size": 0.019308943, + "ndv": 8 + }, + { + "start": "ESP", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "FIN", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "GAB", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "GIB", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "GNB", + "size": 0.019308943, + "ndv": 8 + }, + { + "start": "GUM", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "HUN", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "IND", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "IRQ", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "JAM", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "KEN", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "KIR", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "LBR", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "LTU", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "MCO", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "MHL", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "MMR", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "MOZ", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "MUS", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "NAM", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "NGA", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "NOR", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "PAK", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "PHL", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "PRK", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "ROM", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "RWA", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "SGP", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "SOM", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "SWE", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "TGO", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "TKM", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "TWN", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "UGA", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "USA", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "VEN", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "WLF", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "ZAF", + "end": "ZWE", + "size": 0.015243902, + "ndv": 3 + } ] } -Language Abhyasi [South]Mande 50 JSON_HB { - "histogram_hb_v1": [ - "Abhyasi", - "Amhara", - "Arabic", - "Arawakan", - "Balante", - "Belorussian", - "Bulgariana", - "Chakma", - "Chinese", - "Comorian-madagassi", - "Creole French", - "Dinka", - "English", - "English", - "English", - "Ewe", - "French", - "Ful", - "Garifuna", - "German", - "Gujarati", - "Herero", - "Hungarian", - "Italian", - "Kanuri", - "Khoekhoe", - "Kosrean", - "Lithuanian", - "Macedonian", - "Malay-English", - "Maori", - "Meru", - "Mossi", - "Norwegian", - "Ouaddai", - "Pilipino", - "Portuguese", - "Romani", - "Russian", - "San", - "Shambala", - "Somali", - "Spanish", - "Spanish", - "Tagalog", - "Teso", - "Tswa", - "Turkmenian", - "Ukrainian and Russian", - "Wolea", - "[South]Mande" +Language Abhyasi [South]Mande 51 JSON_HB { + "histogram_hb_v2": [ + { + "start": "Abhyasi", + "size": 0.019308943, + "ndv": 11 + }, + { + "start": "Amhara", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "Arabic", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "Araucan", + "size": 0.019308943, + "ndv": 9 + }, + { + "start": "Bajan", + "size": 0.019308943, + "ndv": 16 + }, + { + "start": "Belorussian", + "size": 0.019308943, + "ndv": 9 + }, + { + "start": "Brahui", + "size": 0.019308943, + "ndv": 14 + }, + { + "start": "Catalan", + "size": 0.019308943, + "ndv": 12 + }, + { + "start": "Chinese", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "Circassian", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "Creole English", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "Danish", + "size": 0.019308943, + "ndv": 11 + }, + { + "start": "Dyula", + "size": 0.004065041, + "ndv": 4 + }, + { + "start": "English", + "size": 0.06097561, + "ndv": 1 + }, + { + "start": "Eskimo Languages", + "size": 0.014227642, + "ndv": 8 + }, + { + "start": "French", + "size": 0.025406504, + "ndv": 1 + }, + { + "start": "Fries", + "size": 0.019308943, + "ndv": 8 + }, + { + "start": "Gagauzi", + "size": 0.019308943, + "ndv": 8 + }, + { + "start": "German", + "size": 0.019308943, + "ndv": 9 + }, + { + "start": "Greek", + "size": 0.019308943, + "ndv": 15 + }, + { + "start": "Hausa", + "size": 0.019308943, + "ndv": 10 + }, + { + "start": "Hungarian", + "size": 0.019308943, + "ndv": 10 + }, + { + "start": "Italian", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "Joruba", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "Kazakh", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "Kongo", + "size": 0.019308943, + "ndv": 9 + }, + { + "start": "Kurdish", + "size": 0.019308943, + "ndv": 15 + }, + { + "start": "Luchazi", + "size": 0.019308943, + "ndv": 16 + }, + { + "start": "Makua", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "Malinke", + "size": 0.019308943, + "ndv": 15 + }, + { + "start": "Marma", + "size": 0.019308943, + "ndv": 17 + }, + { + "start": "Miskito", + "size": 0.019308943, + "ndv": 17 + }, + { + "start": "Naudemba", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "Nubian Languages", + "size": 0.019308943, + "ndv": 17 + }, + { + "start": "Palau", + "size": 0.019308943, + "ndv": 12 + }, + { + "start": "Polish", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "Portuguese", + "size": 0.019308943, + "ndv": 9 + }, + { + "start": "Romani", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "Russian", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "Sango", + "size": 0.019308943, + "ndv": 10 + }, + { + "start": "Shambala", + "size": 0.019308943, + "ndv": 11 + }, + { + "start": "Somali", + "size": 0.015243902, + "ndv": 9 + }, + { + "start": "Spanish", + "size": 0.028455285, + "ndv": 1 + }, + { + "start": "Sranantonga", + "size": 0.019308943, + "ndv": 11 + }, + { + "start": "Tamashek", + "size": 0.019308943, + "ndv": 9 + }, + { + "start": "Thai", + "size": 0.019308943, + "ndv": 14 + }, + { + "start": "Tswana", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "Turkmenian", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "Ukrainian and Russian", + "size": 0.019308943, + "ndv": 9 + }, + { + "start": "Watyi", + "size": 0.019308943, + "ndv": 14 + }, + { + "start": "Zulu", + "end": "[South]Mande", + "size": 0.00203252, + "ndv": 2 + } ] } -Percentage 0.0 99.9 50 JSON_HB { - "histogram_hb_v1": [ - "0.0", - "0.0", - "0.0", - "0.0", - "0.1", - "0.2", - "0.3", - "0.4", - "0.5", - "0.6", - "0.7", - "0.9", - "1.1", - "1.3", - "1.5", - "1.7", - "1.9", - "2.2", - "2.4", - "2.7", - "3.0", - "3.3", - "3.7", - "4.1", - "4.7", - "5.3", - "5.7", - "6.4", - "7.0", - "7.6", - "8.2", - "9.0", - "9.7", - "11.0", - "12.4", - "14.0", - "16.5", - "19.7", - "23.2", - "31.0", - "36.4", - "45.7", - "52.6", - "65.3", - "76.7", - "85.6", - "89.7", - "94.1", - "97.2", - "99.0", - "99.9" +Percentage 0.0 99.9 49 JSON_HB { + "histogram_hb_v2": [ + { + "start": "0.0", + "size": 0.066056911, + "ndv": 1 + }, + { + "start": "0.1", + "size": 0.020325203, + "ndv": 1 + }, + { + "start": "0.2", + "size": 0.022357724, + "ndv": 1 + }, + { + "start": "0.3", + "size": 0.017276423, + "ndv": 1 + }, + { + "start": "0.4", + "size": 0.025406504, + "ndv": 1 + }, + { + "start": "0.5", + "size": 0.020325203, + "ndv": 1 + }, + { + "start": "0.6", + "size": 0.020325203, + "ndv": 1 + }, + { + "start": "0.7", + "size": 0.019308943, + "ndv": 2 + }, + { + "start": "0.8", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "1.0", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "1.3", + "size": 0.019308943, + "ndv": 2 + }, + { + "start": "1.4", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "1.6", + "size": 0.019308943, + "ndv": 2 + }, + { + "start": "1.8", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "2.0", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "2.3", + "size": 0.019308943, + "ndv": 2 + }, + { + "start": "2.5", + "size": 0.019308943, + "ndv": 3 + }, + { + "start": "2.8", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "3.1", + "size": 0.019308943, + "ndv": 4 + }, + { + "start": "3.4", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "3.8", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "4.2", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "4.8", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "5.3", + "size": 0.019308943, + "ndv": 5 + }, + { + "start": "5.7", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "6.4", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "7.0", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "7.6", + "size": 0.019308943, + "ndv": 6 + }, + { + "start": "8.1", + "size": 0.019308943, + "ndv": 7 + }, + { + "start": "8.9", + "size": 0.019308943, + "ndv": 8 + }, + { + "start": "9.6", + "size": 0.019308943, + "ndv": 10 + }, + { + "start": "10.9", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "12.1", + "size": 0.019308943, + "ndv": 14 + }, + { + "start": "13.8", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "16.1", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "18.4", + "size": 0.019308943, + "ndv": 14 + }, + { + "start": "21.6", + "size": 0.019308943, + "ndv": 14 + }, + { + "start": "28.3", + "size": 0.019308943, + "ndv": 16 + }, + { + "start": "33.0", + "size": 0.019308943, + "ndv": 16 + }, + { + "start": "41.6", + "size": 0.019308943, + "ndv": 18 + }, + { + "start": "50.2", + "size": 0.019308943, + "ndv": 16 + }, + { + "start": "59.7", + "size": 0.019308943, + "ndv": 18 + }, + { + "start": "70.6", + "size": 0.019308943, + "ndv": 16 + }, + { + "start": "80.0", + "size": 0.019308943, + "ndv": 14 + }, + { + "start": "86.8", + "size": 0.019308943, + "ndv": 17 + }, + { + "start": "91.3", + "size": 0.019308943, + "ndv": 15 + }, + { + "start": "95.6", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "97.6", + "size": 0.019308943, + "ndv": 13 + }, + { + "start": "99.6", + "end": "99.9", + "size": 0.016260163, + "ndv": 2 + } ] } analyze select * from Country use index () where Code between 'BBC' and 'GGG'; id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra -1 SIMPLE Country ALL NULL NULL NULL NULL 239 239.00 25.49 25.52 Using where +1 SIMPLE Country ALL NULL NULL NULL NULL 239 239.00 25.10 25.52 Using where analyze select * from Country use index () where Code < 'BBC'; id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra -1 SIMPLE Country ALL NULL NULL NULL NULL 239 239.00 7.84 7.11 Using where +1 SIMPLE Country ALL NULL NULL NULL NULL 239 239.00 8.37 7.11 Using where set histogram_type=@save_histogram_type; set histogram_size=@save_histogram_size; DROP SCHEMA world; diff --git a/sql/opt_histogram_json.cc b/sql/opt_histogram_json.cc index f1030662572..9461bd03dbf 100644 --- a/sql/opt_histogram_json.cc +++ b/sql/opt_histogram_json.cc @@ -23,12 +23,35 @@ class Histogram_json_builder : public Histogram_builder { Histogram_json_hb *histogram; - uint hist_width; /* the number of points in the histogram */ - double bucket_capacity; /* number of rows in a bucket of the histogram */ - uint curr_bucket; /* number of the current bucket to be built */ + /* Number of buckets in the histogram */ + uint hist_width; - std::vector<std::string> bucket_bounds; - bool first_value= true; + /* + Number of rows that we intend to have in the bucket. That is, this is + + n_rows_in_table / histo_width + + Actual number of rows in the buckets we produce may vary because of + "popular values" and rounding. + */ + longlong bucket_capacity; + + /* Number of the buckets already collected */ + uint n_buckets_collected; + + /* Data about the bucket we are filling now */ + struct CurBucket + { + /* Number of values in the bucket so far. */ + longlong size; + + /* Number of distinct values in the bucket */ + int ndv; + }; + CurBucket bucket; + + /* Used to create the JSON representation of the histogram. */ + Json_writer writer; public: Histogram_json_builder(Histogram_json_hb *hist, Field *col, uint col_len, @@ -37,57 +60,159 @@ class Histogram_json_builder : public Histogram_builder { bucket_capacity= (double)records / histogram->get_width(); hist_width= histogram->get_width(); - curr_bucket= 0; + n_buckets_collected= 0; + bucket.ndv= 0; + bucket.size= 0; + + writer.start_object(); + writer.add_member(Histogram_json_hb::JSON_NAME).start_array(); } ~Histogram_json_builder() override = default; + bool bucket_is_empty() { return bucket.ndv == 0; } + + /* + Flush the current bucket out (to JSON output), and set it to be empty. + */ + void finalize_bucket() + { + double fract= (double) bucket.size / records; + writer.add_member("size").add_double(fract); + writer.add_member("ndv").add_ll(bucket.ndv); + writer.end_object(); + n_buckets_collected++; + + bucket.ndv= 0; + bucket.size= 0; + } + + /* + Same as finalize_bucket() but also provide the bucket's end value. + */ + void finalize_bucket_with_end_value(void *elem) + { + column->store_field_value((uchar*) elem, col_length); + StringBuffer<MAX_FIELD_WIDTH> val; + column->val_str(&val); + writer.add_member("end").add_str(val.c_ptr()); + finalize_bucket(); + } + + /* + Write the first value group to the bucket. + @param elem The value we are writing + @param cnt The number of such values. + */ + void start_bucket(void *elem, element_count cnt) + { + DBUG_ASSERT(bucket.size == 0); + column->store_field_value((uchar*) elem, col_length); + StringBuffer<MAX_FIELD_WIDTH> val; + column->val_str(&val); + + writer.start_object(); + writer.add_member("start").add_str(val.c_ptr()); + + bucket.ndv= 1; + bucket.size= cnt; + } + + /* + Append a value group of cnt values. + */ + void append_to_bucket(element_count cnt) + { + bucket.ndv++; + bucket.size += cnt; + } + /* @brief - Add data to the histogram. This call adds elem_cnt rows, each - of which has value of *elem. + Add data to the histogram. @detail - Subsequent next() calls will add values that are greater than *elem. + The call signals to add a "value group" of elem_cnt rows, each of which + has the same value that is provided in *elem. + + Subsequent next() calls will add values that are greater than the + current one. + + @return + 0 - OK */ int next(void *elem, element_count elem_cnt) override { counters.next(elem, elem_cnt); ulonglong count= counters.get_count(); - if (curr_bucket == hist_width) - return 0; - if (first_value) + /* + Ok, we've got a "value group" of elem_cnt identical values. + + If we take the values from the value group and put them into + the current bucket, how many values will be left after we've + filled the bucket? + */ + longlong overflow= bucket.size + elem_cnt - bucket_capacity; + + /* + Case #1: This value group should be put into a separate bucket, if + A. It fills the current bucket and also fills the next bucket, OR + B. It fills the current bucket, which was empty. + */ + if (overflow >= bucket_capacity || (bucket_is_empty() && overflow >= 0)) { - first_value= false; - column->store_field_value((uchar*) elem, col_length); - StringBuffer<MAX_FIELD_WIDTH> val; - column->val_str(&val); - bucket_bounds.push_back(std::string(val.ptr(), val.length())); + // Finalize the current bucket + if (!bucket_is_empty()) + finalize_bucket(); + + // Start/end the separate bucket for this value group. + start_bucket(elem, elem_cnt); + if (records == count) + finalize_bucket_with_end_value(elem); + else + finalize_bucket(); } - - if (count > bucket_capacity * (curr_bucket + 1)) + else if (overflow >= 0) { - column->store_field_value((uchar*) elem, col_length); - StringBuffer<MAX_FIELD_WIDTH> val; - column->val_str(&val); - bucket_bounds.emplace_back(val.ptr(), val.length()); - - curr_bucket++; - while (curr_bucket != hist_width && - count > bucket_capacity * (curr_bucket + 1)) + /* + Case #2: is when Case#1 doesn't hold, but we can still fill the + current bucket. + */ + + // If the bucket was empty, it would have been case #1. + DBUG_ASSERT(!bucket_is_empty()); + + /* + Finalize the current bucket. Put there enough values to make it hold + bucket_capacity values. + */ + append_to_bucket(bucket_capacity - bucket.size); + if (records == count && !overflow) + finalize_bucket_with_end_value(elem); + else + finalize_bucket(); + + if (overflow > 0) { - bucket_bounds.push_back(std::string(val.ptr(), val.length())); - curr_bucket++; + // Then, start the new bucket with the remaining values. + start_bucket(elem, overflow); } } + else + { + // Case #3: there's not enough values to fill the current bucket. + if (bucket_is_empty()) + start_bucket(elem, elem_cnt); + else + append_to_bucket(elem_cnt); + } - if (records == count && bucket_bounds.size() == hist_width) + if (records == count) { - column->store_field_value((uchar*) elem, col_length); - StringBuffer<MAX_FIELD_WIDTH> val; - column->val_str(&val); - bucket_bounds.push_back(std::string(val.ptr(), val.length())); + // This is the final value group. + if (!bucket_is_empty()) + finalize_bucket_with_end_value(elem); } return 0; } @@ -98,17 +223,10 @@ class Histogram_json_builder : public Histogram_builder */ void finalize() override { - Json_writer writer; - writer.start_object(); - writer.add_member(Histogram_json_hb::JSON_NAME).start_array(); - - for(auto& value: bucket_bounds) { - writer.add_str(value.c_str()); - } writer.end_array(); writer.end_object(); Binary_string *json_string= (Binary_string *) writer.output.get_string(); - histogram->set_json_text(bucket_bounds.size()-1, + histogram->set_json_text(n_buckets_collected, (uchar *) json_string->c_ptr()); } }; @@ -143,78 +261,132 @@ bool Histogram_json_hb::parse(MEM_ROOT *mem_root, Field *field, Histogram_type type_arg, const char *hist_data, size_t hist_data_len) { + const char *err; DBUG_ENTER("Histogram_json_hb::parse"); DBUG_ASSERT(type_arg == JSON_HB); - const char *err; - json_engine_t je; - json_string_t key_name; + const char *obj1; + int obj1_len; + double cumulative_size= 0.0; - json_scan_start(&je, &my_charset_utf8mb4_bin, - (const uchar*)hist_data, - (const uchar*)hist_data+hist_data_len); - - if (json_read_value(&je) || je.value_type != JSON_VALUE_OBJECT) + if (JSV_OBJECT != json_type(hist_data, hist_data + hist_data_len, + &obj1, &obj1_len)) { err= "Root JSON element must be a JSON object"; goto error; } - json_string_set_str(&key_name, (const uchar*)JSON_NAME, - (const uchar*)JSON_NAME + strlen(JSON_NAME)); - json_string_set_cs(&key_name, system_charset_info); - - if (json_scan_next(&je) || je.state != JST_KEY || - !json_key_matches(&je, &key_name)) - { - err= "The first key in the object must be histogram_hb_v1"; - goto error; - } - - // The value must be a JSON array - if (json_read_value(&je) || (je.value_type != JSON_VALUE_ARRAY)) + const char *hist_array; + int hist_array_len; + if (JSV_ARRAY != json_get_object_key(obj1, obj1 + obj1_len, + "histogram_hb_v2", &hist_array, + &hist_array_len)) { err= "A JSON array expected"; goto error; } - // Read the array - while (!json_scan_next(&je)) + for (int i= 0;; i++) { - switch(je.state) + const char *bucket_info; + int bucket_info_len; + enum json_types ret= json_get_array_item(hist_array, hist_array+hist_array_len, + i, &bucket_info, + &bucket_info_len); + if (ret == JSV_NOTHING) + break; + if (ret == JSV_BAD_JSON) { - case JST_VALUE: - { - const char *val; - int val_len; - json_smart_read_value(&je, &val, &val_len); - if (je.value_type != JSON_VALUE_STRING && - je.value_type != JSON_VALUE_NUMBER && - je.value_type != JSON_VALUE_TRUE && - je.value_type != JSON_VALUE_FALSE) - { - err= "Scalar value expected"; - goto error; - } - uchar buf[MAX_KEY_LENGTH]; - uint len_to_copy= field->key_length(); - field->store_text(val, val_len, &my_charset_bin); - uint bytes= field->get_key_image(buf, len_to_copy, Field::itRAW); - histogram_bounds.push_back(std::string((char*)buf, bytes)); - // TODO: Should we also compare this endpoint with the previous - // to verify that the ordering is right? - break; - } - case JST_ARRAY_END: - break; + err= "JSON parse error"; + goto error; + } + if (ret != JSV_OBJECT) + { + err= "Object expected"; + goto error; + } + + // Ok, now we are parsing the JSON object describing the bucket + // Read the "start" field. + const char *val; + int val_len; + ret= json_get_object_key(bucket_info, bucket_info+bucket_info_len, + "start", &val, &val_len); + if (ret != JSV_STRING && ret != JSV_NUMBER) + { + err= ".start member must be present and be a scalar"; + goto error; + } + + // Read the "size" field. + const char *size; + int size_len; + ret= json_get_object_key(bucket_info, bucket_info+bucket_info_len, + "size", &size, &size_len); + if (ret != JSV_NUMBER) + { + err= ".size member must be present and be a scalar"; + goto error; + } + + int conv_err; + char *size_end= (char*)size + size_len; + double size_d= my_strtod(size, &size_end, &conv_err); + if (conv_err) + { + err= ".size member must be a floating-point value"; + goto error; + } + cumulative_size += size_d; + + // Read the "ndv" field + const char *ndv; + int ndv_len; + ret= json_get_object_key(bucket_info, bucket_info+bucket_info_len, + "ndv", &ndv, &ndv_len); + if (ret != JSV_NUMBER) + { + err= ".ndv member must be present and be a scalar"; + goto error; + } + char *ndv_end= (char*)ndv + ndv_len; + longlong ndv_ll= my_strtoll10(ndv, &ndv_end, &conv_err); + if (conv_err) + { + err= ".ndv member must be an integer value"; + goto error; + } + + const char *end_val; + int end_val_len; + ret= json_get_object_key(bucket_info, bucket_info+bucket_info_len, + "end", &end_val, &end_val_len); + if (ret != JSV_NOTHING && ret != JSV_STRING && ret !=JSV_NUMBER) + { + err= ".end member must be a scalar"; + goto error; + } + if (ret != JSV_NOTHING) + last_bucket_end_endp.assign(end_val, end_val_len); + + buckets.push_back({std::string(val, val_len), NULL, cumulative_size, + ndv_ll}); + + if (buckets.size()) + { + auto& prev_bucket= buckets[buckets.size()-1]; + if (prev_bucket.ndv == 1) + prev_bucket.end_value= &prev_bucket.start_value; + else + prev_bucket.end_value= &buckets.back().start_value; } } - // n_buckets = n_bounds - 1 : - size= histogram_bounds.size()-1; - DBUG_RETURN(false); + buckets.back().end_value= &last_bucket_end_endp; + size= buckets.size(); + DBUG_RETURN(false); error: my_error(ER_JSON_HISTOGRAM_PARSE_FAILED, MYF(0), err, - je.s.c_str - (const uchar*)hist_data); + 12345); DBUG_RETURN(true); } @@ -257,7 +429,7 @@ double position_in_interval(Field *field, const uchar *key, uint key_len, { store_key_image_to_rec_no_null(field, left.data(), field->key_length()); double min_val_real= field->val_real(); - + store_key_image_to_rec_no_null(field, right.data(), field->key_length()); double max_val_real= field->val_real(); @@ -273,37 +445,44 @@ double position_in_interval(Field *field, const uchar *key, uint key_len, double Histogram_json_hb::point_selectivity(Field *field, key_range *endpoint, double avg_sel) { - double sel; - store_key_image_to_rec(field, (uchar *) endpoint->key, - field->key_length()); - const uchar *min_key = endpoint->key; + const uchar *key = endpoint->key; if (field->real_maybe_null()) - min_key++; - uint min_idx= find_bucket(field, min_key, false); - - uint max_idx= find_bucket(field, min_key, true); -#if 0 - // find how many buckets this value occupies - while ((max_idx + 1 < get_width() ) && - (field->key_cmp((uchar *)histogram_bounds[max_idx + 1].data(), min_key) == 0)) { - max_idx++; - } -#endif - if (max_idx > min_idx) + key++; + + // If the value is outside of the histogram's range, this will "clip" it to + // first or last bucket. + int idx= find_bucket(field, key, false); + + double sel; + + if (buckets[idx].ndv == 1 && + field->key_cmp((uchar*)buckets[idx].start_value.data(), key)) { - // value spans multiple buckets - double bucket_sel= 1.0/(get_width() + 1); - sel= bucket_sel * (max_idx - min_idx + 1); + // The bucket has a single value and it doesn't match! Use the global + // average. + sel= avg_sel; } else { - // the value fits within a single bucket - sel = MY_MIN(avg_sel, 1.0/get_width()); + /* + We get here when: + * The bucket has one value and this is the value we are looking for. + * The bucket has multiple values. Then, assume + */ + sel= (get_left_fract(idx) - buckets[idx].cum_fract) / buckets[idx].ndv; } return sel; } +double Histogram_json_hb::get_left_fract(int idx) +{ + if (!idx) + return 0.0; + else + return buckets[idx-1].cum_fract; +} + /* @param field The table field histogram is for. We don't care about the field's current value, we only need its virtual functions to @@ -317,7 +496,6 @@ double Histogram_json_hb::range_selectivity(Field *field, key_range *min_endp, key_range *max_endp) { double min, max; - double width= 1.0 / histogram_bounds.size(); if (min_endp && !(field->null_ptr && min_endp->key[0])) { @@ -333,10 +511,12 @@ double Histogram_json_hb::range_selectivity(Field *field, key_range *min_endp, // Find the leftmost bucket that contains the lookup value. // (If the lookup value is to the left of all buckets, find bucket #0) int idx= find_bucket(field, min_key, exclusive_endp); - double min_sel= position_in_interval(field, min_key, min_key_len, - histogram_bounds[idx], - histogram_bounds[idx+1]); - min= idx*width + min_sel*width; + double left_fract= get_left_fract(idx); + double sel= position_in_interval(field, min_key, min_key_len, + buckets[idx].start_value, + *buckets[idx].end_value); + + min= left_fract + sel * (buckets[idx].cum_fract - left_fract); } else min= 0.0; @@ -355,10 +535,11 @@ double Histogram_json_hb::range_selectivity(Field *field, key_range *min_endp, } int idx= find_bucket(field, max_key, inclusive_endp); - double max_sel= position_in_interval(field, max_key, max_key_len, - histogram_bounds[idx], - histogram_bounds[idx+1]); - max= idx*width + max_sel*width; + double left_fract= get_left_fract(idx); + double sel= position_in_interval(field, max_key, max_key_len, + buckets[idx].start_value, + *buckets[idx].end_value); + max= left_fract + sel * (buckets[idx].cum_fract - left_fract); } else max= 1.0; @@ -375,23 +556,35 @@ void Histogram_json_hb::serialize(Field *field) /* - Find the histogram bucket that contains the value. + Find the rightmost histogram bucket such that "lookup_val $GT start_value". + + $GT is either '>' or '>=' depending on equal_is_less parameter. @param equal_is_less Controls what to do if a histogram bound is equal to the lookup_val. + + @detail + Possible cases: + 1. The regular case: the value falls into some bucket. + + 2. The value is less than the minimum of the first bucket + 3. The value is greater than the maximum of the last bucket + In these cases we "clip" to the first/last bucket. + + 4. The value hits the bucket boundary. Then, we need to know whether the + point of interest is to the left the constant, or to the right of it. */ int Histogram_json_hb::find_bucket(Field *field, const uchar *lookup_val, bool equal_is_less) { int low= 0; - int high= (int)histogram_bounds.size() - 1; - int middle; + int high= (int)buckets.size() - 1; while (low + 1 < high) { - middle= (low + high) / 2; - int res= field->key_cmp((uchar*)histogram_bounds[middle].data(), lookup_val); + int middle= (low + high) / 2; + int res= field->key_cmp((uchar*)buckets[middle].start_value.data(), lookup_val); if (!res) res= equal_is_less? -1: 1; if (res < 0) diff --git a/sql/opt_histogram_json.h b/sql/opt_histogram_json.h index a83e88a88c4..ed48d951a7f 100644 --- a/sql/opt_histogram_json.h +++ b/sql/opt_histogram_json.h @@ -20,6 +20,32 @@ An equi-height histogram which stores real values for bucket bounds. Handles @@histogram_type=JSON_HB + + Histogram format in JSON: + + { + "histogram_hb_v2": [ + { "start": "value", "size":nnn.nn, "ndv": nnn }, + ... + { "start": "value", "size":nnn.nn, "ndv": nnn, "end": "value"} + ] + } + + The histogram is an object with single member named "histogram_hb_v2". + The value of that member is an array of buckets. + Each bucket is an object with these members: + "start" - the first value in the bucket. + "size" - fraction of table rows that is contained in the bucket. + "ndv" - Number of Distinct Values in the bucket. + "end" - Optionally, the last value in the bucket. + + A bucket is a single-point bucket if it has ndv=1. + + Most buckets have no "end" member: the bucket is assumed to contain all + values up to the "start" of the next bucket. + + The exception is single-point buckets where last value is the same as the + first value. */ class Histogram_json_hb : public Histogram_base @@ -29,11 +55,29 @@ class Histogram_json_hb : public Histogram_base /* Collection-time only: collected histogram in the JSON form. */ std::string json_text; - // Array of histogram bucket endpoints in KeyTupleFormat. - std::vector<std::string> histogram_bounds; + struct Bucket + { + // The left endpoint in KeyTupleFormat. The endpoint is inclusive, this + // value is in this bucket. + std::string start_value; + + // The right endpoint. It is non-inclusive, except for the last bucket. + std::string *end_value; + + // Cumulative fraction: The fraction of table rows that fall into this + // and preceding buckets. + double cum_fract; + + // Number of distinct values in the bucket. + longlong ndv; + }; + + std::vector<Bucket> buckets; + + std::string last_bucket_end_endp; public: - static constexpr const char* JSON_NAME="histogram_hb_v1"; + static constexpr const char* JSON_NAME="histogram_hb_v2"; bool parse(MEM_ROOT *mem_root, Field *field, Histogram_type type_arg, const char *hist_data, size_t hist_data_len) override; @@ -80,6 +124,7 @@ class Histogram_json_hb : public Histogram_base } private: + double get_left_fract(int idx); int find_bucket(Field *field, const uchar *lookup_val, bool equal_is_less); };