InfluxDB: flux query result can cause crash (#26329)

This commit is contained in:
Ryan McKinley 2020-07-14 11:06:27 -07:00 committed by GitHub
parent 72cd9a3222
commit 1f271d06e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 78 additions and 5 deletions

2
go.mod
View File

@ -36,7 +36,7 @@ require (
github.com/gorilla/websocket v1.4.1
github.com/gosimple/slug v1.4.2
github.com/grafana/grafana-plugin-model v0.0.0-20190930120109-1fc953a61fb4
github.com/grafana/grafana-plugin-sdk-go v0.74.0
github.com/grafana/grafana-plugin-sdk-go v0.75.0
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd
github.com/hashicorp/go-plugin v1.2.2
github.com/hashicorp/go-version v1.1.0

4
go.sum
View File

@ -199,8 +199,8 @@ github.com/gosimple/slug v1.4.2 h1:jDmprx3q/9Lfk4FkGZtvzDQ9Cj9eAmsjzeQGp24PeiQ=
github.com/gosimple/slug v1.4.2/go.mod h1:ER78kgg1Mv0NQGlXiDe57DpCyfbNywXXZ9mIorhxAf0=
github.com/grafana/grafana-plugin-model v0.0.0-20190930120109-1fc953a61fb4 h1:SPdxCL9BChFTlyi0Khv64vdCW4TMna8+sxL7+Chx+Ag=
github.com/grafana/grafana-plugin-model v0.0.0-20190930120109-1fc953a61fb4/go.mod h1:nc0XxBzjeGcrMltCDw269LoWF9S8ibhgxolCdA1R8To=
github.com/grafana/grafana-plugin-sdk-go v0.74.0 h1:UdyX8dJ5HoM8JoUk6I7zIt7rFbjkAeAXVbqQRDxZ5Eg=
github.com/grafana/grafana-plugin-sdk-go v0.74.0/go.mod h1:NvxLzGkVhnoBKwzkst6CFfpMFKwAdIUZ1q8ssuLeF60=
github.com/grafana/grafana-plugin-sdk-go v0.75.0 h1:b0Ugpn88VNx17Q8MA1MsWkD3ddBEbRvFxzid+Nka3F0=
github.com/grafana/grafana-plugin-sdk-go v0.75.0/go.mod h1:NvxLzGkVhnoBKwzkst6CFfpMFKwAdIUZ1q8ssuLeF60=
github.com/grpc-ecosystem/go-grpc-middleware v1.2.0 h1:0IKlLyQ3Hs9nDaiK5cSHAGmcQEIC8l2Ts1u6x5Dfrqg=
github.com/grpc-ecosystem/go-grpc-middleware v1.2.0/go.mod h1:mJzapYve32yjrKlk9GbyCZHuPgZsrbyIbyKhSzOpg6s=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=

View File

@ -52,9 +52,9 @@ func getConverter(t string) (*data.FieldConverter, error) {
case stringDatatype:
return &AnyToOptionalString, nil
case timeDatatypeRFC:
return &Int64ToOptionalInt64, nil
return &TimeToOptionalTime, nil
case timeDatatypeRFCNano:
return &Int64ToOptionalInt64, nil
return &TimeToOptionalTime, nil
case durationDatatype:
return &Int64ToOptionalInt64, nil
case doubleDatatype:

View File

@ -100,6 +100,21 @@ var BoolToOptionalBool = data.FieldConverter{
},
}
// TimeToOptionalTime optional int value
var TimeToOptionalTime = data.FieldConverter{
OutputFieldType: data.FieldTypeNullableTime,
Converter: func(v interface{}) (interface{}, error) {
if v == nil {
return nil, nil
}
val, ok := v.(time.Time)
if !ok { // or return some default value instead of erroring
return nil, fmt.Errorf("[time] expected time input but got type %T", v)
}
return &val, nil
},
}
// RFC3339StringToNullableTime .....
func RFC3339StringToNullableTime(s string) (*time.Time, error) {
if s == "" {

View File

@ -261,3 +261,12 @@ func TestBuckets(t *testing.T) {
fmt.Println("----------------------")
})
}
func TestGoldenFiles(t *testing.T) {
t.Run("Renamed", func(t *testing.T) {
_, err := verifyGoldenResponse("renamed")
if err != nil {
t.Fatal(err.Error())
}
})
}

View File

@ -0,0 +1,24 @@
#group,false,false,false,false
#datatype,string,long,double,dateTime:RFC3339
#default,_result,,,
,result,table,MeanAggregate,time
,,0,0,2020-07-14T03:26:31Z
,,0,0,2020-07-14T03:26:32Z
,,0,0,2020-07-14T03:26:35Z
,,0,0,2020-07-14T03:29:33Z
,,0,29.38586956521739,2020-07-14T04:59:41Z
,,0,0,2020-07-14T05:04:24Z
,,0,7.306756756756757,2020-07-14T05:04:25Z
,,0,3.633736559139785,2020-07-14T05:04:26Z
,,0,3.6143048128342246,2020-07-14T05:04:27Z
,,0,3.5950797872340425,2020-07-14T05:04:28Z
,,0,2.013780260707635,2020-07-14T10:14:01Z
,,0,9.1166908290378,2020-07-14T11:43:56Z
,,0,0,2020-07-14T11:47:43Z
,,0,0,2020-07-14T11:47:44Z
,,0,0,2020-07-14T11:47:45Z
,,0,0,2020-07-14T11:47:46Z
,,0,0,2020-07-14T11:47:47Z
,,0,1.5051560758082496,2020-07-14T11:47:48Z
,,0,2.022162706401263,2020-07-14T11:47:49Z
,,0,2.019892437805675,2020-07-14T11:47:50Z
1 #group false false false false
2 #datatype string long double dateTime:RFC3339
3 #default _result
4 result table MeanAggregate time
5 0 0 2020-07-14T03:26:31Z
6 0 0 2020-07-14T03:26:32Z
7 0 0 2020-07-14T03:26:35Z
8 0 0 2020-07-14T03:29:33Z
9 0 29.38586956521739 2020-07-14T04:59:41Z
10 0 0 2020-07-14T05:04:24Z
11 0 7.306756756756757 2020-07-14T05:04:25Z
12 0 3.633736559139785 2020-07-14T05:04:26Z
13 0 3.6143048128342246 2020-07-14T05:04:27Z
14 0 3.5950797872340425 2020-07-14T05:04:28Z
15 0 2.013780260707635 2020-07-14T10:14:01Z
16 0 9.1166908290378 2020-07-14T11:43:56Z
17 0 0 2020-07-14T11:47:43Z
18 0 0 2020-07-14T11:47:44Z
19 0 0 2020-07-14T11:47:45Z
20 0 0 2020-07-14T11:47:46Z
21 0 0 2020-07-14T11:47:47Z
22 0 1.5051560758082496 2020-07-14T11:47:48Z
23 0 2.022162706401263 2020-07-14T11:47:49Z
24 0 2.019892437805675 2020-07-14T11:47:50Z

View File

@ -0,0 +1,25 @@
🌟 This was machine generated. Do not edit. 🌟
Frame[0] {}
Name:
Dimensions: 4 Fields by 20 Rows
+-----------------+----------------+---------------------+-------------------------------+
| Name: result | Name: table | Name: MeanAggregate | Name: time |
| Labels: | Labels: | Labels: | Labels: |
| Type: []*string | Type: []*int64 | Type: []*float64 | Type: []*time.Time |
+-----------------+----------------+---------------------+-------------------------------+
| _result | 0 | 0 | 2020-07-14 03:26:31 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 03:26:32 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 03:26:35 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 03:29:33 +0000 UTC |
| _result | 0 | 29.38586956521739 | 2020-07-14 04:59:41 +0000 UTC |
| _result | 0 | 0 | 2020-07-14 05:04:24 +0000 UTC |
| _result | 0 | 7.306756756756757 | 2020-07-14 05:04:25 +0000 UTC |
| _result | 0 | 3.633736559139785 | 2020-07-14 05:04:26 +0000 UTC |
| _result | 0 | 3.6143048128342246 | 2020-07-14 05:04:27 +0000 UTC |
| ... | ... | ... | ... |
+-----------------+----------------+---------------------+-------------------------------+
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=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