diff --git a/mysql/database.go b/mysql/database.go index 1b1830f260754e0fbdf4fa9f967da6f4316430f0..4eb190524181b3e2591d767b465eb364b1b4c904 100644 --- a/mysql/database.go +++ b/mysql/database.go @@ -27,6 +27,7 @@ import ( "os" "regexp" "strings" + "time" _ "github.com/go-sql-driver/mysql" "upper.io/db" @@ -68,9 +69,9 @@ func debugEnabled() bool { return false } -func debugLog(query string, args []interface{}, err error) { +func debugLog(query string, args []interface{}, err error, start int64, end int64) { if debugEnabled() == true { - d := sqlutil.Debug{query, args, err} + d := sqlutil.Debug{query, args, err, start, end} d.Print() } } @@ -114,9 +115,13 @@ func (self *Source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Resu var query string var res sql.Result var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -138,9 +143,13 @@ func (self *Source) doQuery(stmt sqlgen.Statement, args ...interface{}) (*sql.Ro var rows *sql.Rows var query string var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -162,9 +171,13 @@ func (self *Source) doQueryRow(stmt sqlgen.Statement, args ...interface{}) (*sql var query string var row *sql.Row var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { diff --git a/postgresql/database.go b/postgresql/database.go index cff0f7ef9cd9922f46bb78f9b4ce7cecfea76d7b..4af576b474871395a92a88b7e817d59a5653e325 100644 --- a/postgresql/database.go +++ b/postgresql/database.go @@ -27,6 +27,7 @@ import ( "os" "regexp" "strings" + "time" _ "github.com/xiam/gopostgresql" "upper.io/db" @@ -70,9 +71,9 @@ func debugEnabled() bool { return false } -func debugLog(query string, args []interface{}, err error) { +func debugLog(query string, args []interface{}, err error, start int64, end int64) { if debugEnabled() == true { - d := sqlutil.Debug{query, args, err} + d := sqlutil.Debug{query, args, err, start, end} d.Print() } } @@ -116,9 +117,13 @@ func (self *source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Resu var query string var res sql.Result var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -145,9 +150,13 @@ func (self *source) doQuery(stmt sqlgen.Statement, args ...interface{}) (*sql.Ro var rows *sql.Rows var query string var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -174,9 +183,13 @@ func (self *source) doQueryRow(stmt sqlgen.Statement, args ...interface{}) (*sql var query string var row *sql.Row var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { diff --git a/ql/database.go b/ql/database.go index 27e7da7d7b995407a82d2cd893948c6a4cc97c56..13af8cf129f57f772d4969a325821ca60e38665d 100644 --- a/ql/database.go +++ b/ql/database.go @@ -71,9 +71,9 @@ func debugEnabled() bool { return false } -func debugLog(query string, args []interface{}, err error) { +func debugLog(query string, args []interface{}, err error, start int64, end int64) { if debugEnabled() == true { - d := sqlutil.Debug{query, args, err} + d := sqlutil.Debug{query, args, err, start, end} d.Print() } } @@ -114,13 +114,16 @@ func init() { } func (self *source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Result, error) { - var query string var res sql.Result var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -159,9 +162,13 @@ func (self *source) doQuery(stmt sqlgen.Statement, args ...interface{}) (*sql.Ro var rows *sql.Rows var query string var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -200,9 +207,13 @@ func (self *source) doQueryRow(stmt sqlgen.Statement, args ...interface{}) (*sql var query string var row *sql.Row var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { diff --git a/sqlite/database.go b/sqlite/database.go index d923092d7892001abe94ee1f280e0aa84e8e8704..59e7523af8b8a9d0dfa573a462d81dc2fca0d3e3 100644 --- a/sqlite/database.go +++ b/sqlite/database.go @@ -26,6 +26,7 @@ import ( "fmt" "os" "strings" + "time" _ "github.com/mattn/go-sqlite3" "upper.io/db" @@ -67,9 +68,9 @@ func debugEnabled() bool { return false } -func debugLog(query string, args []interface{}, err error) { +func debugLog(query string, args []interface{}, err error, start int64, end int64) { if debugEnabled() == true { - d := sqlutil.Debug{query, args, err} + d := sqlutil.Debug{query, args, err, start, end} d.Print() } } @@ -113,9 +114,13 @@ func (self *source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Resu var query string var res sql.Result var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -137,9 +142,13 @@ func (self *source) doQuery(stmt sqlgen.Statement, args ...interface{}) (*sql.Ro var rows *sql.Rows var query string var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -161,9 +170,13 @@ func (self *source) doQueryRow(stmt sqlgen.Statement, args ...interface{}) (*sql var query string var row *sql.Row var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { @@ -184,9 +197,13 @@ func (self *source) doQueryRow(stmt sqlgen.Statement, args ...interface{}) (*sql func (self *source) doRawQuery(query string, args ...interface{}) (*sql.Rows, error) { var rows *sql.Rows var err error + var start, end int64 + + start = time.Now().UnixNano() defer func() { - debugLog(query, args, err) + end = time.Now().UnixNano() + debugLog(query, args, err, start, end) }() if self.session == nil { diff --git a/util/sqlutil/main.go b/util/sqlutil/main.go index c28f99b0b88f59ee44687e93d42c0cae81287f60..cd909862b12c9fbd228e8dead00fb4e150d50952 100644 --- a/util/sqlutil/main.go +++ b/util/sqlutil/main.go @@ -43,9 +43,11 @@ type T struct { } type Debug struct { - SQL string - Args []interface{} - Err error + SQL string + Args []interface{} + Err error + Start int64 + End int64 } func (self *Debug) Print() { @@ -55,17 +57,19 @@ func (self *Debug) Print() { s := make([]string, 0, 3) if self.SQL != "" { - s = append(s, fmt.Sprintf(`SQL: %s`, self.SQL)) + s = append(s, fmt.Sprintf(`Q: %s`, self.SQL)) } if len(self.Args) > 0 { - s = append(s, fmt.Sprintf(`ARG: %v`, self.Args)) + s = append(s, fmt.Sprintf(`A: %v`, self.Args)) } if self.Err != nil { - s = append(s, fmt.Sprintf(`ERR: %q`, self.Err)) + s = append(s, fmt.Sprintf(`E: %q`, self.Err)) } + s = append(s, fmt.Sprintf(`T: %0.5fs`, float64(self.End-self.Start)/float64(1e9))) + log.Printf("\n\t%s\n\n", strings.Join(s, "\n\t")) }