mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix JSON statistics time format and added tests for it and server version.
This commit is contained in:
@ -23,16 +23,17 @@ create table mysql.tz like mysql.time_zone_transition;
|
|||||||
alter table mysql.tz engine=innodb;
|
alter table mysql.tz engine=innodb;
|
||||||
insert into mysql.tz select * from mysql.time_zone_transition;
|
insert into mysql.tz select * from mysql.time_zone_transition;
|
||||||
set global innodb_stats_persistent=1;
|
set global innodb_stats_persistent=1;
|
||||||
|
set time_zone="+03:00";
|
||||||
|
SET TIMESTAMP= UNIX_TIMESTAMP('2022-01-07 07:07:00');
|
||||||
ANALYZE TABLE mysql.tz PERSISTENT FOR ALL;
|
ANALYZE TABLE mysql.tz PERSISTENT FOR ALL;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
mysql.tz analyze status Engine-independent statistics collected
|
mysql.tz analyze status Engine-independent statistics collected
|
||||||
mysql.tz analyze status OK
|
mysql.tz analyze status OK
|
||||||
delete from mysql.index_stats where prefix_arity!=1;
|
delete from mysql.index_stats where prefix_arity!=1;
|
||||||
delete from mysql.column_stats where column_name!='Time_zone_id';
|
delete from mysql.column_stats where column_name!='Time_zone_id';
|
||||||
set time_zone="+03:00";
|
|
||||||
update mysql.innodb_index_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
update mysql.innodb_index_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
||||||
update mysql.innodb_table_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
update mysql.innodb_table_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
||||||
update mysql.column_stats set histogram=json_replace(histogram, '$.collected_at', '2020-01-02 03:04:05 UTC', '$.collected_by', 'this very version');
|
update mysql.column_stats set histogram=json_replace(histogram, '$.collected_by', replace(json_value(histogram, '$.collected_by'), @@version, 'version'));
|
||||||
set global innodb_stats_persistent= @save_innodb_stats_persistent;
|
set global innodb_stats_persistent= @save_innodb_stats_persistent;
|
||||||
alter table mysql.time_zone_name ORDER BY Name;
|
alter table mysql.time_zone_name ORDER BY Name;
|
||||||
CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(Host 'localhost');
|
CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(Host 'localhost');
|
||||||
@ -95,7 +96,7 @@ USE mysql;
|
|||||||
LOCK TABLES `column_stats` WRITE;
|
LOCK TABLES `column_stats` WRITE;
|
||||||
/*!40000 ALTER TABLE `column_stats` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `column_stats` DISABLE KEYS */;
|
||||||
REPLACE INTO `column_stats` VALUES
|
REPLACE INTO `column_stats` VALUES
|
||||||
('mysql','tz','Time_zone_id','1','5',0.0000,4.0000,98.2500,4,'JSON_HB','{\"target_histogram_size\": 254, \"collected_at\": \"2020-01-02 03:04:05 UTC\", \"collected_by\": \"this very version\", \"histogram_hb\": [{\"start\": \"1\", \"size\": 0.340966921, \"ndv\": 1}, {\"start\": \"3\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"4\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"5\", \"end\": \"5\", \"size\": 0.002544529, \"ndv\": 1}]}');
|
('mysql','tz','Time_zone_id','1','5',0.0000,4.0000,98.2500,4,'JSON_HB','{\"target_histogram_size\": 254, \"collected_at\": \"2022-01-07 07:07:00\", \"collected_by\": \"version\", \"histogram_hb\": [{\"start\": \"1\", \"size\": 0.340966921, \"ndv\": 1}, {\"start\": \"3\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"4\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"5\", \"end\": \"5\", \"size\": 0.002544529, \"ndv\": 1}]}');
|
||||||
/*!40000 ALTER TABLE `column_stats` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `column_stats` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
@ -709,7 +710,7 @@ USE mysql;
|
|||||||
LOCK TABLES `column_stats` WRITE;
|
LOCK TABLES `column_stats` WRITE;
|
||||||
/*!40000 ALTER TABLE `column_stats` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `column_stats` DISABLE KEYS */;
|
||||||
REPLACE INTO `column_stats` VALUES
|
REPLACE INTO `column_stats` VALUES
|
||||||
('mysql','tz','Time_zone_id','1','5',0.0000,4.0000,98.2500,4,'JSON_HB','{\"target_histogram_size\": 254, \"collected_at\": \"2020-01-02 03:04:05 UTC\", \"collected_by\": \"this very version\", \"histogram_hb\": [{\"start\": \"1\", \"size\": 0.340966921, \"ndv\": 1}, {\"start\": \"3\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"4\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"5\", \"end\": \"5\", \"size\": 0.002544529, \"ndv\": 1}]}');
|
('mysql','tz','Time_zone_id','1','5',0.0000,4.0000,98.2500,4,'JSON_HB','{\"target_histogram_size\": 254, \"collected_at\": \"2022-01-07 07:07:00\", \"collected_by\": \"version\", \"histogram_hb\": [{\"start\": \"1\", \"size\": 0.340966921, \"ndv\": 1}, {\"start\": \"3\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"4\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"5\", \"end\": \"5\", \"size\": 0.002544529, \"ndv\": 1}]}');
|
||||||
/*!40000 ALTER TABLE `column_stats` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `column_stats` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
@ -1300,7 +1301,7 @@ USE mysql;
|
|||||||
LOCK TABLES `column_stats` WRITE;
|
LOCK TABLES `column_stats` WRITE;
|
||||||
/*!40000 ALTER TABLE `column_stats` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `column_stats` DISABLE KEYS */;
|
||||||
INSERT IGNORE INTO `column_stats` VALUES
|
INSERT IGNORE INTO `column_stats` VALUES
|
||||||
('mysql','tz','Time_zone_id','1','5',0.0000,4.0000,98.2500,4,'JSON_HB','{\"target_histogram_size\": 254, \"collected_at\": \"2020-01-02 03:04:05 UTC\", \"collected_by\": \"this very version\", \"histogram_hb\": [{\"start\": \"1\", \"size\": 0.340966921, \"ndv\": 1}, {\"start\": \"3\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"4\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"5\", \"end\": \"5\", \"size\": 0.002544529, \"ndv\": 1}]}');
|
('mysql','tz','Time_zone_id','1','5',0.0000,4.0000,98.2500,4,'JSON_HB','{\"target_histogram_size\": 254, \"collected_at\": \"2022-01-07 07:07:00\", \"collected_by\": \"version\", \"histogram_hb\": [{\"start\": \"1\", \"size\": 0.340966921, \"ndv\": 1}, {\"start\": \"3\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"4\", \"size\": 0.328244275, \"ndv\": 1}, {\"start\": \"5\", \"end\": \"5\", \"size\": 0.002544529, \"ndv\": 1}]}');
|
||||||
/*!40000 ALTER TABLE `column_stats` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `column_stats` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
@ -43,14 +43,15 @@ create table mysql.tz like mysql.time_zone_transition;
|
|||||||
alter table mysql.tz engine=innodb;
|
alter table mysql.tz engine=innodb;
|
||||||
insert into mysql.tz select * from mysql.time_zone_transition;
|
insert into mysql.tz select * from mysql.time_zone_transition;
|
||||||
set global innodb_stats_persistent=1;
|
set global innodb_stats_persistent=1;
|
||||||
|
set time_zone="+03:00";
|
||||||
|
SET TIMESTAMP= UNIX_TIMESTAMP('2022-01-07 07:07:00');
|
||||||
ANALYZE TABLE mysql.tz PERSISTENT FOR ALL;
|
ANALYZE TABLE mysql.tz PERSISTENT FOR ALL;
|
||||||
# for predictable output in tests
|
# for predictable output in tests
|
||||||
delete from mysql.index_stats where prefix_arity!=1;
|
delete from mysql.index_stats where prefix_arity!=1;
|
||||||
delete from mysql.column_stats where column_name!='Time_zone_id';
|
delete from mysql.column_stats where column_name!='Time_zone_id';
|
||||||
set time_zone="+03:00";
|
|
||||||
update mysql.innodb_index_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
update mysql.innodb_index_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
||||||
update mysql.innodb_table_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
update mysql.innodb_table_stats set last_update="2020-01-01" where database_name="mysql" and table_name="tz";
|
||||||
update mysql.column_stats set histogram=json_replace(histogram, '$.collected_at', '2020-01-02 03:04:05 UTC', '$.collected_by', 'this very version');
|
update mysql.column_stats set histogram=json_replace(histogram, '$.collected_by', replace(json_value(histogram, '$.collected_by'), @@version, 'version'));
|
||||||
set global innodb_stats_persistent= @save_innodb_stats_persistent;
|
set global innodb_stats_persistent= @save_innodb_stats_persistent;
|
||||||
alter table mysql.time_zone_name ORDER BY Name;
|
alter table mysql.time_zone_name ORDER BY Name;
|
||||||
|
|
||||||
|
@ -178,22 +178,13 @@ private:
|
|||||||
void append_histogram_params()
|
void append_histogram_params()
|
||||||
{
|
{
|
||||||
char buf[128];
|
char buf[128];
|
||||||
|
String str(buf, sizeof(buf), system_charset_info);
|
||||||
|
THD *thd= current_thd;
|
||||||
|
timeval tv= {thd->query_start(), 0}; // we do not need microseconds
|
||||||
|
|
||||||
time_t cur_time_t= my_time(0);
|
Timestamp(tv).to_datetime(thd).to_string(&str, 0);
|
||||||
struct tm curtime;
|
|
||||||
localtime_r(&cur_time_t, &curtime);
|
|
||||||
|
|
||||||
my_snprintf(buf, sizeof(buf), "%d-%02d-%02d %2d:%02d:%02d %s",
|
|
||||||
curtime.tm_year + 1900,
|
|
||||||
curtime.tm_mon+1,
|
|
||||||
curtime.tm_mday,
|
|
||||||
curtime.tm_hour,
|
|
||||||
curtime.tm_min,
|
|
||||||
curtime.tm_sec,
|
|
||||||
system_time_zone);
|
|
||||||
|
|
||||||
writer.add_member("target_histogram_size").add_ull(hist_width);
|
writer.add_member("target_histogram_size").add_ull(hist_width);
|
||||||
writer.add_member("collected_at").add_str(buf);
|
writer.add_member("collected_at").add_str(str.ptr());
|
||||||
writer.add_member("collected_by").add_str(server_version);
|
writer.add_member("collected_by").add_str(server_version);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user