MCPcopy Create free account
hub / github.com/dolthub/doltgresql / nextEncoded

Method nextEncoded

postgres/parser/json/encoded.go:234–265  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

232}
233
234func (e *encodedObjectIterator) nextEncoded() (
235 nextKey []byte,
236 nextJEntry jEntry,
237 nextVal []byte,
238 ok bool,
239 err error,
240) {
241 if e.idx >= e.len {
242 return nil, jEntry{}, nil, false, nil
243 }
244
245 // Recall the layout of an encoded object:
246 // [ container header ] [ all key JEntries ] [ all value JEntries ] [ all key data ] [ all value data ].
247 nextKeyJEntry, err := getJEntryAt(e.data, containerHeaderLen+e.idx*jEntryLen, e.curKeyIdx)
248 if err != nil {
249 return nil, jEntry{}, nil, false, err
250 }
251 nextKeyData := e.data[e.keyOffset+e.curKeyIdx : e.keyOffset+e.curKeyIdx+int(nextKeyJEntry.length)]
252
253 offsetFromBeginningOfData := e.curValueIdx + e.valueOffset - e.keyOffset
254
255 nextValueJEntry, err := getJEntryAt(e.data, containerHeaderLen+(e.idx+e.len)*jEntryLen, offsetFromBeginningOfData)
256 if err != nil {
257 return nil, jEntry{}, nil, false, err
258 }
259 nextValueData := e.data[e.valueOffset+e.curValueIdx : e.valueOffset+e.curValueIdx+int(nextValueJEntry.length)]
260
261 e.idx++
262 e.curKeyIdx += int(nextKeyJEntry.length)
263 e.curValueIdx += int(nextValueJEntry.length)
264 return nextKeyData, nextValueJEntry, nextValueData, true, nil
265}
266
267// iterObject iterates through all the keys and values of an encoded object
268// without requiring decoding of all of them.

Callers

nothing calls this directly

Calls 1

getJEntryAtFunction · 0.85

Tested by

no test coverage detected