Skip to content

Commit 6010a0c

Browse files
rockeetdlenev
authored andcommitted
Fix rdb_i_s_sst_props_fields_info (percona#1267)
Upstream commit ID: facebook/mysql-5.6@8fae2bb PS-8755: Merge percona-202301 (https://jira.percona.com/browse/PS-8755) Summary: In `rdb_i_s_sst_props_fields_info` definition, flag `MY_I_S_MAYBE_NULL` is missing for fields `COMPRESSION_ALGO`, `FILTER_POLICY`, `COMPRESSION_OPTIONS`, causing the `set_null` does not take effect, these 3 fields will keep last SST's value. This PR fixed this issue. Pull Request resolved: facebook/mysql-5.6#1267 Reviewed By: lth Differential Revision: D42928109 Pulled By: hermanlee fbshipit-source-id: 662dc11e7c9a8f8c0758006e20ccc739ebe09f40
1 parent 48ea32e commit 6010a0c

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

mysql-test/suite/rocksdb/r/i_s_sst_props.result

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ ROCKSDB_SST_PROPS CREATE TEMPORARY TABLE `ROCKSDB_SST_PROPS` (
1212
`INDEX_PARTITIONS` int NOT NULL DEFAULT '0',
1313
`TOP_LEVEL_INDEX_SIZE` bigint NOT NULL DEFAULT '0',
1414
`FILTER_BLOCK_SIZE` bigint NOT NULL DEFAULT '0',
15-
`COMPRESSION_ALGO` varchar(193) NOT NULL DEFAULT '',
15+
`COMPRESSION_ALGO` varchar(193) DEFAULT NULL,
1616
`CREATION_TIME` bigint NOT NULL DEFAULT '0',
1717
`FILE_CREATION_TIME` bigint NOT NULL DEFAULT '0',
1818
`OLDEST_KEY_TIME` bigint NOT NULL DEFAULT '0',
19-
`FILTER_POLICY` varchar(193) NOT NULL DEFAULT '',
20-
`COMPRESSION_OPTIONS` varchar(193) NOT NULL DEFAULT ''
19+
`FILTER_POLICY` varchar(193) DEFAULT NULL,
20+
`COMPRESSION_OPTIONS` varchar(193) DEFAULT NULL
2121
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3
2222
uninstall plugin rocksdb;
2323
select * from information_schema.rocksdb_sst_props;

storage/rocksdb/rdb_i_s.cc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,16 +1670,18 @@ static ST_FIELD_INFO rdb_i_s_sst_props_fields_info[] = {
16701670
MYSQL_TYPE_LONGLONG, 0),
16711671
ROCKSDB_FIELD_INFO("FILTER_BLOCK_SIZE", sizeof(int64_t),
16721672
MYSQL_TYPE_LONGLONG, 0),
1673-
ROCKSDB_FIELD_INFO("COMPRESSION_ALGO", NAME_LEN + 1, MYSQL_TYPE_STRING, 0),
1673+
ROCKSDB_FIELD_INFO("COMPRESSION_ALGO", NAME_LEN + 1, MYSQL_TYPE_STRING,
1674+
MY_I_S_MAYBE_NULL),
16741675
ROCKSDB_FIELD_INFO("CREATION_TIME", sizeof(int64_t), MYSQL_TYPE_LONGLONG,
16751676
0),
16761677
ROCKSDB_FIELD_INFO("FILE_CREATION_TIME", sizeof(int64_t),
16771678
MYSQL_TYPE_LONGLONG, 0),
16781679
ROCKSDB_FIELD_INFO("OLDEST_KEY_TIME", sizeof(int64_t), MYSQL_TYPE_LONGLONG,
16791680
0),
1680-
ROCKSDB_FIELD_INFO("FILTER_POLICY", NAME_LEN + 1, MYSQL_TYPE_STRING, 0),
1681+
ROCKSDB_FIELD_INFO("FILTER_POLICY", NAME_LEN + 1, MYSQL_TYPE_STRING,
1682+
MY_I_S_MAYBE_NULL),
16811683
ROCKSDB_FIELD_INFO("COMPRESSION_OPTIONS", NAME_LEN + 1, MYSQL_TYPE_STRING,
1682-
0),
1684+
MY_I_S_MAYBE_NULL),
16831685
ROCKSDB_FIELD_INFO_END};
16841686

16851687
static int rdb_i_s_sst_props_fill_table(
@@ -1756,6 +1758,7 @@ static int rdb_i_s_sst_props_fill_table(
17561758
if (props.second->compression_name.empty()) {
17571759
field[RDB_SST_PROPS_FIELD::COMPRESSION_ALGO]->set_null();
17581760
} else {
1761+
field[RDB_SST_PROPS_FIELD::COMPRESSION_ALGO]->set_notnull();
17591762
field[RDB_SST_PROPS_FIELD::COMPRESSION_ALGO]->store(
17601763
props.second->compression_name.c_str(),
17611764
props.second->compression_name.size(), system_charset_info);
@@ -1769,13 +1772,15 @@ static int rdb_i_s_sst_props_fill_table(
17691772
if (props.second->filter_policy_name.empty()) {
17701773
field[RDB_SST_PROPS_FIELD::FILTER_POLICY]->set_null();
17711774
} else {
1775+
field[RDB_SST_PROPS_FIELD::FILTER_POLICY]->set_notnull();
17721776
field[RDB_SST_PROPS_FIELD::FILTER_POLICY]->store(
17731777
props.second->filter_policy_name.c_str(),
17741778
props.second->filter_policy_name.size(), system_charset_info);
17751779
}
17761780
if (props.second->compression_options.empty()) {
17771781
field[RDB_SST_PROPS_FIELD::COMPRESSION_OPTIONS]->set_null();
17781782
} else {
1783+
field[RDB_SST_PROPS_FIELD::COMPRESSION_OPTIONS]->set_notnull();
17791784
field[RDB_SST_PROPS_FIELD::COMPRESSION_OPTIONS]->store(
17801785
props.second->compression_options.c_str(),
17811786
props.second->compression_options.size(), system_charset_info);

0 commit comments

Comments
 (0)