Merge pull request #49 from karlseguin/mem1

reduce unecessary memory allocation
pull/52/head
Jack Christensen 2014-11-17 20:36:57 -06:00
commit 79818c2557
3 changed files with 22 additions and 11 deletions

26
conn.go
View File

@ -103,7 +103,7 @@ func Connect(config ConnConfig) (c *Conn, err error) {
if c.config.Logger != nil {
c.logger = c.config.Logger
} else {
c.logger = &discardLogger{}
c.logger = dlogger
}
if c.config.User == "" {
@ -194,8 +194,10 @@ func Connect(config ConnConfig) (c *Conn, err error) {
}
case readyForQuery:
c.rxReadyForQuery(r)
c.logger = &connLogger{logger: c.logger, pid: c.Pid}
c.logger.Info("Connection established")
if c.logger != dlogger {
c.logger = &connLogger{logger: c.logger, pid: c.Pid}
c.logger.Info("Connection established")
}
err = c.loadPgTypes()
if err != nil {
@ -644,14 +646,16 @@ func (c *Conn) Exec(sql string, arguments ...interface{}) (commandTag CommandTag
startTime := time.Now()
c.lastActivityTime = startTime
defer func() {
if err == nil {
endTime := time.Now()
c.logger.Info("Exec", "sql", sql, "args", logQueryArgs(arguments), "time", endTime.Sub(startTime), "commandTag", commandTag)
} else {
c.logger.Error("Exec", "sql", sql, "args", logQueryArgs(arguments), "error", err)
}
}()
if c.logger != dlogger {
defer func() {
if err == nil {
endTime := time.Now()
c.logger.Info("Exec", "sql", sql, "args", logQueryArgs(arguments), "time", endTime.Sub(startTime), "commandTag", commandTag)
} else {
c.logger.Error("Exec", "sql", sql, "args", logQueryArgs(arguments), "error", err)
}
}()
}
if err = c.sendQuery(sql, arguments...); err != nil {
return

View File

@ -19,6 +19,9 @@ type Logger interface {
type discardLogger struct{}
// default discardLogger instance
var dlogger = &discardLogger{}
func (l *discardLogger) Debug(msg string, ctx ...interface{}) {}
func (l *discardLogger) Info(msg string, ctx ...interface{}) {}
func (l *discardLogger) Warn(msg string, ctx ...interface{}) {}

View File

@ -68,6 +68,10 @@ func (rows *Rows) close() {
rows.closed = true
if rows.logger == dlogger {
return
}
if rows.err == nil {
endTime := time.Now()
rows.logger.Info("Query", "sql", rows.sql, "args", logQueryArgs(rows.args), "time", endTime.Sub(rows.startTime), "rowCount", rows.rowCount)