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

Function jsonTypeFromRootBuffer

pkg/util/json/encoded.go:87–118  ·  view source on GitHub ↗
(v []byte)

Source from the content-addressed store, hash-verified

85}
86
87func jsonTypeFromRootBuffer(v []byte) ([]byte, Type, error) {
88 // Root buffers always have a container header.
89 containerHeader, err := getUint32At(v, 0)
90 if err != nil {
91 return v, 0, err
92 }
93 typeTag := containerHeader & containerHeaderTypeMask
94 switch typeTag {
95 case arrayContainerTag:
96 return v, ArrayJSONType, nil
97 case objectContainerTag:
98 return v, ObjectJSONType, nil
99 case scalarContainerTag:
100 entry, err := getUint32At(v, containerHeaderLen)
101 if err != nil {
102 return v, 0, err
103 }
104 switch entry & jEntryTypeMask {
105 case nullTag:
106 return v[containerHeaderLen+jEntryLen:], NullJSONType, nil
107 case trueTag:
108 return v[containerHeaderLen+jEntryLen:], TrueJSONType, nil
109 case falseTag:
110 return v[containerHeaderLen+jEntryLen:], FalseJSONType, nil
111 case numberTag:
112 return v[containerHeaderLen+jEntryLen:], NumberJSONType, nil
113 case stringTag:
114 return v[containerHeaderLen+jEntryLen:], StringJSONType, nil
115 }
116 }
117 return nil, 0, errors.AssertionFailedf("unknown json type %d", errors.Safe(typeTag))
118}
119
120func newEncoded(e jEntry, v []byte) (JSON, error) {
121 var typ Type

Callers 1

newEncodedFromRootFunction · 0.85

Calls 1

getUint32AtFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…