| 1141 | return Optional<Value>(); |
| 1142 | } |
| 1143 | Optional<Value> getPrefix(KeyRef key, int maxLength) { |
| 1144 | if (db.fragment_values) { |
| 1145 | int r = moveTo(key); |
| 1146 | if (r < 0) |
| 1147 | moveNext(); |
| 1148 | Arena m; |
| 1149 | DefragmentingReader i(*this, m, getEncodedKVFragmentSize(key.size(), maxLength)); |
| 1150 | if (i.peek() == key) { |
| 1151 | Optional<KeyValueRef> kv = i.getNext(); |
| 1152 | kvBytesRead += key.size() + kv.get().value.size(); |
| 1153 | return Value(kv.get().value, m); |
| 1154 | } |
| 1155 | } else if (!moveTo(key)) { |
| 1156 | if (maxLength == 0) { |
| 1157 | return Value(); |
| 1158 | } |
| 1159 | Value result; |
| 1160 | int maxEncodedSize = getEncodedSize(key.size(), maxLength); |
| 1161 | KeyValueRef kv = decodeKVPrefix(getEncodedRowPrefix(result.arena(), maxEncodedSize), maxLength); |
| 1162 | ((ValueRef&)result) = kv.value; |
| 1163 | kvBytesRead += key.size() + result.size(); |
| 1164 | return result; |
| 1165 | } |
| 1166 | return Optional<Value>(); |
| 1167 | } |
| 1168 | RangeResult getRange(KeyRangeRef keys, int rowLimit, int byteLimit) { |
| 1169 | RangeResult result; |
| 1170 | int accumulatedBytes = 0; |
no test coverage detected