Expose DataRowReader FieldDescriptions

scan-io
Jack Christensen 2014-06-20 10:46:47 -05:00
parent 772c6ca7d7
commit cc445627b0
2 changed files with 11 additions and 11 deletions

12
conn.go
View File

@ -410,8 +410,8 @@ func (c *Conn) SelectValue(sql string, arguments ...interface{}) (interface{}, e
var v interface{} var v interface{}
onDataRow := func(r *DataRowReader) error { onDataRow := func(r *DataRowReader) error {
if len(r.fields) != 1 { if len(r.FieldDescriptions) != 1 {
return UnexpectedColumnCountError{ExpectedCount: 1, ActualCount: int16(len(r.fields))} return UnexpectedColumnCountError{ExpectedCount: 1, ActualCount: int16(len(r.FieldDescriptions))}
} }
numRowsFound++ numRowsFound++
@ -559,8 +559,8 @@ func (c *Conn) SelectValues(sql string, arguments ...interface{}) ([]interface{}
values := make([]interface{}, 0, 8) values := make([]interface{}, 0, 8)
onDataRow := func(r *DataRowReader) error { onDataRow := func(r *DataRowReader) error {
if len(r.fields) != 1 { if len(r.FieldDescriptions) != 1 {
return UnexpectedColumnCountError{ExpectedCount: 1, ActualCount: int16(len(r.fields))} return UnexpectedColumnCountError{ExpectedCount: 1, ActualCount: int16(len(r.FieldDescriptions))}
} }
values = append(values, r.ReadValue()) values = append(values, r.ReadValue())
@ -1079,11 +1079,11 @@ func (c *Conn) rxParameterDescription(r *MessageReader) (parameters []Oid) {
} }
func (c *Conn) rxDataRow(r *DataRowReader) (row map[string]interface{}) { func (c *Conn) rxDataRow(r *DataRowReader) (row map[string]interface{}) {
fieldCount := len(r.fields) fieldCount := len(r.FieldDescriptions)
row = make(map[string]interface{}, fieldCount) row = make(map[string]interface{}, fieldCount)
for i := 0; i < fieldCount; i++ { for i := 0; i < fieldCount; i++ {
row[r.fields[i].Name] = r.ReadValue() row[r.FieldDescriptions[i].Name] = r.ReadValue()
} }
return return
} }

View File

@ -6,15 +6,15 @@ import (
// DataRowReader is used by SelectFunc to process incoming rows. // DataRowReader is used by SelectFunc to process incoming rows.
type DataRowReader struct { type DataRowReader struct {
mr *MessageReader mr *MessageReader
fields []FieldDescription FieldDescriptions []FieldDescription
currentFieldIdx int currentFieldIdx int
} }
func newDataRowReader(mr *MessageReader, fields []FieldDescription) (r *DataRowReader, err error) { func newDataRowReader(mr *MessageReader, fields []FieldDescription) (r *DataRowReader, err error) {
r = new(DataRowReader) r = new(DataRowReader)
r.mr = mr r.mr = mr
r.fields = fields r.FieldDescriptions = fields
fieldCount := int(mr.ReadInt16()) fieldCount := int(mr.ReadInt16())
if fieldCount != len(fields) { if fieldCount != len(fields) {
@ -26,7 +26,7 @@ func newDataRowReader(mr *MessageReader, fields []FieldDescription) (r *DataRowR
// ReadValue returns the next value from the current row. // ReadValue returns the next value from the current row.
func (r *DataRowReader) ReadValue() interface{} { func (r *DataRowReader) ReadValue() interface{} {
fieldDescription := r.fields[r.currentFieldIdx] fieldDescription := r.FieldDescriptions[r.currentFieldIdx]
r.currentFieldIdx++ r.currentFieldIdx++
size := r.mr.ReadInt32() size := r.mr.ReadInt32()