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

Function createStringPredicate

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

Source from the content-addressed store, hash-verified

2699}
2700
2701func createStringPredicate(op traceql.Operator, operands traceql.Operands) (parquetquery.Predicate, error) {
2702 if pred, handled := createExistencePredicate(op); handled {
2703 return pred, nil
2704 }
2705
2706 switch operands[0].Type {
2707 case traceql.TypeString:
2708 s := operands[0].EncodeToString(false)
2709
2710 switch op {
2711 case traceql.OpEqual:
2712 return parquetquery.NewStringEqualPredicate(s), nil
2713 case traceql.OpNotEqual:
2714 return parquetquery.NewStringNotEqualPredicate(s), nil
2715 case traceql.OpRegex:
2716 return parquetquery.NewRegexInPredicate([]string{s})
2717 case traceql.OpNotRegex:
2718 return parquetquery.NewRegexNotInPredicate([]string{s})
2719 case traceql.OpGreater:
2720 return parquetquery.NewStringGreaterPredicate([]byte(s)), nil
2721 case traceql.OpGreaterEqual:
2722 return parquetquery.NewStringGreaterEqualPredicate([]byte(s)), nil
2723 case traceql.OpLess:
2724 return parquetquery.NewStringLessPredicate([]byte(s)), nil
2725 case traceql.OpLessEqual:
2726 return parquetquery.NewStringLessEqualPredicate([]byte(s)), nil
2727 default:
2728 return nil, fmt.Errorf("operator not supported for strings: %+v", op)
2729 }
2730 case traceql.TypeStringArray:
2731 strs, _ := operands[0].StringArray()
2732 switch op {
2733 case traceql.OpEqual, traceql.OpIn:
2734 return parquetquery.NewStringInPredicate(strs), nil
2735 case traceql.OpNotEqual, traceql.OpNotIn:
2736 return parquetquery.NewStringNotInPredicate(strs), nil
2737 case traceql.OpRegex, traceql.OpRegexMatchAny:
2738 return parquetquery.NewRegexInPredicate(strs)
2739 case traceql.OpNotRegex, traceql.OpRegexMatchNone:
2740 return parquetquery.NewRegexNotInPredicate(strs)
2741 default:
2742 return nil, fmt.Errorf("operator not supported for strings arrays: %+v", op)
2743 }
2744 default:
2745 return nil, fmt.Errorf("operand is not a string or string array: %s", operands[0])
2746 }
2747}
2748
2749func createBytesPredicate(op traceql.Operator, operands traceql.Operands, isSpan bool) (parquetquery.Predicate, error) {
2750 if pred, handled := createExistencePredicate(op); handled {

Callers 15

createEventIteratorFunction · 0.70
createSpanIteratorFunction · 0.70
createTraceIteratorFunction · 0.70
createPredicateFunction · 0.70
createAttributeIteratorFunction · 0.70
createSpanIteratorsFunction · 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