Postgres: Fix time group macro when TimescaleDB is enabled and interval is less than a second (#33153) (#33219)

Fixing a special case with time group macro when
using TimescaleDB and interval is lower than a second.

Fixes #33124

(cherry picked from commit dd0ba96d7c)
This commit is contained in:
Marcus Efraimsson
2021-04-21 16:55:59 +02:00
committed by GitHub
parent 051994d758
commit 2b0cc8c9b4
2 changed files with 11 additions and 4 deletions
+1 -1
View File
@@ -107,7 +107,7 @@ func (m *postgresMacroEngine) evaluateMacro(name string, args []string) (string,
}
if m.timescaledb {
return fmt.Sprintf("time_bucket('%.0fs',%s)", interval.Seconds(), args[0]), nil
return fmt.Sprintf("time_bucket('%.1fs',%s)", interval.Seconds(), args[0]), nil
}
return fmt.Sprintf(
+10 -3
View File
@@ -94,21 +94,28 @@ func TestMacroEngine(t *testing.T) {
sql, err := engineTS.Interpolate(query, timeRange, "GROUP BY $__timeGroup(time_column,'5m')")
So(err, ShouldBeNil)
So(sql, ShouldEqual, "GROUP BY time_bucket('300s',time_column)")
So(sql, ShouldEqual, "GROUP BY time_bucket('300.0s',time_column)")
})
Convey("interpolate __timeGroup function with spaces between args and TimescaleDB enabled", func() {
sql, err := engineTS.Interpolate(query, timeRange, "GROUP BY $__timeGroup(time_column , '5m')")
So(err, ShouldBeNil)
So(sql, ShouldEqual, "GROUP BY time_bucket('300s',time_column)")
So(sql, ShouldEqual, "GROUP BY time_bucket('300.0s',time_column)")
})
Convey("interpolate __timeGroup function with large time range as an argument and TimescaleDB enabled", func() {
sql, err := engineTS.Interpolate(query, timeRange, "GROUP BY $__timeGroup(time_column , '12d')")
So(err, ShouldBeNil)
So(sql, ShouldEqual, "GROUP BY time_bucket('1036800s',time_column)")
So(sql, ShouldEqual, "GROUP BY time_bucket('1036800.0s',time_column)")
})
Convey("interpolate __timeGroup function with small time range as an argument and TimescaleDB enabled", func() {
sql, err := engineTS.Interpolate(query, timeRange, "GROUP BY $__timeGroup(time_column , '200ms')")
So(err, ShouldBeNil)
So(sql, ShouldEqual, "GROUP BY time_bucket('0.2s',time_column)")
})
Convey("interpolate __unixEpochFilter function", func() {