Skip to content

Commit f76e310

Browse files
committed
Rename histogram_type=JSON to JSON_HB
1 parent a48e63c commit f76e310

12 files changed

+67
-64
lines changed

mysql-test/main/statistics_json.result

Lines changed: 37 additions & 37 deletions
Large diffs are not rendered by default.

mysql-test/main/statistics_json.test

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
--echo # Test that we can store JSON arrays in histogram field mysql.column_stats when histogram_type=JSON
33
--echo #
44

5-
let $histogram_type_override='JSON';
5+
let $histogram_type_override='JSON_HB';
66
--source statistics.test
77

88
--source include/have_stat_tables.inc
@@ -27,7 +27,7 @@ select hex(histogram) from mysql.column_stats where table_name='t1_bin';
2727
explain extended select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
2828
analyze select * from t1_bin where a between 'a-3a' and 'zzzzzzzzz';
2929

30-
set histogram_type=json;
30+
set histogram_type=json_hb;
3131
create table t1_json (a varchar(255));
3232
insert into t1_json select concat('a-', a) from ten;
3333
analyze table t1_json persistent for all;
@@ -51,7 +51,7 @@ create table users (
5151
set histogram_size=50;
5252
insert into users select 'Moscow' from seq_1_to_99;
5353
insert into users select 'Helsinki' from seq_1_to_2;
54-
set histogram_type=json;
54+
set histogram_type=json_hb;
5555
analyze table users persistent for all;
5656
explain extended select * from users where city = 'Moscow';
5757
analyze select * from users where city = 'Moscow';
@@ -76,7 +76,7 @@ use world;
7676
--enable_result_log
7777
--enable_query_log
7878

79-
set histogram_type='JSON';
79+
set histogram_type='JSON_HB';
8080
set histogram_size=50;
8181
--disable_result_log
8282
ANALYZE TABLE Country, City, CountryLanguage persistent for all;
@@ -91,4 +91,4 @@ analyze select * from Country where 'Code' < 'BBC';
9191
set histogram_type=@save_histogram_type;
9292
set histogram_size=@save_histogram_size;
9393

94-
DROP SCHEMA world;
94+
DROP SCHEMA world;

mysql-test/main/system_mysql_db.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ column_stats CREATE TABLE `column_stats` (
234234
`avg_length` decimal(12,4) DEFAULT NULL,
235235
`avg_frequency` decimal(12,4) DEFAULT NULL,
236236
`hist_size` tinyint(3) unsigned DEFAULT NULL,
237-
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON') COLLATE utf8mb3_bin DEFAULT NULL,
237+
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB') COLLATE utf8mb3_bin DEFAULT NULL,
238238
`histogram` blob DEFAULT NULL,
239239
PRIMARY KEY (`db_name`,`table_name`,`column_name`)
240240
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Columns'

mysql-test/main/system_mysql_db_fix40123.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ column_stats CREATE TABLE `column_stats` (
272272
`avg_length` decimal(12,4) DEFAULT NULL,
273273
`avg_frequency` decimal(12,4) DEFAULT NULL,
274274
`hist_size` tinyint(3) unsigned DEFAULT NULL,
275-
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON') COLLATE utf8mb3_bin DEFAULT NULL,
275+
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB') COLLATE utf8mb3_bin DEFAULT NULL,
276276
`histogram` blob DEFAULT NULL,
277277
PRIMARY KEY (`db_name`,`table_name`,`column_name`)
278278
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Columns'

mysql-test/main/system_mysql_db_fix50030.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ column_stats CREATE TABLE `column_stats` (
276276
`avg_length` decimal(12,4) DEFAULT NULL,
277277
`avg_frequency` decimal(12,4) DEFAULT NULL,
278278
`hist_size` tinyint(3) unsigned DEFAULT NULL,
279-
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON') COLLATE utf8mb3_bin DEFAULT NULL,
279+
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB') COLLATE utf8mb3_bin DEFAULT NULL,
280280
`histogram` blob DEFAULT NULL,
281281
PRIMARY KEY (`db_name`,`table_name`,`column_name`)
282282
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Columns'

mysql-test/main/system_mysql_db_fix50117.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ column_stats CREATE TABLE `column_stats` (
256256
`avg_length` decimal(12,4) DEFAULT NULL,
257257
`avg_frequency` decimal(12,4) DEFAULT NULL,
258258
`hist_size` tinyint(3) unsigned DEFAULT NULL,
259-
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON') COLLATE utf8mb3_bin DEFAULT NULL,
259+
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB') COLLATE utf8mb3_bin DEFAULT NULL,
260260
`histogram` blob DEFAULT NULL,
261261
PRIMARY KEY (`db_name`,`table_name`,`column_name`)
262262
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Columns'

mysql-test/suite/funcs_1/r/is_columns_mysql.result

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ def mysql column_stats avg_frequency 8 NULL YES decimal NULL NULL 12 4 NULL NULL
1313
def mysql column_stats avg_length 7 NULL YES decimal NULL NULL 12 4 NULL NULL NULL decimal(12,4) select,insert,update,references NEVER NULL
1414
def mysql column_stats column_name 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(64) PRI select,insert,update,references NEVER NULL
1515
def mysql column_stats db_name 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(64) PRI select,insert,update,references NEVER NULL
16-
def mysql column_stats histogram 11 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) select,insert,update,references NEVER NULL
16+
def mysql column_stats histogram 11 NULL YES blob 65535 65535 NULL NULL NULL NULL NULL blob select,insert,update,references NEVER NULL
1717
def mysql column_stats hist_size 9 NULL YES tinyint NULL NULL 3 0 NULL NULL NULL tinyint(3) unsigned select,insert,update,references NEVER NULL
18-
def mysql column_stats hist_type 10 NULL YES enum 14 42 NULL NULL NULL utf8mb3 utf8mb3_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') select,insert,update,references NEVER NULL
18+
def mysql column_stats hist_type 10 NULL YES enum 14 42 NULL NULL NULL utf8mb3 utf8mb3_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB') select,insert,update,references NEVER NULL
1919
def mysql column_stats max_value 5 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) select,insert,update,references NEVER NULL
2020
def mysql column_stats min_value 4 NULL YES varbinary 255 255 NULL NULL NULL NULL NULL varbinary(255) select,insert,update,references NEVER NULL
2121
def mysql column_stats nulls_ratio 6 NULL YES decimal NULL NULL 12 4 NULL NULL NULL decimal(12,4) select,insert,update,references NEVER NULL
@@ -345,8 +345,8 @@ NULL mysql column_stats nulls_ratio decimal NULL NULL NULL NULL decimal(12,4)
345345
NULL mysql column_stats avg_length decimal NULL NULL NULL NULL decimal(12,4)
346346
NULL mysql column_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4)
347347
NULL mysql column_stats hist_size tinyint NULL NULL NULL NULL tinyint(3) unsigned
348-
3.0000 mysql column_stats hist_type enum 14 42 utf8mb3 utf8mb3_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB')
349-
1.0000 mysql column_stats histogram varbinary 255 255 NULL NULL varbinary(255)
348+
3.0000 mysql column_stats hist_type enum 14 42 utf8mb3 utf8mb3_bin enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB')
349+
1.0000 mysql column_stats histogram blob 65535 65535 NULL NULL blob
350350
3.0000 mysql db Host char 255 765 utf8mb3 utf8mb3_bin char(255)
351351
3.0000 mysql db Db char 64 192 utf8mb3 utf8mb3_bin char(64)
352352
3.0000 mysql db User char 128 384 utf8mb3 utf8mb3_bin char(128)

mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1309,7 +1309,7 @@ VARIABLE_COMMENT Specifies type of the histograms created by ANALYZE. Possible v
13091309
NUMERIC_MIN_VALUE NULL
13101310
NUMERIC_MAX_VALUE NULL
13111311
NUMERIC_BLOCK_SIZE NULL
1312-
ENUM_VALUE_LIST SINGLE_PREC_HB,DOUBLE_PREC_HB
1312+
ENUM_VALUE_LIST SINGLE_PREC_HB,DOUBLE_PREC_HB,JSON_HB
13131313
READ_ONLY NO
13141314
COMMAND_LINE_ARGUMENT REQUIRED
13151315
VARIABLE_NAME HOSTNAME

scripts/mysql_system_tables.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ DROP TABLE tmp_proxies_priv;
314314

315315
CREATE TABLE IF NOT EXISTS table_stats (db_name varchar(64) NOT NULL, table_name varchar(64) NOT NULL, cardinality bigint(21) unsigned DEFAULT NULL, PRIMARY KEY (db_name,table_name) ) engine=Aria transactional=0 CHARACTER SET utf8 COLLATE utf8_bin comment='Statistics on Tables';
316316

317-
CREATE TABLE IF NOT EXISTS column_stats (db_name varchar(64) NOT NULL, table_name varchar(64) NOT NULL, column_name varchar(64) NOT NULL, min_value varbinary(255) DEFAULT NULL, max_value varbinary(255) DEFAULT NULL, nulls_ratio decimal(12,4) DEFAULT NULL, avg_length decimal(12,4) DEFAULT NULL, avg_frequency decimal(12,4) DEFAULT NULL, hist_size tinyint unsigned, hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON'), histogram blob, PRIMARY KEY (db_name,table_name,column_name) ) engine=Aria transactional=0 CHARACTER SET utf8 COLLATE utf8_bin comment='Statistics on Columns';
317+
CREATE TABLE IF NOT EXISTS column_stats (db_name varchar(64) NOT NULL, table_name varchar(64) NOT NULL, column_name varchar(64) NOT NULL, min_value varbinary(255) DEFAULT NULL, max_value varbinary(255) DEFAULT NULL, nulls_ratio decimal(12,4) DEFAULT NULL, avg_length decimal(12,4) DEFAULT NULL, avg_frequency decimal(12,4) DEFAULT NULL, hist_size tinyint unsigned, hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB'), histogram blob, PRIMARY KEY (db_name,table_name,column_name) ) engine=Aria transactional=0 CHARACTER SET utf8 COLLATE utf8_bin comment='Statistics on Columns';
318318

319319
CREATE TABLE IF NOT EXISTS index_stats (db_name varchar(64) NOT NULL, table_name varchar(64) NOT NULL, index_name varchar(64) NOT NULL, prefix_arity int(11) unsigned NOT NULL, avg_frequency decimal(12,4) DEFAULT NULL, PRIMARY KEY (db_name,table_name,index_name,prefix_arity) ) engine=Aria transactional=0 CHARACTER SET utf8 COLLATE utf8_bin comment='Statistics on Indexes';
320320

sql/item_strfunc.cc

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ String *Item_func_from_base64::val_str(String *str)
503503

504504

505505
const char *histogram_types[] =
506-
{"SINGLE_PREC_HB", "DOUBLE_PREC_HB", "JSON", 0};
506+
{"SINGLE_PREC_HB", "DOUBLE_PREC_HB", "JSON_HB", 0};
507507
static TYPELIB histogram_types_typelib=
508508
{ array_elements(histogram_types),
509509
"histogram_types",
@@ -533,6 +533,13 @@ String *Item_func_decode_histogram::val_str(String *str)
533533
null_value= 1;
534534
return 0;
535535
}
536+
537+
if (type == JSON_HB)
538+
{
539+
// It's a JSON histogram. Return it as-is.
540+
return res;
541+
}
542+
536543
if (type == DOUBLE_PREC_HB && res->length() % 2 != 0)
537544
res->length(res->length() - 1); // one byte is unused
538545

@@ -541,10 +548,6 @@ String *Item_func_decode_histogram::val_str(String *str)
541548
str->length(0);
542549
char numbuf[32];
543550
const uchar *p= (uchar*)res->c_ptr_safe();
544-
if (type == JSON)
545-
{
546-
return res;
547-
}
548551
for (i= 0; i < res->length(); i++)
549552
{
550553
double val;

0 commit comments

Comments
 (0)