mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 03:12:13 +08:00
SQL Expressions: (Chore) Update code for latest plugin-sdk data pkg (#100425)
Use new NilAt and SetRefId methods
This commit is contained in:
@ -45,11 +45,11 @@ func TestQueryFrames(t *testing.T) {
|
|||||||
name: "query all rows from single input frame",
|
name: "query all rows from single input frame",
|
||||||
query: `SELECT * FROM inputFrameRefId LIMIT 1;`,
|
query: `SELECT * FROM inputFrameRefId LIMIT 1;`,
|
||||||
input_frames: []*data.Frame{
|
input_frames: []*data.Frame{
|
||||||
setRefID(data.NewFrame(
|
data.NewFrame(
|
||||||
"",
|
"",
|
||||||
//nolint:misspell
|
//nolint:misspell
|
||||||
data.NewField("OSS Projects with Typos", nil, []string{"Garfana", "Pormetheus"}),
|
data.NewField("OSS Projects with Typos", nil, []string{"Garfana", "Pormetheus"}),
|
||||||
), "inputFrameRefId"),
|
).SetRefID("inputFrameRefId"),
|
||||||
},
|
},
|
||||||
expected: data.NewFrame(
|
expected: data.NewFrame(
|
||||||
"sqlExpressionRefId",
|
"sqlExpressionRefId",
|
||||||
@ -174,8 +174,3 @@ func TestQueryFramesDateTimeSelect(t *testing.T) {
|
|||||||
func p[T any](v T) *T {
|
func p[T any](v T) *T {
|
||||||
return &v
|
return &v
|
||||||
}
|
}
|
||||||
|
|
||||||
func setRefID(f *data.Frame, refID string) *data.Frame {
|
|
||||||
f.RefID = refID
|
|
||||||
return f
|
|
||||||
}
|
|
||||||
|
@ -410,65 +410,3 @@ func fieldValFromRowVal(fieldType data.FieldType, val interface{}) (interface{},
|
|||||||
return nil, fmt.Errorf("unsupported field type %s for val %v", fieldType, val)
|
return nil, fmt.Errorf("unsupported field type %s for val %v", fieldType, val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Is the field nilAt the index. Can panic if out of range.
|
|
||||||
// TODO: Maybe this should be a method on data.Field?
|
|
||||||
func nilAt(field data.Field, at int) bool {
|
|
||||||
if !field.Nullable() {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
switch field.Type() {
|
|
||||||
case data.FieldTypeNullableInt8:
|
|
||||||
v := field.At(at).(*int8)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableUint8:
|
|
||||||
v := field.At(at).(*uint8)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableInt16:
|
|
||||||
v := field.At(at).(*int16)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableUint16:
|
|
||||||
v := field.At(at).(*uint16)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableInt32:
|
|
||||||
v := field.At(at).(*int32)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableUint32:
|
|
||||||
v := field.At(at).(*uint32)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableInt64:
|
|
||||||
v := field.At(at).(*int64)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableUint64:
|
|
||||||
v := field.At(at).(*uint64)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableFloat64:
|
|
||||||
v := field.At(at).(*float64)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableString:
|
|
||||||
v := field.At(at).(*string)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableTime:
|
|
||||||
v := field.At(at).(*time.Time)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
case data.FieldTypeNullableBool:
|
|
||||||
v := field.At(at).(*bool)
|
|
||||||
return v == nil
|
|
||||||
|
|
||||||
default:
|
|
||||||
// Either it's not a nullable type or it's unsupported
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -85,7 +85,7 @@ func (ri *rowIter) Next(_ *mysql.Context) (mysql.Row, error) {
|
|||||||
// the value from each column at the current row index.
|
// the value from each column at the current row index.
|
||||||
row := make(mysql.Row, len(ri.ft.Frame.Fields))
|
row := make(mysql.Row, len(ri.ft.Frame.Fields))
|
||||||
for colIndex, field := range ri.ft.Frame.Fields {
|
for colIndex, field := range ri.ft.Frame.Fields {
|
||||||
if nilAt(*field, ri.row) {
|
if field.NilAt(ri.row) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
row[colIndex], _ = field.ConcreteAt(ri.row)
|
row[colIndex], _ = field.ConcreteAt(ri.row)
|
||||||
|
Reference in New Issue
Block a user