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.