diff --git a/internal/sqladapter/database.go b/internal/sqladapter/database.go
index 94b30a8a4ae1d9991e7a22641199154bcbba2f8f..e04b585063af1b469d1491ec180f0bae05f17067 100644
--- a/internal/sqladapter/database.go
+++ b/internal/sqladapter/database.go
@@ -17,6 +17,10 @@ import (
 	"upper.io/db/internal/sqlutil/tx"
 )
 
+type HasExecStatement interface {
+	Exec(stmt *sqlx.Stmt, args ...interface{}) (sql.Result, error)
+}
+
 type PartialDatabase interface {
 	PopulateSchema() error
 	TableExists(name string) error
@@ -195,6 +199,10 @@ func (d *BaseDatabase) Exec(stmt *sqlgen.Statement, args ...interface{}) (sql.Re
 		return nil, err
 	}
 
+	if execer, ok := d.partial.(HasExecStatement); ok {
+		return execer.Exec(p, args...)
+	}
+
 	return p.Exec(args...)
 }
 
diff --git a/internal/sqlutil/result/result.go b/internal/sqlutil/result/result.go
index 6f052d2b73ae1ed03c89586b107276151081426d..a508ac5bdec21651bd705fc39f4b81c8642ce26b 100644
--- a/internal/sqlutil/result/result.go
+++ b/internal/sqlutil/result/result.go
@@ -147,7 +147,7 @@ func (r *Result) Count() (uint64, error) {
 	}{}
 
 	q := r.buildSelect()
-	q.Columns(db.Raw{"COUNT(1) AS _t"}).Limit(1)
+	q.Columns(db.Raw{"count(1) AS _t"}).Limit(1)
 
 	if err := q.Iterator().One(&counter); err != nil {
 		return 0, err