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

Method Scan

pgtype/composite.go:132–164  ·  view source on GitHub ↗
(src []byte, target any)

Source from the content-addressed store, hash-verified

130}
131
132func (plan *scanPlanBinaryCompositeToCompositeIndexScanner) Scan(src []byte, target any) error {
133 targetScanner := (target).(CompositeIndexScanner)
134
135 if src == nil {
136 return targetScanner.ScanNull()
137 }
138
139 scanner := NewCompositeBinaryScanner(plan.m, src)
140 for i, field := range plan.cc.Fields {
141 if scanner.Next() {
142 fieldTarget := targetScanner.ScanIndex(i)
143 if fieldTarget != nil {
144 fieldPlan := plan.m.PlanScan(field.Type.OID, BinaryFormatCode, fieldTarget)
145 if fieldPlan == nil {
146 return fmt.Errorf("unable to encode %v into OID %d in binary format", field, field.Type.OID)
147 }
148
149 err := fieldPlan.Scan(scanner.Bytes(), fieldTarget)
150 if err != nil {
151 return err
152 }
153 }
154 } else {
155 return errors.New("read past end of composite")
156 }
157 }
158
159 if err := scanner.Err(); err != nil {
160 return err
161 }
162
163 return nil
164}
165
166type scanPlanTextCompositeToCompositeIndexScanner struct {
167 cc *CompositeCodec

Callers

nothing calls this directly

Calls 8

NextMethod · 0.95
BytesMethod · 0.95
ErrMethod · 0.95
ScanNullMethod · 0.65
ScanIndexMethod · 0.65
PlanScanMethod · 0.65
ScanMethod · 0.65

Tested by

no test coverage detected