diff --git a/go.mod b/go.mod index a6caa219e4d..0ad40a3edf5 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index 29269fc2c85..aeaffe00a11 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/pkg/tsdb/influxdb/flux/builder.go b/pkg/tsdb/influxdb/flux/builder.go index ee81db09388..d86a180df3a 100644 --- a/pkg/tsdb/influxdb/flux/builder.go +++ b/pkg/tsdb/influxdb/flux/builder.go @@ -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: diff --git a/pkg/tsdb/influxdb/flux/converters.go b/pkg/tsdb/influxdb/flux/converters.go index eceb2e26dd1..9c9766191ed 100644 --- a/pkg/tsdb/influxdb/flux/converters.go +++ b/pkg/tsdb/influxdb/flux/converters.go @@ -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 == "" { diff --git a/pkg/tsdb/influxdb/flux/executor_test.go b/pkg/tsdb/influxdb/flux/executor_test.go index 928192204a7..579be99cc68 100644 --- a/pkg/tsdb/influxdb/flux/executor_test.go +++ b/pkg/tsdb/influxdb/flux/executor_test.go @@ -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()) + } + }) +} diff --git a/pkg/tsdb/influxdb/flux/testdata/renamed.csv b/pkg/tsdb/influxdb/flux/testdata/renamed.csv new file mode 100644 index 00000000000..8775b067d59 --- /dev/null +++ b/pkg/tsdb/influxdb/flux/testdata/renamed.csv @@ -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 \ No newline at end of file diff --git a/pkg/tsdb/influxdb/flux/testdata/renamed.golden.txt b/pkg/tsdb/influxdb/flux/testdata/renamed.golden.txt new file mode 100644 index 00000000000..90767b675c3 --- /dev/null +++ b/pkg/tsdb/influxdb/flux/testdata/renamed.golden.txt @@ -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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