mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-26519: Improved histograms: Make JSON parser efficient
Previous JSON parser was using an API which made the parsing inefficient: the same JSON contents was parsed again and again. Switch to using a lower-level parsing API which allows to do parsing in an efficient way.
This commit is contained in:
@ -46,62 +46,53 @@ drop table ten;
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='["not-what-you-expect"]' WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":"not-histogram"}' WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":["not-a-bucket"]}'
|
||||
WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":[{"no-expected-members":1}]}'
|
||||
WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":[{"start":{}}]}'
|
||||
WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":[{"start":"aaa", "size":"not-an-integer"}]}'
|
||||
WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":[{"start":"aaa", "size":0.25}]}'
|
||||
WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":[{"start":"aaa", "size":0.25, "ndv":1}]}'
|
||||
WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
UPDATE mysql.column_stats
|
||||
SET histogram='{"histogram_hb_v2":[]}'
|
||||
WHERE table_name='t1_json';
|
||||
FLUSH TABLES;
|
||||
--error ER_JSON_HISTOGRAM_PARSE_FAILED
|
||||
explain select * from t1_json limit 1;
|
||||
|
||||
--source include/have_sequence.inc
|
||||
|
Reference in New Issue
Block a user