MCPcopy Create free account
hub / github.com/cortexproject/cortex / unmarshalNode

Function unmarshalNode

pkg/distributed_execution/codec.go:32–196  ·  view source on GitHub ↗
(data []byte)

Source from the content-addressed store, hash-verified

30}
31
32func unmarshalNode(data []byte) (logicalplan.Node, error) {
33 t := jsonNode{}
34 if err := json.Unmarshal(data, &t); err != nil {
35 return nil, err
36 }
37
38 switch t.Type {
39 case logicalplan.VectorSelectorNode:
40 v := &logicalplan.VectorSelector{}
41 if err := json.Unmarshal(t.Data, v); err != nil {
42 return nil, err
43 }
44 var err error
45 for i, m := range v.LabelMatchers {
46 v.LabelMatchers[i], err = labels.NewMatcher(m.Type, m.Name, m.Value)
47 if err != nil {
48 return nil, err
49 }
50 }
51 return v, nil
52 case logicalplan.MatrixSelectorNode:
53 m := &logicalplan.MatrixSelector{}
54 if err := json.Unmarshal(t.Data, m); err != nil {
55 return nil, err
56 }
57 vs, err := unmarshalNode(t.Children[0])
58 if err != nil {
59 return nil, err
60 }
61 m.VectorSelector = vs.(*logicalplan.VectorSelector)
62 return m, nil
63 case logicalplan.AggregationNode:
64 a := &logicalplan.Aggregation{}
65 if err := json.Unmarshal(t.Data, a); err != nil {
66 return nil, err
67 }
68 var err error
69 a.Expr, err = unmarshalNode(t.Children[0])
70 if err != nil {
71 return nil, err
72 }
73 if len(t.Children) > 1 {
74 a.Param, err = unmarshalNode(t.Children[1])
75 if err != nil {
76 return nil, err
77 }
78 }
79 return a, nil
80 case logicalplan.BinaryNode:
81 b := &logicalplan.Binary{}
82 if err := json.Unmarshal(t.Data, b); err != nil {
83 return nil, err
84 }
85 var err error
86 b.LHS, err = unmarshalNode(t.Children[0])
87 if err != nil {
88 return nil, err
89 }

Callers 1

UnmarshalFunction · 0.85

Calls 2

EqualMethod · 0.65
UnmarshalMethod · 0.45

Tested by

no test coverage detected