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

Function createStringPredicate

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

Source from the content-addressed store, hash-verified

2061}
2062
2063func createStringPredicate(op traceql.Operator, operands traceql.Operands) (parquetquery.Predicate, error) {
2064 if pred, handled := createExistencePredicate(op); handled {
2065 return pred, nil
2066 }
2067
2068 switch operands[0].Type {
2069 case traceql.TypeString:
2070 s := operands[0].EncodeToString(false)
2071
2072 switch op {
2073 case traceql.OpEqual:
2074 return parquetquery.NewStringEqualPredicate(s), nil
2075 case traceql.OpNotEqual:
2076 return parquetquery.NewStringNotEqualPredicate(s), nil
2077 case traceql.OpRegex:
2078 return parquetquery.NewRegexInPredicate([]string{s})
2079 case traceql.OpNotRegex:
2080 return parquetquery.NewRegexNotInPredicate([]string{s})
2081 case traceql.OpGreater:
2082 return parquetquery.NewStringGreaterPredicate([]byte(s)), nil
2083 case traceql.OpGreaterEqual:
2084 return parquetquery.NewStringGreaterEqualPredicate([]byte(s)), nil
2085 case traceql.OpLess:
2086 return parquetquery.NewStringLessPredicate([]byte(s)), nil
2087 case traceql.OpLessEqual:
2088 return parquetquery.NewStringLessEqualPredicate([]byte(s)), nil
2089 default:
2090 return nil, fmt.Errorf("operator not supported for strings: %+v", op)
2091 }
2092 case traceql.TypeStringArray:
2093 strs, _ := operands[0].StringArray()
2094 switch op {
2095 case traceql.OpEqual, traceql.OpIn:
2096 return parquetquery.NewStringInPredicate(strs), nil
2097 case traceql.OpNotEqual, traceql.OpNotIn:
2098 return parquetquery.NewStringNotInPredicate(strs), nil
2099 case traceql.OpRegex, traceql.OpRegexMatchAny:
2100 return parquetquery.NewRegexInPredicate(strs)
2101 case traceql.OpNotRegex, traceql.OpRegexMatchNone:
2102 return parquetquery.NewRegexNotInPredicate(strs)
2103 default:
2104 return nil, fmt.Errorf("operator not supported for strings arrays: %+v", op)
2105 }
2106 default:
2107 return nil, fmt.Errorf("operand is not a string or string array: %s", operands[0])
2108 }
2109}
2110
2111func createBytesPredicate(op traceql.Operator, operands traceql.Operands, isSpan bool) (parquetquery.Predicate, error) {
2112 if pred, handled := createExistencePredicate(op); handled {

Callers 7

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