diff --git a/main_test.go b/main_test.go
index bdcdd4aee85f5badb481483d13f10223475965b0..f9739264c63b96f6001ed25daf8e49dcaa443933 100644
--- a/main_test.go
+++ b/main_test.go
@@ -11,19 +11,19 @@ import (
 	"testing"
 	"time"
 	"upper.io/db"
-	_ "upper.io/db/mongo"
-	_ "upper.io/db/mysql"
+	//_ "upper.io/db/mongo"
+	//_ "upper.io/db/mysql"
 	_ "upper.io/db/postgresql"
-	_ "upper.io/db/ql"
-	_ "upper.io/db/sqlite"
+	//_ "upper.io/db/ql"
+	//_ "upper.io/db/sqlite"
 )
 
 var wrappers = []string{
-	`sqlite`,
-	`mysql`,
+	//`sqlite`,
+	//`mysql`,
 	`postgresql`,
-	`mongo`,
-	`ql`,
+	//`mongo`,
+	//`ql`,
 }
 
 const (
@@ -541,7 +541,7 @@ func TestFibonacci(t *testing.T) {
 				whereIn = db.Cond{"input": db.Func{"IN", []int{3, 5, 6, 7}}}
 			}
 
-			res = col.Find(whereIn).Skip(1).Limit(2).Sort("input")
+			res = col.Find(whereIn).Sort("input")
 
 			total, err = res.Count()
 
@@ -553,6 +553,8 @@ func TestFibonacci(t *testing.T) {
 				t.Fatalf(`Expecting a count of 4.`)
 			}
 
+			res = res.Skip(1).Limit(2)
+
 			for {
 				var item Fibonacci
 				err = res.Next(&item)
@@ -583,11 +585,9 @@ func TestFibonacci(t *testing.T) {
 					},
 					db.Cond{"input": 3},
 				},
-			).Skip(1).Limit(2).Sort("-input")
-
-			total, err = res.Count()
+			).Sort("-input")
 
-			if err != nil {
+			if total, err = res.Count(); err != nil {
 				t.Fatalf(`%s: %s`, wrapper, err.Error())
 			}
 
@@ -595,6 +595,9 @@ func TestFibonacci(t *testing.T) {
 				t.Fatalf(`Expecting a count of 4.`)
 			}
 
+			// Skipping.
+			res = res.Skip(1).Limit(2)
+
 			for {
 				var item Fibonacci
 				err = res.Next(&item)
diff --git a/postgresql/collection.go b/postgresql/collection.go
index 351326f64770c7dd9f1eb17113bbbd4a4417f5b8..11b05a624ddf30f1917237af9e21c0d3c41fd751 100644
--- a/postgresql/collection.go
+++ b/postgresql/collection.go
@@ -121,7 +121,7 @@ func whereValues(term interface{}) (where sqlgen.Where, args []interface{}) {
 		for _, cond := range t {
 			k, v := whereValues(cond)
 			args = append(args, v...)
-			and = append(and, k)
+			and = append(and, k...)
 		}
 		where = append(where, and)
 	case db.Or:
@@ -129,7 +129,7 @@ func whereValues(term interface{}) (where sqlgen.Where, args []interface{}) {
 		for _, cond := range t {
 			k, v := whereValues(cond)
 			args = append(args, v...)
-			or = append(or, k)
+			or = append(or, k...)
 		}
 		where = append(where, or)
 	case db.Cond:
diff --git a/postgresql/result.go b/postgresql/result.go
index 1ebd0c3a00e55ee61a746623c510f4f8469319fa..3e8459eab5553d320d6f0c1248198f331768a7bf 100644
--- a/postgresql/result.go
+++ b/postgresql/result.go
@@ -228,9 +228,11 @@ func (self *Result) Close() error {
 func (self *Result) Count() (uint64, error) {
 
 	rows, err := self.table.source.doQuery(sqlgen.Statement{
-		Type:  sqlgen.SqlSelectCount,
-		Table: sqlgen.Table{self.table.Name()},
-		Where: self.where,
+		Type:   sqlgen.SqlSelectCount,
+		Table:  sqlgen.Table{self.table.Name()},
+		Where:  self.where,
+		Limit:  self.limit,
+		Offset: self.offset,
 	}, self.arguments...)
 
 	if err != nil {
diff --git a/util/sqlgen/default.go b/util/sqlgen/default.go
index 2924c6110a0af448b62c5e7d577e4ac96ce8fbe0..778fab65e3137807804eb3b8b4452d9299840337 100644
--- a/util/sqlgen/default.go
+++ b/util/sqlgen/default.go
@@ -71,6 +71,14 @@ const (
 			COUNT(1) AS _t
 		FROM {{.Table}}
 			{{.Where}}
+
+			{{if .Limit}}
+				LIMIT {{.Limit}}
+			{{end}}
+
+			{{if .Offset}}
+				OFFSET {{.Offset}}
+			{{end}}
 	`
 
 	defaultInsertLayout = `