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

Function createBoolPredicate

tempodb/encoding/vparquet4/block_traceql.go:2948–2979  ·  view source on GitHub ↗
(op traceql.Operator, operands traceql.Operands)

Source from the content-addressed store, hash-verified

2946}
2947
2948func createBoolPredicate(op traceql.Operator, operands traceql.Operands) (parquetquery.Predicate, error) {
2949 if pred, handled := createExistencePredicate(op); handled {
2950 return pred, nil
2951 }
2952
2953 switch operands[0].Type {
2954 case traceql.TypeBoolean:
2955 b, _ := operands[0].Bool()
2956
2957 switch op {
2958 case traceql.OpEqual:
2959 return parquetquery.NewBoolEqualPredicate(b), nil
2960 case traceql.OpNotEqual:
2961 return parquetquery.NewBoolNotEqualPredicate(b), nil
2962 default:
2963 return nil, fmt.Errorf("operator not supported for booleans: %+v", op)
2964 }
2965 case traceql.TypeBooleanArray:
2966 bools, _ := operands[0].BooleanArray()
2967
2968 switch op {
2969 case traceql.OpEqual, traceql.OpIn:
2970 return parquetquery.NewBoolInPredicate(bools), nil
2971 case traceql.OpNotEqual, traceql.OpNotIn:
2972 return parquetquery.NewBoolNotInPredicate(bools), nil
2973 default:
2974 return nil, fmt.Errorf("operator not supported for boolean arrays: %+v", op)
2975 }
2976 default:
2977 return nil, fmt.Errorf("oparand is not bool or bool array: %+v", operands[0].EncodeToString(false))
2978 }
2979}
2980
2981func createAttributeIterator(makeIter makeIterFn, conditions []traceql.Condition,
2982 definitionLevel int,

Callers 3

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