...

Source file src/github.com/jackc/pgx/v4/pgxpool/rows.go

Documentation: github.com/jackc/pgx/v4/pgxpool

     1  package pgxpool
     2  
     3  import (
     4  	"github.com/jackc/pgconn"
     5  	"github.com/jackc/pgproto3/v2"
     6  	"github.com/jackc/pgx/v4"
     7  )
     8  
     9  type errRows struct {
    10  	err error
    11  }
    12  
    13  func (errRows) Close()                                         {}
    14  func (e errRows) Err() error                                   { return e.err }
    15  func (errRows) CommandTag() pgconn.CommandTag                  { return nil }
    16  func (errRows) FieldDescriptions() []pgproto3.FieldDescription { return nil }
    17  func (errRows) Next() bool                                     { return false }
    18  func (e errRows) Scan(dest ...interface{}) error               { return e.err }
    19  func (e errRows) Values() ([]interface{}, error)               { return nil, e.err }
    20  func (e errRows) RawValues() [][]byte                          { return nil }
    21  
    22  type errRow struct {
    23  	err error
    24  }
    25  
    26  func (e errRow) Scan(dest ...interface{}) error { return e.err }
    27  
    28  type poolRows struct {
    29  	r   pgx.Rows
    30  	c   *Conn
    31  	err error
    32  }
    33  
    34  func (rows *poolRows) Close() {
    35  	rows.r.Close()
    36  	if rows.c != nil {
    37  		rows.c.Release()
    38  		rows.c = nil
    39  	}
    40  }
    41  
    42  func (rows *poolRows) Err() error {
    43  	if rows.err != nil {
    44  		return rows.err
    45  	}
    46  	return rows.r.Err()
    47  }
    48  
    49  func (rows *poolRows) CommandTag() pgconn.CommandTag {
    50  	return rows.r.CommandTag()
    51  }
    52  
    53  func (rows *poolRows) FieldDescriptions() []pgproto3.FieldDescription {
    54  	return rows.r.FieldDescriptions()
    55  }
    56  
    57  func (rows *poolRows) Next() bool {
    58  	if rows.err != nil {
    59  		return false
    60  	}
    61  
    62  	n := rows.r.Next()
    63  	if !n {
    64  		rows.Close()
    65  	}
    66  	return n
    67  }
    68  
    69  func (rows *poolRows) Scan(dest ...interface{}) error {
    70  	err := rows.r.Scan(dest...)
    71  	if err != nil {
    72  		rows.Close()
    73  	}
    74  	return err
    75  }
    76  
    77  func (rows *poolRows) Values() ([]interface{}, error) {
    78  	values, err := rows.r.Values()
    79  	if err != nil {
    80  		rows.Close()
    81  	}
    82  	return values, err
    83  }
    84  
    85  func (rows *poolRows) RawValues() [][]byte {
    86  	return rows.r.RawValues()
    87  }
    88  
    89  type poolRow struct {
    90  	r   pgx.Row
    91  	c   *Conn
    92  	err error
    93  }
    94  
    95  func (row *poolRow) Scan(dest ...interface{}) error {
    96  	if row.err != nil {
    97  		return row.err
    98  	}
    99  
   100  	err := row.r.Scan(dest...)
   101  	if row.c != nil {
   102  		row.c.Release()
   103  	}
   104  	return err
   105  }
   106  

View as plain text