MCPcopy
hub / github.com/grafana/tempo / createBoolPredicate

Function createBoolPredicate

tempodb/encoding/vparquet5/block_traceql.go:3029–3060  ·  view source on GitHub ↗
(op traceql.Operator, operands traceql.Operands)

Source from the content-addressed store, hash-verified

3027}
3028
3029func createBoolPredicate(op traceql.Operator, operands traceql.Operands) (parquetquery.Predicate, error) {
3030 if pred, handled := createExistencePredicate(op); handled {
3031 return pred, nil
3032 }
3033
3034 switch operands[0].Type {
3035 case traceql.TypeBoolean:
3036 b, _ := operands[0].Bool()
3037
3038 switch op {
3039 case traceql.OpEqual:
3040 return parquetquery.NewBoolEqualPredicate(b), nil
3041 case traceql.OpNotEqual:
3042 return parquetquery.NewBoolNotEqualPredicate(b), nil
3043 default:
3044 return nil, fmt.Errorf("operator not supported for booleans: %+v", op)
3045 }
3046 case traceql.TypeBooleanArray:
3047 bools, _ := operands[0].BooleanArray()
3048
3049 switch op {
3050 case traceql.OpEqual, traceql.OpIn:
3051 return parquetquery.NewBoolInPredicate(bools), nil
3052 case traceql.OpNotEqual, traceql.OpNotIn:
3053 return parquetquery.NewBoolNotInPredicate(bools), nil
3054 default:
3055 return nil, fmt.Errorf("operator not supported for boolean arrays: %+v", op)
3056 }
3057 default:
3058 return nil, fmt.Errorf("oparand is not bool or bool array: %+v", operands[0].EncodeToString(false))
3059 }
3060}
3061
3062func createAttributeIterator(makeIter makeIterFn, conditions []traceql.Condition,
3063 definitionLevel int,

Callers 4

createPredicateFunction · 0.70
createAttributeIteratorFunction · 0.70

Calls 8

NewBoolEqualPredicateFunction · 0.92
NewBoolNotEqualPredicateFunction · 0.92
NewBoolInPredicateFunction · 0.92
NewBoolNotInPredicateFunction · 0.92
BoolMethod · 0.80
BooleanArrayMethod · 0.80
EncodeToStringMethod · 0.80
createExistencePredicateFunction · 0.70

Tested by

no test coverage detected