MCPcopy Create free account
hub / github.com/cockroachdb/cockroachdb-parser / encodeTSNode

Method encodeTSNode

pkg/util/tsearch/encoding.go:244–286  ·  view source on GitHub ↗
(node *tsNode, appendTo []byte)

Source from the content-addressed store, hash-verified

242)
243
244func (c *tsNodeCodec) encodeTSNode(node *tsNode, appendTo []byte) ([]byte, error) {
245 c.nTokens++
246 if node.op == invalid {
247 appendTo = append(appendTo, byte(tsNodeTypeVal))
248 if len(node.term.positions) > 0 {
249 weight := byte(node.term.positions[0].weight & (^weightStar))
250 appendTo = append(appendTo, weight)
251 prefix := byte(node.term.positions[0].weight >> 4)
252 appendTo = append(appendTo, prefix)
253 } else {
254 appendTo = append(appendTo, byte(0), byte(0))
255 }
256 if len(node.term.lexeme) > maxTSVectorLexemeLen {
257 return nil, pgerror.Newf(pgcode.ProgramLimitExceeded,
258 "tsvector lexeme of size %d too large (maximum is %d)", len(node.term.lexeme),
259 maxTSVectorLexemeLen)
260 }
261 appendTo = encoding.EncodeUntaggedBytesValue(appendTo, encoding.UnsafeConvertStringToBytes(node.term.lexeme))
262 return appendTo, nil
263 }
264 appendTo = append(appendTo, byte(tsNodeTypeOper))
265 appendTo = append(appendTo, node.op.pgwireEncoding())
266 if node.op == followedby {
267 if node.followedN > maxTSVectorFollowedBy {
268 return nil, pgerror.Newf(pgcode.ProgramLimitExceeded,
269 "tsvector followed by argument %d too large (maximum is %d)", node.followedN,
270 maxTSVectorLexemeLen)
271 }
272 appendTo = encoding.EncodeUint16Ascending(appendTo, node.followedN)
273 }
274 var err error
275 appendTo, err = c.encodeTSNode(node.l, appendTo)
276 if err != nil {
277 return nil, err
278 }
279 if node.r != nil {
280 appendTo, err = c.encodeTSNode(node.r, appendTo)
281 if err != nil {
282 return nil, err
283 }
284 }
285 return appendTo, nil
286}
287
288func (c *tsNodeCodec) encodeTSNodePGBinary(node *tsNode, appendTo []byte) []byte {
289 c.nTokens++

Callers 1

EncodeTSQueryFunction · 0.95

Calls 5

NewfFunction · 0.92
EncodeUntaggedBytesValueFunction · 0.92
EncodeUint16AscendingFunction · 0.92
pgwireEncodingMethod · 0.80

Tested by

no test coverage detected