Skip to content

Commit 6ef235b

Browse files
committed
Actually emit the correct query time, not just set up the field
1 parent 878203c commit 6ef235b

File tree

2 files changed

+10
-15
lines changed

2 files changed

+10
-15
lines changed

server/handler.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -447,29 +447,24 @@ func (h *Handler) doQuery(
447447
}
448448
}
449449

450-
// Add query time to logger for this query (after connect time)
451-
logger := sqlCtx.GetLogger()
452450
if queryStr != "" {
453-
logger = logger.WithField(sql.QueryTimeLogKey, start).WithField("query", queryStr)
454-
} else {
455-
logger = logger.WithField(sql.QueryTimeLogKey, start)
451+
sqlCtx.SetLogger(sqlCtx.GetLogger().WithField("query", queryStr))
456452
}
457-
sqlCtx.SetLogger(logger)
458-
sqlCtx.GetLogger().Debugf("Starting query")
453+
sqlCtx.GetLogger().WithField(sql.QueryTimeLogKey, time.Now()).Debugf("Starting query")
459454

460455
finish := observeQuery(sqlCtx, query)
461456
defer func() {
462457
finish(err)
463458
}()
464459

465-
sqlCtx.GetLogger().Tracef("beginning execution")
460+
sqlCtx.GetLogger().WithField(sql.QueryTimeLogKey, time.Now()).Tracef("beginning execution")
466461

467462
var schema sql.Schema
468463
var rowIter sql.RowIter
469464
qFlags.Set(sql.QFlagDeferProjections)
470465
schema, rowIter, qFlags, err = queryExec(sqlCtx, query, parsed, analyzedPlan, bindings, qFlags)
471466
if err != nil {
472-
sqlCtx.GetLogger().WithError(err).Warn("error running query")
467+
sqlCtx.GetLogger().WithField(sql.QueryTimeLogKey, time.Now()).WithError(err).Warn("error running query")
473468
if verboseErrorLogging {
474469
fmt.Printf("Err: %+v", err)
475470
}
@@ -516,7 +511,7 @@ func (h *Handler) doQuery(
516511
sqlCtx.GetLogger().Tracef("returning result %v", r)
517512
}
518513

519-
sqlCtx.GetLogger().Debugf("Query finished in %d ms", time.Since(start).Milliseconds())
514+
sqlCtx.GetLogger().WithField(sql.QueryTimeLogKey, time.Now()).Debugf("Query finished in %d ms", time.Since(start).Milliseconds())
520515

521516
// processedAtLeastOneBatch means we already called callback() at least
522517
// once, so no need to call it if RowsAffected == 0.

server/handler_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2037,23 +2037,23 @@ func TestHandlerDoQueryIntegration(t *testing.T) {
20372037
// but won't persist in the session logger (which is the expected behavior)
20382038
}
20392039

2040-
// TestQueryTimeLoggerBehavior tests that query time is added to logger during query execution
2040+
// TestQueryTimeLoggerBehavior tests that query time field can be added to logger entries
20412041
func TestQueryTimeLoggerBehavior(t *testing.T) {
20422042
// Test demonstrates that the QueryTimeLogKey constant is available and can be used
2043-
// for setting up logger fields (which happens in the doQuery method)
2043+
// for setting up logger fields with time.Now() calls during query execution
20442044
require.NotEmpty(t, sql.QueryTimeLogKey, "QueryTimeLogKey should not be empty")
20452045

2046-
// Create a time value like what would be used in doQuery
2046+
// Create a time value like what would be used in query logging
20472047
queryTime := time.Now()
20482048

2049-
// Simulate what happens in doQuery: create a logger with query time field
2049+
// Simulate what happens during query execution: create a logger with query time field
20502050
baseLogger := &logrus.Entry{
20512051
Data: make(logrus.Fields),
20522052
}
20532053
baseLogger.Data[sql.ConnectTimeLogKey] = time.Now().Add(-1 * time.Minute) // connection established 1 minute ago
20542054
baseLogger.Data[sql.ConnectionIdLogField] = uint32(123)
20552055

2056-
// Add query time field (this is what our modified doQuery does)
2056+
// Add query time field using time.Now() (this is what our modified handler does)
20572057
loggerWithQueryTime := baseLogger.WithField(sql.QueryTimeLogKey, queryTime)
20582058

20592059
// Verify the query time field was added

0 commit comments

Comments
 (0)