MCPcopy Create free account
hub / github.com/apple/foundationdb / getPrefix

Method getPrefix

fdbserver/KeyValueStoreSQLite.actor.cpp:1143–1167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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;

Callers 1

actionMethod · 0.80

Calls 10

moveToFunction · 0.85
moveNextFunction · 0.85
getEncodedKVFragmentSizeFunction · 0.85
getEncodedSizeFunction · 0.85
decodeKVPrefixFunction · 0.85
getMethod · 0.65
ValueEnum · 0.50
sizeMethod · 0.45
peekMethod · 0.45
getNextMethod · 0.45

Tested by

no test coverage detected