1616#include " src/base_value_format.h"
1717#include " src/base_meta_value_format.h"
1818#include " src/lists_meta_value_format.h"
19+ #include " src/pika_stream_meta_value.h"
1920#include " src/strings_value_format.h"
2021#include " src/zsets_data_key_format.h"
2122#include " src/debug.h"
@@ -36,11 +37,12 @@ class BaseMetaFilter : public rocksdb::CompactionFilter {
3637 * The field designs of the remaining zset,set,hash and stream in meta-value
3738 * are the same, so the same filtering strategy is used
3839 */
40+ ParsedBaseKey parsed_key (key);
3941 auto type = static_cast <enum DataType>(static_cast <uint8_t >(value[0 ]));
4042 DEBUG (" ==========================START==========================" );
4143 if (type == DataType::kStrings ) {
4244 ParsedStringsValue parsed_strings_value (value);
43- DEBUG (" [StringsFilter ] key: {} , value = {} , timestamp: {} , cur_time: {} " , key .ToString ().c_str (),
45+ DEBUG (" [string type ] key: %s , value = %s , timestamp: %llu , cur_time: %llu " , parsed_key. Key () .ToString ().c_str (),
4446 parsed_strings_value.UserValue ().ToString ().c_str (), parsed_strings_value.Etime (), cur_time);
4547 if (parsed_strings_value.Etime () != 0 && parsed_strings_value.Etime () < cur_time) {
4648 DEBUG (" Drop[Stale]" );
@@ -49,9 +51,17 @@ class BaseMetaFilter : public rocksdb::CompactionFilter {
4951 DEBUG (" Reserve" );
5052 return false ;
5153 }
54+ } else if (type == DataType::kStreams ) {
55+ ParsedStreamMetaValue parsed_stream_meta_value (value);
56+ DEBUG (" [stream meta type], key: %s, entries_added = %llu, first_id: %s, last_id: %s, version: %llu" ,
57+ parsed_key.Key ().ToString ().c_str (), parsed_stream_meta_value.entries_added (),
58+ parsed_stream_meta_value.first_id ().ToString ().c_str (),
59+ parsed_stream_meta_value.last_id ().ToString ().c_str (),
60+ parsed_stream_meta_value.version ());
61+ return false ;
5262 } else if (type == DataType::kLists ) {
5363 ParsedListsMetaValue parsed_lists_meta_value (value);
54- DEBUG (" [ListMetaFilter ], key: {} , count = {} , timestamp: {} , cur_time: {} , version: {} " , key .ToString ().c_str (),
64+ DEBUG (" [list meta type ], key: %s , count = %d , timestamp: %llu , cur_time: %llu , version: %llu " , parsed_key. Key () .ToString ().c_str (),
5565 parsed_lists_meta_value.Count (), parsed_lists_meta_value.Etime (), cur_time,
5666 parsed_lists_meta_value.Version ());
5767
@@ -68,8 +78,9 @@ class BaseMetaFilter : public rocksdb::CompactionFilter {
6878 return false ;
6979 } else {
7080 ParsedBaseMetaValue parsed_base_meta_value (value);
71- DEBUG (" [MetaFilter] key: {}, count = {}, timestamp: {}, cur_time: {}, version: {}" , key.ToString ().c_str (),
72- parsed_base_meta_value.Count (), parsed_base_meta_value.Etime (), cur_time, parsed_base_meta_value.Version ());
81+ DEBUG (" [%s meta type] key: %s, count = %d, timestamp: %llu, cur_time: %llu, version: %llu" ,
82+ DataTypeToString (type), parsed_key.Key ().ToString ().c_str (), parsed_base_meta_value.Count (),
83+ parsed_base_meta_value.Etime (), cur_time, parsed_base_meta_value.Version ());
7384
7485 if (parsed_base_meta_value.Etime () != 0 && parsed_base_meta_value.Etime () < cur_time &&
7586 parsed_base_meta_value.Version () < cur_time) {
@@ -143,7 +154,12 @@ class BaseDataFilter : public rocksdb::CompactionFilter {
143154 auto type = static_cast <enum DataType>(static_cast <uint8_t >(meta_value[0 ]));
144155 if (type != type_) {
145156 return true ;
146- } else if (type == DataType::kHashes || type == DataType::kSets || type == DataType::kStreams || type == DataType::kZSets ) {
157+ } else if (type == DataType::kStreams ) {
158+ ParsedStreamMetaValue parsed_stream_meta_value (meta_value);
159+ meta_not_found_ = false ;
160+ cur_meta_version_ = parsed_stream_meta_value.version ();
161+ cur_meta_etime_ = 0 ; // stream do not support ttl
162+ } else if (type == DataType::kHashes || type == DataType::kSets || type == DataType::kZSets ) {
147163 ParsedBaseMetaValue parsed_base_meta_value (&meta_value);
148164 meta_not_found_ = false ;
149165 cur_meta_version_ = parsed_base_meta_value.Version ();
0 commit comments