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

Function createStringPredicate

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

Source from the content-addressed store, hash-verified

2618}
2619
2620func createStringPredicate(op traceql.Operator, operands traceql.Operands) (parquetquery.Predicate, error) {
2621 if pred, handled := createExistencePredicate(op); handled {
2622 return pred, nil
2623 }
2624
2625 switch operands[0].Type {
2626 case traceql.TypeString:
2627 s := operands[0].EncodeToString(false)
2628
2629 switch op {
2630 case traceql.OpEqual:
2631 return parquetquery.NewStringEqualPredicate(s), nil
2632 case traceql.OpNotEqual:
2633 return parquetquery.NewStringNotEqualPredicate(s), nil
2634 case traceql.OpRegex:
2635 return parquetquery.NewRegexInPredicate([]string{s})
2636 case traceql.OpNotRegex:
2637 return parquetquery.NewRegexNotInPredicate([]string{s})
2638 case traceql.OpGreater:
2639 return parquetquery.NewStringGreaterPredicate([]byte(s)), nil
2640 case traceql.OpGreaterEqual:
2641 return parquetquery.NewStringGreaterEqualPredicate([]byte(s)), nil
2642 case traceql.OpLess:
2643 return parquetquery.NewStringLessPredicate([]byte(s)), nil
2644 case traceql.OpLessEqual:
2645 return parquetquery.NewStringLessEqualPredicate([]byte(s)), nil
2646 default:
2647 return nil, fmt.Errorf("operator not supported for strings: %+v", op)
2648 }
2649 case traceql.TypeStringArray:
2650 strs, _ := operands[0].StringArray()
2651 switch op {
2652 case traceql.OpEqual, traceql.OpIn:
2653 return parquetquery.NewStringInPredicate(strs), nil
2654 case traceql.OpNotEqual, traceql.OpNotIn:
2655 return parquetquery.NewStringNotInPredicate(strs), nil
2656 case traceql.OpRegex, traceql.OpRegexMatchAny:
2657 return parquetquery.NewRegexInPredicate(strs)
2658 case traceql.OpNotRegex, traceql.OpRegexMatchNone:
2659 return parquetquery.NewRegexNotInPredicate(strs)
2660 default:
2661 return nil, fmt.Errorf("operator not supported for strings arrays: %+v", op)
2662 }
2663 default:
2664 return nil, fmt.Errorf("operand is not a string or string array: %s", operands[0])
2665 }
2666}
2667
2668func createBytesPredicate(op traceql.Operator, operands traceql.Operands, isSpan bool) (parquetquery.Predicate, error) {
2669 if pred, handled := createExistencePredicate(op); handled {

Callers 11

createEventIteratorFunction · 0.70
createSpanIteratorFunction · 0.70
createTraceIteratorFunction · 0.70
createPredicateFunction · 0.70
createAttributeIteratorFunction · 0.70

Calls 13

NewStringEqualPredicateFunction · 0.92
NewRegexInPredicateFunction · 0.92
NewRegexNotInPredicateFunction · 0.92
NewStringLessPredicateFunction · 0.92
NewStringInPredicateFunction · 0.92
NewStringNotInPredicateFunction · 0.92
EncodeToStringMethod · 0.80
StringArrayMethod · 0.80

Tested by

no test coverage detected