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

Function createBoolPredicate

tempodb/encoding/vparquet3/block_traceql.go:2387–2418  ·  view source on GitHub ↗
(op traceql.Operator, operands traceql.Operands)

Source from the content-addressed store, hash-verified

2385}
2386
2387func createBoolPredicate(op traceql.Operator, operands traceql.Operands) (parquetquery.Predicate, error) {
2388 if pred, handled := createExistencePredicate(op); handled {
2389 return pred, nil
2390 }
2391
2392 switch operands[0].Type {
2393 case traceql.TypeBoolean:
2394 b, _ := operands[0].Bool()
2395
2396 switch op {
2397 case traceql.OpEqual:
2398 return parquetquery.NewBoolEqualPredicate(b), nil
2399 case traceql.OpNotEqual:
2400 return parquetquery.NewBoolNotEqualPredicate(b), nil
2401 default:
2402 return nil, fmt.Errorf("operator not supported for booleans: %+v", op)
2403 }
2404 case traceql.TypeBooleanArray:
2405 bools, _ := operands[0].BooleanArray()
2406
2407 switch op {
2408 case traceql.OpEqual, traceql.OpIn:
2409 return parquetquery.NewBoolInPredicate(bools), nil
2410 case traceql.OpNotEqual, traceql.OpNotIn:
2411 return parquetquery.NewBoolNotInPredicate(bools), nil
2412 default:
2413 return nil, fmt.Errorf("operator not supported for boolean arrays: %+v", op)
2414 }
2415 default:
2416 return nil, fmt.Errorf("oparand is not bool or bool array: %+v", operands[0].EncodeToString(false))
2417 }
2418}
2419
2420func createAttributeIterator(makeIter makeIterFn, conditions []traceql.Condition,
2421 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