InfluxDB: return a table rather than an error when timeseries is missing time (#27320)

This commit is contained in:
Ryan McKinley 2020-09-01 15:06:38 -07:00 committed by GitHub
parent ff1149ac39
commit 0bc67b032a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 58 additions and 28 deletions

View File

@ -119,40 +119,42 @@ func (fb *frameBuilder) Init(metadata *query.FluxTableMetadata) error {
} }
} }
// Timeseries has a "_value" and a time
if fb.isTimeSeries { if fb.isTimeSeries {
col := getTimeSeriesTimeColumn(columns) col := getTimeSeriesTimeColumn(columns)
if col == nil { if col != nil {
return fmt.Errorf("no time column in timeSeries") fb.timeColumn = col.Name()
} fb.timeDisplay = "Time"
if "_time" != fb.timeColumn {
fb.timeColumn = col.Name() fb.timeDisplay = col.Name()
fb.timeDisplay = "Time"
if "_time" != fb.timeColumn {
fb.timeDisplay = col.Name()
}
} else {
fb.labels = make([]string, 0)
for _, col := range columns {
// Skip the result column
if col.Index() == 0 && col.Name() == "result" && col.DataType() == stringDatatype {
continue
} }
if col.Index() == 1 && col.Name() == "table" && col.DataType() == longDatatype { return nil
continue
}
converter, err := getConverter(col.DataType())
if err != nil {
return err
}
fb.columns = append(fb.columns, columnInfo{
name: col.Name(),
converter: converter,
})
} }
} }
// reset any timeseries properties
fb.value = nil
fb.isTimeSeries = false
fb.labels = make([]string, 0)
for _, col := range columns {
// Skip the result column
if col.Index() == 0 && col.Name() == "result" && col.DataType() == stringDatatype {
continue
}
if col.Index() == 1 && col.Name() == "table" && col.DataType() == longDatatype {
continue
}
converter, err := getConverter(col.DataType())
if err != nil {
return err
}
fb.columns = append(fb.columns, columnInfo{
name: col.Name(),
converter: converter,
})
}
return nil return nil
} }

View File

@ -87,6 +87,13 @@ func TestExecuteSimple(t *testing.T) {
}) })
} }
func TestExecuteSingle(t *testing.T) {
t.Run("Single value", func(t *testing.T) {
dr := verifyGoldenResponse(t, "single")
require.Len(t, dr.Frames, 1)
})
}
func TestExecuteMultiple(t *testing.T) { func TestExecuteMultiple(t *testing.T) {
t.Run("Multiple Test", func(t *testing.T) { t.Run("Multiple Test", func(t *testing.T) {
dr := verifyGoldenResponse(t, "multiple") dr := verifyGoldenResponse(t, "multiple")

View File

@ -0,0 +1,5 @@
#group,false,false,true,false
#datatype,string,long,string,long
#default,_result,,,
,result,table,_field,_value
,,0,summary_serial_number,6
1 #group false false true false
2 #datatype string long string long
3 #default _result
4 result table _field _value
5 0 summary_serial_number 6

View File

@ -0,0 +1,16 @@
🌟 This was machine generated. Do not edit. 🌟
Frame[0] {}
Name:
Dimensions: 2 Fields by 1 Rows
+-----------------------+----------------+
| Name: _field | Name: _value |
| Labels: | Labels: |
| Type: []*string | Type: []*int64 |
+-----------------------+----------------+
| summary_serial_number | 6 |
+-----------------------+----------------+
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=QVJST1cxAAD/////kAEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAHQAAAADAAAATAAAACgAAAAEAAAA+P7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAAAY////CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAADj///8IAAAADAAAAAIAAAB7fQAABAAAAG1ldGEAAAAAAgAAAIQAAAAEAAAAlv///xQAAAA8AAAARAAAAAAAAgFIAAAAAQAAAAQAAACE////CAAAABAAAAAGAAAAX3ZhbHVlAAAEAAAAbmFtZQAAAAAAAAAACAAMAAgABwAIAAAAAAAAAUAAAAAGAAAAX3ZhbHVlAAAAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAARAAAAEgAAAAAAAUBRAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAGAAAAX2ZpZWxkAAAEAAAAbmFtZQAAAAAAAAAABAAEAAQAAAAGAAAAX2ZpZWxkAAD/////yAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAACgAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAGgAAAABAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAACAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABUAAABzdW1tYXJ5X3NlcmlhbF9udW1iZXIAAAAGAAAAAAAAABAAAAAMABQAEgAMAAgABAAMAAAAEAAAACwAAAA8AAAAAAADAAEAAACgAQAAAAAAANAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoADAAAAAgABAAKAAAACAAAAHQAAAADAAAATAAAACgAAAAEAAAA+P7//wgAAAAMAAAAAAAAAAAAAAAFAAAAcmVmSWQAAAAY////CAAAAAwAAAAAAAAAAAAAAAQAAABuYW1lAAAAADj///8IAAAADAAAAAIAAAB7fQAABAAAAG1ldGEAAAAAAgAAAIQAAAAEAAAAlv///xQAAAA8AAAARAAAAAAAAgFIAAAAAQAAAAQAAACE////CAAAABAAAAAGAAAAX3ZhbHVlAAAEAAAAbmFtZQAAAAAAAAAACAAMAAgABwAIAAAAAAAAAUAAAAAGAAAAX3ZhbHVlAAAAABIAGAAUABMAEgAMAAAACAAEABIAAAAUAAAARAAAAEgAAAAAAAUBRAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAGAAAAX2ZpZWxkAAAEAAAAbmFtZQAAAAAAAAAABAAEAAQAAAAGAAAAX2ZpZWxkAADAAQAAQVJST1cx