From 858e2fef68f78fce43043f33e0edaefb15e255fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jos=C3=A9=20Carlos=20Nieto?= <jose.carlos@menteslibres.net>
Date: Thu, 8 Oct 2015 10:08:00 -0500
Subject: [PATCH] Adding HasExecStatement interface to delegate Exec to the
 adapter.

---
 internal/sqladapter/database.go   | 8 ++++++++
 internal/sqlutil/result/result.go | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/internal/sqladapter/database.go b/internal/sqladapter/database.go
index 94b30a8a..e04b5850 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 6f052d2b..a508ac5b 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
-- 
GitLab