Merge branch 'dahankzter-master'
commit
4d2915b49e
|
@ -8,6 +8,7 @@
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
- [3013](https://github.com/influxdb/influxdb/issues/3013): Panic error with inserting values with commas
|
- [3013](https://github.com/influxdb/influxdb/issues/3013): Panic error with inserting values with commas
|
||||||
|
- [#2956](https://github.com/influxdb/influxdb/issues/2956): Type mismatch in derivative
|
||||||
- [#2908](https://github.com/influxdb/influxdb/issues/2908): Field mismatch error messages need to be updated
|
- [#2908](https://github.com/influxdb/influxdb/issues/2908): Field mismatch error messages need to be updated
|
||||||
- [#2931](https://github.com/influxdb/influxdb/pull/2931): Services and reporting should wait until cluster has leader.
|
- [#2931](https://github.com/influxdb/influxdb/pull/2931): Services and reporting should wait until cluster has leader.
|
||||||
- [#2943](https://github.com/influxdb/influxdb/issues/2943): Ensure default retention policies are fully replicated
|
- [#2943](https://github.com/influxdb/influxdb/issues/2943): Ensure default retention policies are fully replicated
|
||||||
|
|
|
@ -3,6 +3,7 @@ package influxql
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"hash/fnv"
|
"hash/fnv"
|
||||||
"math"
|
"math"
|
||||||
"sort"
|
"sort"
|
||||||
|
@ -408,7 +409,8 @@ func (m *MapReduceJob) processRawQueryDerivative(lastValueFromPreviousChunk *raw
|
||||||
|
|
||||||
// Calculate the derivative of successive points by dividing the difference
|
// Calculate the derivative of successive points by dividing the difference
|
||||||
// of each value by the elapsed time normalized to the interval
|
// of each value by the elapsed time normalized to the interval
|
||||||
diff := v.Values.(float64) - lastValueFromPreviousChunk.Values.(float64)
|
diff := i64tof64(v.Values) - i64tof64(lastValueFromPreviousChunk.Values)
|
||||||
|
|
||||||
elapsed := v.Time - lastValueFromPreviousChunk.Time
|
elapsed := v.Time - lastValueFromPreviousChunk.Time
|
||||||
|
|
||||||
value := 0.0
|
value := 0.0
|
||||||
|
@ -468,7 +470,7 @@ func (m *MapReduceJob) processDerivative(results [][]interface{}) [][]interface{
|
||||||
}
|
}
|
||||||
|
|
||||||
elapsed := cur[0].(time.Time).Sub(prev[0].(time.Time))
|
elapsed := cur[0].(time.Time).Sub(prev[0].(time.Time))
|
||||||
diff := cur[1].(float64) - prev[1].(float64)
|
diff := i64tof64(cur[1]) - i64tof64(prev[1])
|
||||||
value := 0.0
|
value := 0.0
|
||||||
if elapsed > 0 {
|
if elapsed > 0 {
|
||||||
value = float64(diff) / (float64(elapsed) / float64(m.derivativeInterval()))
|
value = float64(diff) / (float64(elapsed) / float64(m.derivativeInterval()))
|
||||||
|
@ -930,6 +932,16 @@ func (e *Executor) execute(out chan *Row) {
|
||||||
close(out)
|
close(out)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func i64tof64(v interface{}) float64 {
|
||||||
|
switch v.(type) {
|
||||||
|
case int64:
|
||||||
|
return float64(v.(int64))
|
||||||
|
case float64:
|
||||||
|
return v.(float64)
|
||||||
|
}
|
||||||
|
panic(fmt.Sprintf("expected either int64 or float64, got %v", v))
|
||||||
|
}
|
||||||
|
|
||||||
// Row represents a single row returned from the execution of a statement.
|
// Row represents a single row returned from the execution of a statement.
|
||||||
type Row struct {
|
type Row struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
|
@ -206,6 +206,36 @@ func TestProcessDerivative(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "float derivatives",
|
||||||
|
fn: "derivative",
|
||||||
|
interval: "1d",
|
||||||
|
in: [][]interface{}{
|
||||||
|
[]interface{}{
|
||||||
|
time.Unix(0, 0), 1.0,
|
||||||
|
},
|
||||||
|
[]interface{}{
|
||||||
|
time.Unix(0, 0).Add(24 * time.Hour), int64(3),
|
||||||
|
},
|
||||||
|
[]interface{}{
|
||||||
|
time.Unix(0, 0).Add(48 * time.Hour), int64(5),
|
||||||
|
},
|
||||||
|
[]interface{}{
|
||||||
|
time.Unix(0, 0).Add(72 * time.Hour), int64(9),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
exp: [][]interface{}{
|
||||||
|
[]interface{}{
|
||||||
|
time.Unix(0, 0).Add(24 * time.Hour), 2.0,
|
||||||
|
},
|
||||||
|
[]interface{}{
|
||||||
|
time.Unix(0, 0).Add(48 * time.Hour), 2.0,
|
||||||
|
},
|
||||||
|
[]interface{}{
|
||||||
|
time.Unix(0, 0).Add(72 * time.Hour), 4.0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
|
Loading…
Reference in New Issue