From 075e6a0205574a221bedcf5600e611c50bd0c0ae Mon Sep 17 00:00:00 2001 From: VirgilZhu <94546750@qq.com> Date: Mon, 9 Dec 2024 04:27:48 +0800 Subject: [PATCH] fields v2.1: add possibly feasible ktypevalue/ktypedeletion parse in FindKeysByFields function --- 1 | Bin 41232 -> 0 bytes db/fields.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 4 deletions(-) delete mode 100755 1 diff --git a/1 b/1 deleted file mode 100755 index 13d81a89701bea8e4d5e9f9fa3ffdf997e97c7fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41232 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 >ojE$^rmiqtHtgZ z(dO$B7!_vjh<&LFi<)Apa%pC9W=F<`U{e!qo9)Ut5j4$)nbY+lRPHp&it=R>TxS$}>+-UpQ+du1=^Mt$ z5roloE1=VIX&rdc?r(7@ZZ@>pCr`XyaShK|PR0_3(D^yj2!|O6)qXh@$)Us#t<%eKba$KrGz~*jpQVfPK|~hK0hVtj@pRw{<;RU?gAQkoWWFZe03~d znWuB`?U`_H^`k#xvvRC)c5H14M?yF`RUvk-2HfHO73RgrR{8jb{E&C0dKHA7I^v$F zkTU>O(2o@5$Vt>f&x;FILVXa+IdZ5OONe&|rOx3##|JQe85RAiCC5i-K_Rkrbkx+ZoVL#~s#f)8&tRU*%;h@3q- z43}e9x6G<;+>EJIQ)zpqDlEv}D2=u}}-1a+rAbg5$|}5b>y8d9r<48I9Pvy))kJ z;r7PbeNjs1J|?0=_#6kf6r4P%t4^|!xi}8!GoDXWdLk~C6z7@O=b1c9B=Tb?sP+IV zoMzF@nKL=H+d~^QOSrZBm3=FONk{=d>*?NJbj%UV5iFpqy)s#caAsS0X>{)%C^^<9 z@96|jem;t0lbQ>WJRuWn=f{)kgphZX5*{kU(HQUFDr%58LhYrVwJakd(L6!Kt z9z7&6mAn7DD{W?PRGw*_<|uX4Nh@bl+4lXPpBhzIsZo8r^505TIX>7kL3APuWjyk- zJkOO)U=xmKMOlxnv-J&66Bo{w(|bv6==tJ!{9~g&2}m?3CzZ5)Jg6%`h7y%ffiT zHaisSXvK(5pKeZ|&qwecD%VnGKMJ3X2+2or87m03Jm_P#104JCqw?Q9a-h>E92dbS zCA+cRC(9P0bjTCLOqY?*57;t8SN?nMLI%l^9oQ?Wn8#e)ibR3qG<~oF<3Z2=)rOzS zkcBk2E!y@U-OXDYdUB!c4n&^f$sXX^_4Z~=kGEsqN!+7TIyx=1_fhn@3I`wMFl;ba zDi!wgDW@}?YFkculRk&bY2`Af3y|-sgJiYm;S+(@P;)pKG2>C3#kb?U(W%THCKw!{ zq=!SSUe*HUY$C%6^+N~@ch)ll`Q{NB}Pf}@(7wx zFy5{xOR*T>@uRC?g4P~t2~q{QYio%cC47)og4>eCQ55MW7HTp|;-O9y>BC##j`HV1 zNTC+N#qrpj0w7COpX5?9^gS96wuT{I2}IUplwcKV#V5n~ z^K$?0KlJgpJpAR0pyFZbMnine)pZfC^TNmX_&c$>ex=mcP(FTWRngx&(TGW&`b(s~ zhVrpS&5rLXy002fef|AR4SjC*jQW>={t3QQtM%94JJxWV)E^&wSk4f=c}RnhhJ_nbA<-)ja7Utasu$Fu1>!@9oyp0I{q{WYJ4*P=ds z2U(Z(_mDMQubSmCCOx(Of;PHwLt~=ruN4LjeWI|}e!Bm+OZ{mgP=C)_L;byMs*jJb zTkY%mcLPUFX!-c4r@92n$2$e7bhQe&xf6fR`aY?rVULp;_a5=aeV+RL!l0q%*J5;8 z!}Xr}JB6Sj(VdsBr{T{*bn36aKcnF-`UBP?MAy?YpYYVz-`~;@U!!te-ud^8)Ys#0 zR0+F4($9H${pSS`Nq=2`Qj;tyTAp4RIpz)_!cef_%#3rylxzjv(e)W5pEhQ+AttZ#iEWr5q1YR3@Bmzp72@Ef7e;9aoj(o^HP+?U#D+#S0WdK1Od*wKyl#zGpGvCa^%2O69}g tN28c6{_GFD)?L+5|8}-3xCEakcV4<(jXMN4+3NRGV8k`vQ^8X-{ttk`dM^L~ diff --git a/db/fields.cpp b/db/fields.cpp index f90a715..2d76a6c 100644 --- a/db/fields.cpp +++ b/db/fields.cpp @@ -1,9 +1,9 @@ -#include "fields.h" -#include "util/coding.h" - #include #include +#include "fields.h" +#include "util/coding.h" +#include "dbformat.h" namespace leveldb { @@ -163,24 +163,75 @@ std::string& Fields::operator[](const std::string& field_name) { } /* 通过若干个字段查询 Key */ +//std::vector Fields::FindKeysByFields(leveldb::DB* db, const FieldArray& fields) { +// Fields to_fields = Fields(fields); +// to_fields.Fields::SortFields(); +// FieldArray search_fields_ = to_fields.fields_; +// +// std::vector find_keys; +// +// Iterator* it = db->NewIterator(leveldb::ReadOptions()); +// for (it->SeekToFirst(); it->Valid(); it->Next()) { +// +// Slice iter_key_slice = it->key(); +// Slice iter_key_for_parse; +// if (!GetLengthPrefixedSlice(&iter_key_slice, &iter_key_for_parse)) { +// continue; +// } +// +// std::string iter_key = iter_key_for_parse.ToString(); +// if (std::find(find_keys.begin(), find_keys.end(), iter_key) != find_keys.end()){ +// continue; +// } +// +// FieldArray iter_fields_ = Fields::ParseValue(it->value().ToString()).fields_; +// if (iter_fields_ == search_fields_ || +// std::includes(iter_fields_.begin(), iter_fields_.end(), +// search_fields_.begin(), search_fields_.end())) { +// find_keys.emplace_back(iter_key); +// } +// } +// +// assert(it->status().ok()); +// delete it; +// +// return find_keys; +//} + std::vector Fields::FindKeysByFields(leveldb::DB* db, const FieldArray& fields) { Fields to_fields = Fields(fields); to_fields.Fields::SortFields(); FieldArray search_fields_ = to_fields.fields_; std::vector find_keys; + std::vector deleted_keys; Iterator* it = db->NewIterator(leveldb::ReadOptions()); for (it->SeekToFirst(); it->Valid(); it->Next()) { Slice iter_key_slice = it->key(); + const char* p = iter_key_slice.data(); + const char* limit = p + iter_key_slice.size(); +// const char* limit = p + 5; + + uint32_t key_length; + const char* key_ptr = GetVarint32Ptr(p, limit, &key_length); + + iter_key_slice = Slice(p, iter_key_slice.size() - 8); Slice iter_key_for_parse; if (!GetLengthPrefixedSlice(&iter_key_slice, &iter_key_for_parse)) { continue; } std::string iter_key = iter_key_for_parse.ToString(); - if (std::find(find_keys.begin(), find_keys.end(), iter_key) != find_keys.end()){ + if (std::find(deleted_keys.begin(), deleted_keys.end(), iter_key) != deleted_keys.end() + || std::find(find_keys.begin(), find_keys.end(), iter_key) != find_keys.end()) { + continue; + } + + const uint64_t tag = DecodeFixed64(key_ptr + key_length - 8); + if ((tag & 0xff) == kTypeDeletion) { + deleted_keys.emplace_back(iter_key); continue; }