diff --git a/pkg/tsdb/postgres/macros.go b/pkg/tsdb/postgres/macros.go index c55df5da8a6..c6524786c83 100644 --- a/pkg/tsdb/postgres/macros.go +++ b/pkg/tsdb/postgres/macros.go @@ -146,7 +146,7 @@ func (m *postgresMacroEngine) evaluateMacro(timeRange backend.TimeRange, query * return "", err } } - return fmt.Sprintf("floor(%s/%v)*%v", args[0], interval.Seconds(), interval.Seconds()), nil + return fmt.Sprintf("floor((%s)/%v)*%v", args[0], interval.Seconds(), interval.Seconds()), nil case "__unixEpochGroupAlias": tg, err := m.evaluateMacro(timeRange, query, "__unixEpochGroup", args) if err == nil { diff --git a/pkg/tsdb/postgres/macros_test.go b/pkg/tsdb/postgres/macros_test.go index 29a5207e0bb..0d65e2e1e72 100644 --- a/pkg/tsdb/postgres/macros_test.go +++ b/pkg/tsdb/postgres/macros_test.go @@ -137,11 +137,11 @@ func TestMacroEngine(t *testing.T) { }) t.Run("interpolate __unixEpochGroup function", func(t *testing.T) { - sql, err := engine.Interpolate(query, timeRange, "SELECT $__unixEpochGroup(time_column,'5m')") + sql, err := engine.Interpolate(query, timeRange, "SELECT $__unixEpochGroup(time_column+time_adjustment,'5m')") require.NoError(t, err) - sql2, err := engine.Interpolate(query, timeRange, "SELECT $__unixEpochGroupAlias(time_column,'5m')") + sql2, err := engine.Interpolate(query, timeRange, "SELECT $__unixEpochGroupAlias(time_column+time_adjustment,'5m')") require.NoError(t, err) - require.Equal(t, "SELECT floor(time_column/300)*300", sql) + require.Equal(t, "SELECT floor((time_column+time_adjustment)/300)*300", sql) require.Equal(t, sql2, sql+" AS \"time\"") }) })