promql: export String value

This commit is contained in:
Fabian Reinartz 2016-12-24 11:25:26 +01:00
parent ac5d3bc05e
commit 6315d00942
2 changed files with 17 additions and 17 deletions

View File

@ -54,7 +54,7 @@ type Value interface {
func (Matrix) Type() ValueType { return ValueTypeMatrix }
func (Vector) Type() ValueType { return ValueTypeVector }
func (Scalar) Type() ValueType { return ValueTypeScalar }
func (stringVal) Type() ValueType { return ValueTypeString }
func (String) Type() ValueType { return ValueTypeString }
// ValueType describes a type of a value.
type ValueType string
@ -68,13 +68,13 @@ const (
ValueTypeString = "string"
)
type stringVal struct {
s string
t int64
type String struct {
V string
T int64
}
func (s stringVal) String() string {
return s.s
func (s String) String() string {
return s.V
}
// Scalar is a data point that's explicitly not associated with a metric.
@ -678,9 +678,9 @@ func (ev *evaluator) evalMatrix(e Expr) Matrix {
}
// evalString attempts to evaluate e to a string value and errors otherwise.
func (ev *evaluator) evalString(e Expr) stringVal {
func (ev *evaluator) evalString(e Expr) String {
val := ev.eval(e)
sv, ok := val.(stringVal)
sv, ok := val.(String)
if !ok {
ev.errorf("expected string but got %s", documentedType(val.Type()))
}
@ -756,7 +756,7 @@ func (ev *evaluator) eval(expr Expr) Value {
return ev.eval(e.Expr)
case *StringLiteral:
return stringVal{s: e.Val, t: ev.Timestamp}
return String{V: e.Val, T: ev.Timestamp}
case *UnaryExpr:
se := ev.evalOneOf(e.Expr, ValueTypeScalar, ValueTypeVector)
@ -1259,7 +1259,7 @@ func (ev *evaluator) aggregation(op itemType, grouping []string, without bool, k
}
var valueLabel string
if op == itemCountValues {
valueLabel = ev.evalString(param).s
valueLabel = ev.evalString(param).V
if !without {
grouping = append(grouping, valueLabel)
}

View File

@ -788,10 +788,10 @@ func funcChanges(ev *evaluator, args Expressions) Value {
func funcLabelReplace(ev *evaluator, args Expressions) Value {
var (
Vector = ev.evalVector(args[0])
dst = ev.evalString(args[1]).s
repl = ev.evalString(args[2]).s
src = ev.evalString(args[3]).s
regexStr = ev.evalString(args[4]).s
dst = ev.evalString(args[1]).V
repl = ev.evalString(args[2]).V
src = ev.evalString(args[3]).V
regexStr = ev.evalString(args[4]).V
)
regex, err := regexp.Compile("^(?:" + regexStr + ")$")