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

Function decodeLargeNumber

pkg/util/encoding/decimal.go:460–493  ·  view source on GitHub ↗
(
	negative bool, buf []byte, tmp []byte,
)

Source from the content-addressed store, hash-verified

458}
459
460func decodeLargeNumber(
461 negative bool, buf []byte, tmp []byte,
462) (e int, m []byte, rest []byte, newTmp []byte, err error) {
463 var ex uint64
464 var r []byte
465 if negative {
466 r, ex, err = DecodeUvarintDescending(buf[1:])
467 } else {
468 r, ex, err = DecodeUvarintAscending(buf[1:])
469 }
470 if err != nil {
471 return 0, nil, nil, nil, err
472 }
473
474 idx, err := findDecimalTerminator(r)
475 if err != nil {
476 return 0, nil, nil, nil, err
477 }
478
479 m = r[:idx]
480 if negative {
481 var mCpy []byte
482 if k := len(m); k <= len(tmp) {
483 mCpy = tmp[:k]
484 tmp = tmp[k:]
485 } else {
486 mCpy = make([]byte, k)
487 }
488 copy(mCpy, m)
489 onesComplement(mCpy)
490 m = mCpy
491 }
492 return int(ex), m, r[idx+1:], tmp, nil
493}
494
495// EncodeNonsortingDecimal returns the resulting byte slice with the
496// encoded decimal appended to b. The encoding is limited compared to

Callers 1

decodeDecimalFunction · 0.85

Calls 4

DecodeUvarintDescendingFunction · 0.85
DecodeUvarintAscendingFunction · 0.85
findDecimalTerminatorFunction · 0.85
onesComplementFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…