package pgxpool

import (
	
	
)

type errRows struct {
	err error
}

func (errRows) ()                                       {}
func ( errRows) () error                                 { return .err }
func (errRows) () pgconn.CommandTag                { return pgconn.CommandTag{} }
func (errRows) () []pgconn.FieldDescription { return nil }
func (errRows) () bool                                   { return false }
func ( errRows) ( ...any) error                     { return .err }
func ( errRows) () ([]any, error)                     { return nil, .err }
func ( errRows) () [][]byte                        { return nil }
func ( errRows) () *pgx.Conn                            { return nil }

type errRow struct {
	err error
}

func ( errRow) ( ...any) error { return .err }

type poolRows struct {
	r   pgx.Rows
	c   *Conn
	err error
}

func ( *poolRows) () {
	.r.Close()
	if .c != nil {
		.c.Release()
		.c = nil
	}
}

func ( *poolRows) () error {
	if .err != nil {
		return .err
	}
	return .r.Err()
}

func ( *poolRows) () pgconn.CommandTag {
	return .r.CommandTag()
}

func ( *poolRows) () []pgconn.FieldDescription {
	return .r.FieldDescriptions()
}

func ( *poolRows) () bool {
	if .err != nil {
		return false
	}

	 := .r.Next()
	if ! {
		.Close()
	}
	return 
}

func ( *poolRows) ( ...any) error {
	 := .r.Scan(...)
	if  != nil {
		.Close()
	}
	return 
}

func ( *poolRows) () ([]any, error) {
	,  := .r.Values()
	if  != nil {
		.Close()
	}
	return , 
}

func ( *poolRows) () [][]byte {
	return .r.RawValues()
}

func ( *poolRows) () *pgx.Conn {
	return .r.Conn()
}

type poolRow struct {
	r   pgx.Row
	c   *Conn
	err error
}

func ( *poolRow) ( ...any) error {
	if .err != nil {
		return .err
	}

	 := true
	defer func() {
		if  && .c != nil {
			.c.Release()
		}
	}()
	 := .r.Scan(...)
	 = false
	if .c != nil {
		.c.Release()
	}
	return 
}