Merge "Add scalar() function."

This commit is contained in:
Julius Volz 2013-10-16 15:49:54 +02:00 committed by Gerrit Code Review
commit c7daedc840

View file

@ -16,6 +16,7 @@ package ast
import (
"errors"
"fmt"
"math"
"sort"
"time"
@ -255,6 +256,15 @@ func sampleVectorImpl(timestamp time.Time, view *viewAdapter, args []Node) inter
}
}
// === scalar(node *VectorNode) Scalar ===
func scalarImpl(timestamp time.Time, view *viewAdapter, args []Node) interface{} {
v := args[0].(VectorNode).Eval(timestamp, view)
if len(v) != 1 {
return clientmodel.SampleValue(math.NaN())
}
return clientmodel.SampleValue(v[0].Value)
}
var functions = map[string]*Function{
"delta": {
name: "delta",
@ -274,6 +284,12 @@ var functions = map[string]*Function{
returnType: VECTOR,
callFn: sampleVectorImpl,
},
"scalar": {
name: "scalar",
argTypes: []ExprType{VECTOR},
returnType: SCALAR,
callFn: scalarImpl,
},
"sort": {
name: "sort",
argTypes: []ExprType{VECTOR},