feat(query/stdlib): update push down window logic for location option (#22607)

pull/22615/head
Jonathan A. Sternberg 2021-10-01 14:27:37 -05:00 committed by GitHub
parent 0a6f562a44
commit a01d42db37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 15 deletions

2
go.mod
View File

@ -103,7 +103,7 @@ require (
github.com/imdario/mergo v0.3.9 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/influxdata/cron v0.0.0-20201006132531-4bb0a200dcbe
github.com/influxdata/flux v0.132.0
github.com/influxdata/flux v0.132.1-0.20211001182920-09290bc83f0d
github.com/influxdata/httprouter v1.3.1-0.20191122104820-ee83e2772f69
github.com/influxdata/influx-cli/v2 v2.1.1-0.20210813175002-13799e7662c0
github.com/influxdata/influxdb-client-go/v2 v2.3.1-0.20210518120617-5d1fff431040 // indirect

4
go.sum
View File

@ -426,8 +426,8 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/influxdata/cron v0.0.0-20201006132531-4bb0a200dcbe h1:7j4SdN/BvQwN6WoUq7mv0kg5U9NhnFBxPGMafYRKym0=
github.com/influxdata/cron v0.0.0-20201006132531-4bb0a200dcbe/go.mod h1:XabtPPW2qsCg0tl+kjaPU+cFS+CjQXEXbT1VJvHT4og=
github.com/influxdata/flux v0.132.0 h1:9AFjm/2/yLDivEpXtYFL5Px/tL7Y5y2aVXa4py7Xbvk=
github.com/influxdata/flux v0.132.0/go.mod h1:RzogdNsdZoyDAw53BwLrhqyrVI7eT0IKEWW2UjAvTiw=
github.com/influxdata/flux v0.132.1-0.20211001182920-09290bc83f0d h1:tUyfM4ovhaVZBxFXfUfLXhTfOrqgwGrFEBLKevVmqyM=
github.com/influxdata/flux v0.132.1-0.20211001182920-09290bc83f0d/go.mod h1:RzogdNsdZoyDAw53BwLrhqyrVI7eT0IKEWW2UjAvTiw=
github.com/influxdata/httprouter v1.3.1-0.20191122104820-ee83e2772f69 h1:WQsmW0fXO4ZE/lFGIE84G6rIV5SJN3P3sjIXAP1a8eU=
github.com/influxdata/httprouter v1.3.1-0.20191122104820-ee83e2772f69/go.mod h1:pwymjR6SrP3gD3pRj9RJwdl1j5s3doEEV8gS4X9qSzA=
github.com/influxdata/influx-cli/v2 v2.1.1-0.20210813175002-13799e7662c0 h1:llPYnejbp/s9JkkS2xjSlAsdPKqIAsabhAgiOLV1NHw=

View File

@ -716,6 +716,7 @@ func isPushableWindow(windowSpec *universe.WindowProcedureSpec) bool {
// every and period must be equal
// every.isNegative must be false
// offset.isNegative must be false
// location must be "UTC"
// timeColumn: must be "_time"
// startColumn: must be "_start"
// stopColumn: must be "_stop"
@ -724,6 +725,7 @@ func isPushableWindow(windowSpec *universe.WindowProcedureSpec) bool {
return window.Every.Equal(window.Period) &&
!window.Every.IsNegative() &&
!window.Offset.IsNegative() &&
window.Location == "UTC" &&
windowSpec.TimeColumn == "_time" &&
windowSpec.StartColumn == "_start" &&
windowSpec.StopColumn == "_stop"

View File

@ -1181,9 +1181,10 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
window := func(dur values.Duration) universe.WindowProcedureSpec {
return universe.WindowProcedureSpec{
Window: plan.WindowSpec{
Every: dur,
Period: dur,
Offset: dur0,
Every: dur,
Period: dur,
Offset: dur0,
Location: "UTC",
},
TimeColumn: "_time",
StartColumn: "_start",
@ -1345,9 +1346,10 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownWindowAggregateRule{}},
Before: simplePlanWithWindowAgg(universe.WindowProcedureSpec{
Window: plan.WindowSpec{
Every: dur2m,
Period: dur2m,
Offset: dur1m,
Every: dur2m,
Period: dur2m,
Offset: dur1m,
Location: "UTC",
},
TimeColumn: "_time",
StartColumn: "_start",
@ -2104,9 +2106,10 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
window := func(dur values.Duration) universe.WindowProcedureSpec {
return universe.WindowProcedureSpec{
Window: plan.WindowSpec{
Every: dur,
Period: dur,
Offset: dur0,
Every: dur,
Period: dur,
Offset: dur0,
Location: "UTC",
},
TimeColumn: "_time",
StartColumn: "_start",
@ -2332,9 +2335,10 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
plan.CreateLogicalNode("group", group(flux.GroupModeBy, "host")),
plan.CreateLogicalNode("window", &universe.WindowProcedureSpec{
Window: plan.WindowSpec{
Every: dur2m,
Period: dur2m,
Offset: dur1m,
Every: dur2m,
Period: dur2m,
Offset: dur1m,
Location: "UTC",
},
TimeColumn: "_time",
StartColumn: "_start",
@ -2411,6 +2415,11 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
badWindow5.StopColumn = "_stappp"
simpleMinUnchanged("BadStop", badWindow5)
// Condition not met: non-UTC location
badWindow6 := window1m
badWindow6.Window.Location = "America/Los_Angeles"
simpleMinUnchanged("BadLocation", badWindow6)
// Condition met: createEmpty is true.
windowCreateEmpty1m := window1m
windowCreateEmpty1m.CreateEmpty = true