MCPcopy
hub / github.com/jackc/pgx / decodeText

Method decodeText

pgtype/multirange.go:256–285  ·  view source on GitHub ↗
(m *Map, multirangeOID uint32, src []byte, multirange MultirangeSetter)

Source from the content-addressed store, hash-verified

254}
255
256func (c *MultirangeCodec) decodeText(m *Map, multirangeOID uint32, src []byte, multirange MultirangeSetter) error {
257 elements, err := parseUntypedTextMultirange(src)
258 if err != nil {
259 return err
260 }
261
262 err = multirange.SetLen(len(elements))
263 if err != nil {
264 return err
265 }
266
267 if len(elements) == 0 {
268 return nil
269 }
270
271 elementScanPlan := c.ElementType.Codec.PlanScan(m, c.ElementType.OID, TextFormatCode, multirange.ScanIndex(0))
272 if elementScanPlan == nil {
273 elementScanPlan = m.PlanScan(c.ElementType.OID, TextFormatCode, multirange.ScanIndex(0))
274 }
275
276 for i, s := range elements {
277 elem := multirange.ScanIndex(i)
278 err = elementScanPlan.Scan([]byte(s), elem)
279 if err != nil {
280 return err
281 }
282 }
283
284 return nil
285}
286
287type scanPlanMultirangeCodec struct {
288 multirangeCodec *MultirangeCodec

Callers 1

ScanMethod · 0.45

Calls 5

SetLenMethod · 0.65
PlanScanMethod · 0.65
ScanIndexMethod · 0.65
ScanMethod · 0.65

Tested by

no test coverage detected