MCPcopy Create free account
hub / github.com/pingcap/tidb / valEntryGet

Method valEntryGet

pkg/types/json_binary.go:306–329  ·  view source on GitHub ↗
(valEntryOff int)

Source from the content-addressed store, hash-verified

304}
305
306func (bj BinaryJSON) valEntryGet(valEntryOff int) BinaryJSON {
307 tpCode := bj.Value[valEntryOff]
308 valOff := jsonEndian.Uint32(bj.Value[valEntryOff+valTypeSize:])
309 switch tpCode {
310 case JSONTypeCodeLiteral:
311 return BinaryJSON{TypeCode: JSONTypeCodeLiteral, Value: bj.Value[valEntryOff+valTypeSize : valEntryOff+valTypeSize+1]}
312 case JSONTypeCodeUint64, JSONTypeCodeInt64, JSONTypeCodeFloat64:
313 return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+8]}
314 case JSONTypeCodeString:
315 strLen, lenLen := binary.Uvarint(bj.Value[valOff:])
316 totalLen := uint32(lenLen) + uint32(strLen)
317 return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+totalLen]}
318 case JSONTypeCodeOpaque:
319 strLen, lenLen := binary.Uvarint(bj.Value[valOff+1:])
320 totalLen := 1 + uint32(lenLen) + uint32(strLen)
321 return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+totalLen]}
322 case JSONTypeCodeDate, JSONTypeCodeDatetime, JSONTypeCodeTimestamp:
323 return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+8]}
324 case JSONTypeCodeDuration:
325 return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+12]}
326 }
327 dataSize := jsonEndian.Uint32(bj.Value[valOff+dataSizeOff:])
328 return BinaryJSON{TypeCode: tpCode, Value: bj.Value[valOff : valOff+dataSize]}
329}
330
331func (bj BinaryJSON) marshalFloat64To(buf []byte) ([]byte, error) {
332 // NOTE: copied from Go standard library.

Callers 3

ArrayGetElemMethod · 0.95
objectGetValMethod · 0.95
rebuildToMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected