MCPcopy Create free account
hub / github.com/auxten/postgresql-parser / nextEncoded

Method nextEncoded

pkg/util/json/encoded.go:220–251  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

218}
219
220func (e *encodedObjectIterator) nextEncoded() (
221 nextKey []byte,
222 nextJEntry jEntry,
223 nextVal []byte,
224 ok bool,
225 err error,
226) {
227 if e.idx >= e.len {
228 return nil, jEntry{}, nil, false, nil
229 }
230
231 // Recall the layout of an encoded object:
232 // [ container header ] [ all key JEntries ] [ all value JEntries ] [ all key data ] [ all value data ].
233 nextKeyJEntry, err := getJEntryAt(e.data, containerHeaderLen+e.idx*jEntryLen, e.curKeyIdx)
234 if err != nil {
235 return nil, jEntry{}, nil, false, err
236 }
237 nextKeyData := e.data[e.keyOffset+e.curKeyIdx : e.keyOffset+e.curKeyIdx+int(nextKeyJEntry.length)]
238
239 offsetFromBeginningOfData := e.curValueIdx + e.valueOffset - e.keyOffset
240
241 nextValueJEntry, err := getJEntryAt(e.data, containerHeaderLen+(e.idx+e.len)*jEntryLen, offsetFromBeginningOfData)
242 if err != nil {
243 return nil, jEntry{}, nil, false, err
244 }
245 nextValueData := e.data[e.valueOffset+e.curValueIdx : e.valueOffset+e.curValueIdx+int(nextValueJEntry.length)]
246
247 e.idx++
248 e.curKeyIdx += int(nextKeyJEntry.length)
249 e.curValueIdx += int(nextValueJEntry.length)
250 return nextKeyData, nextValueJEntry, nextValueData, true, nil
251}
252
253// iterObject iterates through all the keys and values of an encoded object
254// without requiring decoding of all of them.

Callers

nothing calls this directly

Calls 1

getJEntryAtFunction · 0.85

Tested by

no test coverage detected