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