|
|
@ -341,11 +341,6 @@ bool DBIter::FindNextUserEntryInternal(bool skipping_saved_key, |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
assert(!skipping_saved_key || |
|
|
|
assert(!skipping_saved_key || |
|
|
|
CompareKeyForSkip(ikey_.user_key, saved_key_.GetUserKey()) > 0); |
|
|
|
CompareKeyForSkip(ikey_.user_key, saved_key_.GetUserKey()) > 0); |
|
|
|
if (!iter_.PrepareValue()) { |
|
|
|
|
|
|
|
assert(!iter_.status().ok()); |
|
|
|
|
|
|
|
valid_ = false; |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
num_skipped = 0; |
|
|
|
num_skipped = 0; |
|
|
|
reseek_done = false; |
|
|
|
reseek_done = false; |
|
|
|
switch (ikey_.type) { |
|
|
|
switch (ikey_.type) { |
|
|
@ -369,6 +364,11 @@ bool DBIter::FindNextUserEntryInternal(bool skipping_saved_key, |
|
|
|
case kTypeValue: |
|
|
|
case kTypeValue: |
|
|
|
case kTypeBlobIndex: |
|
|
|
case kTypeBlobIndex: |
|
|
|
case kTypeWideColumnEntity: |
|
|
|
case kTypeWideColumnEntity: |
|
|
|
|
|
|
|
if (!iter_.PrepareValue()) { |
|
|
|
|
|
|
|
assert(!iter_.status().ok()); |
|
|
|
|
|
|
|
valid_ = false; |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
if (timestamp_lb_) { |
|
|
|
if (timestamp_lb_) { |
|
|
|
saved_key_.SetInternalKey(ikey_); |
|
|
|
saved_key_.SetInternalKey(ikey_); |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -397,6 +397,11 @@ bool DBIter::FindNextUserEntryInternal(bool skipping_saved_key, |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case kTypeMerge: |
|
|
|
case kTypeMerge: |
|
|
|
|
|
|
|
if (!iter_.PrepareValue()) { |
|
|
|
|
|
|
|
assert(!iter_.status().ok()); |
|
|
|
|
|
|
|
valid_ = false; |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
saved_key_.SetUserKey( |
|
|
|
saved_key_.SetUserKey( |
|
|
|
ikey_.user_key, |
|
|
|
ikey_.user_key, |
|
|
|
!pin_thru_lifetime_ || !iter_.iter()->IsKeyPinned() /* copy */); |
|
|
|
!pin_thru_lifetime_ || !iter_.iter()->IsKeyPinned() /* copy */); |
|
|
|