diff --git a/postgresql/database_test.go b/postgresql/database_test.go index 57db2b0777b221714b5bd952a4c9889d409d25c8..bab57cc09d68d83251f2b33ec5f5f5d4733a9e2f 100644 --- a/postgresql/database_test.go +++ b/postgresql/database_test.go @@ -154,7 +154,30 @@ func TestTruncate(t *testing.T) { } } -// Attempts to append some data into the "artist" table. +// Attempts to trigger a database error. +func TestSetCursorError(t *testing.T) { + sess, err := db.Open(Adapter, settings) + if err != nil { + t.Fatal(err) + } + defer sess.Close() + + artist, err := sess.Collection("artist") + if err != nil { + t.Fatal(err) + } + + // trigger Postgres error. "" is not an int. + res := artist.Find(db.Cond{"id": ""}) + + var row map[string]interface{} + err = res.One(&row) + if err == db.ErrNoMoreRows || err == nil { + t.Fatalf("err = %#v, want PQ error", err) + } +} + +// This test appends some data into the "artist" table. func TestAppend(t *testing.T) { var err error var id interface{} diff --git a/postgresql/result.go b/postgresql/result.go index bf269858fc1948f88143cf35abb64c660adef48c..ea8cb0d9365cd90821534ccb6347b98f87d899b4 100644 --- a/postgresql/result.go +++ b/postgresql/result.go @@ -170,24 +170,19 @@ func (self *Result) One(dst interface{}) error { // Fetches the next result from the resultset. func (self *Result) Next(dst interface{}) error { - - var err error - - // Current cursor. - err = self.setCursor() - + err := self.setCursor() if err != nil { self.Close() + return err } - // Fetching the next result from the cursor. err = self.table.T.FetchRow(dst, self.cursor) - if err != nil { self.Close() + return err } - return err + return nil } // Removes the matching items from the collection.