Address review input
This commit is contained in:
parent
cf8927e9cb
commit
382250c05c
@ -7397,3 +7397,51 @@ id select_type table type possible_keys key key_len ref rows r_rows filtered r_f
|
||||
set histogram_type=@save_histogram_type;
|
||||
set histogram_size=@save_histogram_size;
|
||||
DROP SCHEMA world;
|
||||
use test;
|
||||
create table t10 (
|
||||
a varchar(10)
|
||||
);
|
||||
#
|
||||
# Histograms are not collected for empty tables:
|
||||
#
|
||||
analyze table t10 persistent for all;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t10 analyze status Engine-independent statistics collected
|
||||
test.t10 analyze status Table is already up to date
|
||||
select histogram
|
||||
from mysql.column_stats where table_name='t10' and db_name=database();
|
||||
histogram
|
||||
NULL
|
||||
#
|
||||
# Try with n_buckets > n_rows
|
||||
#
|
||||
insert into t10 values ('Berlin'),('Paris'),('Rome');
|
||||
set histogram_size=10, histogram_type='json_hb';
|
||||
analyze table t10 persistent for all;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t10 analyze status Engine-independent statistics collected
|
||||
test.t10 analyze status OK
|
||||
select histogram
|
||||
from mysql.column_stats where table_name='t10' and db_name=database();
|
||||
histogram
|
||||
{
|
||||
"histogram_hb_v2": [
|
||||
{
|
||||
"start": "Berlin",
|
||||
"size": 0.333333333,
|
||||
"ndv": 1
|
||||
},
|
||||
{
|
||||
"start": "Paris",
|
||||
"size": 0.333333333,
|
||||
"ndv": 1
|
||||
},
|
||||
{
|
||||
"start": "Rome",
|
||||
"end": "Rome",
|
||||
"size": 0.333333333,
|
||||
"ndv": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
drop table t10;
|
||||
|
@ -149,3 +149,26 @@ set histogram_type=@save_histogram_type;
|
||||
set histogram_size=@save_histogram_size;
|
||||
|
||||
DROP SCHEMA world;
|
||||
use test;
|
||||
|
||||
create table t10 (
|
||||
a varchar(10)
|
||||
);
|
||||
|
||||
--echo #
|
||||
--echo # Histograms are not collected for empty tables:
|
||||
--echo #
|
||||
analyze table t10 persistent for all;
|
||||
select histogram
|
||||
from mysql.column_stats where table_name='t10' and db_name=database();
|
||||
|
||||
--echo #
|
||||
--echo # Try with n_buckets > n_rows
|
||||
--echo #
|
||||
insert into t10 values ('Berlin'),('Paris'),('Rome');
|
||||
set histogram_size=10, histogram_type='json_hb';
|
||||
analyze table t10 persistent for all;
|
||||
select histogram
|
||||
from mysql.column_stats where table_name='t10' and db_name=database();
|
||||
|
||||
drop table t10;
|
||||
|
@ -59,6 +59,8 @@ public:
|
||||
: Histogram_builder(col, col_len, rows), histogram(hist)
|
||||
{
|
||||
bucket_capacity= records / histogram->get_width();
|
||||
if (bucket_capacity == 0)
|
||||
bucket_capacity= 1;
|
||||
hist_width= histogram->get_width();
|
||||
n_buckets_collected= 0;
|
||||
bucket.ndv= 0;
|
||||
@ -227,7 +229,8 @@ public:
|
||||
writer.end_object();
|
||||
Binary_string *json_string= (Binary_string *) writer.output.get_string();
|
||||
histogram->set_json_text(n_buckets_collected,
|
||||
(uchar *) json_string->c_ptr());
|
||||
json_string->c_ptr(),
|
||||
(size_t)json_string->length());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -113,11 +113,11 @@ public:
|
||||
double range_selectivity(Field *field, key_range *min_endp,
|
||||
key_range *max_endp) override;
|
||||
|
||||
void set_json_text(ulonglong sz, uchar *json_text_arg)
|
||||
void set_json_text(ulonglong sz, const char *json_text_arg,
|
||||
size_t json_text_len)
|
||||
{
|
||||
size= (size_t) sz;
|
||||
json_text.assign((const char*)json_text_arg,
|
||||
strlen((const char*)json_text_arg));
|
||||
json_text.assign(json_text_arg, json_text_len);
|
||||
}
|
||||
|
||||
private:
|
||||
|
Loading…
x
Reference in New Issue
Block a user