diff --git a/dialect_cockroach.go b/dialect_cockroach.go index ff304ec9..dadc7035 100644 --- a/dialect_cockroach.go +++ b/dialect_cockroach.go @@ -2,7 +2,7 @@ package pop import ( "bytes" - "errors" + "database/sql" "fmt" "io" "net/url" @@ -90,12 +90,18 @@ func (p *cockroach) Create(c *Connection, model *Model, cols columns.Columns) er } defer rows.Close() if !rows.Next() { - return errors.New("named insert: no rows") + if err := rows.Err(); err != nil { + return fmt.Errorf("named insert: next: %w", err) + } + return fmt.Errorf("named insert: %w", sql.ErrNoRows) } var id interface{} if err := rows.Scan(&id); err != nil { return fmt.Errorf("named insert: scan: %w", err) } + if err := rows.Close(); err != nil { + return fmt.Errorf("named insert: close: %w", err) + } model.setID(id) return nil @@ -121,12 +127,18 @@ func (p *cockroach) Create(c *Connection, model *Model, cols columns.Columns) er } defer rows.Close() if !rows.Next() { - return errors.New("named insert: no rows") + if err := rows.Err(); err != nil { + return fmt.Errorf("named insert: next: %w", err) + } + return fmt.Errorf("named insert: %w", sql.ErrNoRows) } var id uuid.UUID if err := rows.Scan(&id); err != nil { return fmt.Errorf("named insert: scan: %w", err) } + if err := rows.Close(); err != nil { + return fmt.Errorf("named insert: close: %w", err) + } model.setID(id) return nil } diff --git a/dialect_postgresql.go b/dialect_postgresql.go index 9be8bf68..037d480d 100644 --- a/dialect_postgresql.go +++ b/dialect_postgresql.go @@ -1,7 +1,7 @@ package pop import ( - "errors" + "database/sql" "fmt" "io" "net/url" @@ -73,12 +73,18 @@ func (p *postgresql) Create(c *Connection, model *Model, cols columns.Columns) e } defer rows.Close() if !rows.Next() { - return errors.New("named insert: no rows") + if err := rows.Err(); err != nil { + return fmt.Errorf("named insert: next: %w", err) + } + return fmt.Errorf("named insert: %w", sql.ErrNoRows) } var id interface{} if err := rows.Scan(&id); err != nil { return fmt.Errorf("named insert: scan: %w", err) } + if err := rows.Close(); err != nil { + return fmt.Errorf("named insert: close: %w", err) + } model.setID(id) return nil } diff --git a/preload_associations.go b/preload_associations.go index 1ce949fc..87c62652 100644 --- a/preload_associations.go +++ b/preload_associations.go @@ -491,6 +491,9 @@ func preloadManyToMany(tx *Connection, asoc *AssociationMetaInfo, mmi *ModelMeta fkids = append(fkids, row[1]) } } + if err := rows.Err(); err != nil { + return err + } q := tx.Q() q.eager = false