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

Method Next

stdlib/sql.go:729–890  ·  view source on GitHub ↗
(dest []driver.Value)

Source from the content-addressed store, hash-verified

727}
728
729func (r *Rows) Next(dest []driver.Value) error {
730 m := r.conn.conn.TypeMap()
731 fieldDescriptions := r.rows.FieldDescriptions()
732
733 if r.valueFuncs == nil {
734 r.valueFuncs = make([]rowValueFunc, len(fieldDescriptions))
735
736 for i, fd := range fieldDescriptions {
737 dataTypeOID := fd.DataTypeOID
738 format := fd.Format
739
740 switch fd.DataTypeOID {
741 case pgtype.BoolOID:
742 var d bool
743 scanPlan := m.PlanScan(dataTypeOID, format, &d)
744 r.valueFuncs[i] = func(src []byte) (driver.Value, error) {
745 err := scanPlan.Scan(src, &d)
746 return d, err
747 }
748 case pgtype.ByteaOID:
749 var d []byte
750 scanPlan := m.PlanScan(dataTypeOID, format, &d)
751 r.valueFuncs[i] = func(src []byte) (driver.Value, error) {
752 err := scanPlan.Scan(src, &d)
753 return d, err
754 }
755 case pgtype.CIDOID, pgtype.OIDOID, pgtype.XIDOID:
756 var d pgtype.Uint32
757 scanPlan := m.PlanScan(dataTypeOID, format, &d)
758 r.valueFuncs[i] = func(src []byte) (driver.Value, error) {
759 err := scanPlan.Scan(src, &d)
760 if err != nil {
761 return nil, err
762 }
763 return d.Value()
764 }
765 case pgtype.DateOID:
766 var d pgtype.Date
767 scanPlan := m.PlanScan(dataTypeOID, format, &d)
768 r.valueFuncs[i] = func(src []byte) (driver.Value, error) {
769 err := scanPlan.Scan(src, &d)
770 if err != nil {
771 return nil, err
772 }
773 return d.Value()
774 }
775 case pgtype.Float4OID:
776 var d float32
777 scanPlan := m.PlanScan(dataTypeOID, format, &d)
778 r.valueFuncs[i] = func(src []byte) (driver.Value, error) {
779 err := scanPlan.Scan(src, &d)
780 return float64(d), err
781 }
782 case pgtype.Float8OID:
783 var d float64
784 scanPlan := m.PlanScan(dataTypeOID, format, &d)
785 r.valueFuncs[i] = func(src []byte) (driver.Value, error) {
786 err := scanPlan.Scan(src, &d)

Callers

nothing calls this directly

Implementers 3

baseRowsrows.go
errRowspgxpool/rows.go
poolRowspgxpool/rows.go

Calls 8

TypeMapMethod · 0.80
FieldDescriptionsMethod · 0.65
PlanScanMethod · 0.65
ScanMethod · 0.65
NextMethod · 0.65
ErrMethod · 0.65
RawValuesMethod · 0.65
ValueMethod · 0.45

Tested by

no test coverage detected