@ -593,10 +593,12 @@ static bool SaveValue(void* arg, const char* entry) {
Slice v = GetLengthPrefixedSlice ( key_ptr + key_length ) ;
Slice v = GetLengthPrefixedSlice ( key_ptr + key_length ) ;
* ( s - > status ) = Status : : OK ( ) ;
* ( s - > status ) = Status : : OK ( ) ;
if ( * ( s - > merge_in_progress ) ) {
if ( * ( s - > merge_in_progress ) ) {
* ( s - > status ) = MergeHelper : : TimedFullMerge (
if ( s - > value ! = nullptr ) {
merge_operator , s - > key - > user_key ( ) , & v ,
* ( s - > status ) = MergeHelper : : TimedFullMerge (
merge_context - > GetOperands ( ) , s - > value , s - > logger , s - > statistics ,
merge_operator , s - > key - > user_key ( ) , & v ,
s - > env_ , nullptr /* result_operand */ , true ) ;
merge_context - > GetOperands ( ) , s - > value , s - > logger ,
s - > statistics , s - > env_ , nullptr /* result_operand */ , true ) ;
}
} else if ( s - > value ! = nullptr ) {
} else if ( s - > value ! = nullptr ) {
s - > value - > assign ( v . data ( ) , v . size ( ) ) ;
s - > value - > assign ( v . data ( ) , v . size ( ) ) ;
}
}
@ -610,10 +612,12 @@ static bool SaveValue(void* arg, const char* entry) {
case kTypeSingleDeletion :
case kTypeSingleDeletion :
case kTypeRangeDeletion : {
case kTypeRangeDeletion : {
if ( * ( s - > merge_in_progress ) ) {
if ( * ( s - > merge_in_progress ) ) {
* ( s - > status ) = MergeHelper : : TimedFullMerge (
if ( s - > value ! = nullptr ) {
merge_operator , s - > key - > user_key ( ) , nullptr ,
* ( s - > status ) = MergeHelper : : TimedFullMerge (
merge_context - > GetOperands ( ) , s - > value , s - > logger , s - > statistics ,
merge_operator , s - > key - > user_key ( ) , nullptr ,
s - > env_ , nullptr /* result_operand */ , true ) ;
merge_context - > GetOperands ( ) , s - > value , s - > logger ,
s - > statistics , s - > env_ , nullptr /* result_operand */ , true ) ;
}
} else {
} else {
* ( s - > status ) = Status : : NotFound ( ) ;
* ( s - > status ) = Status : : NotFound ( ) ;
}
}