(op traceql.Operator, operands traceql.Operands)
| 2618 | } |
| 2619 | |
| 2620 | func 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 | |
| 2668 | func createBytesPredicate(op traceql.Operator, operands traceql.Operands, isSpan bool) (parquetquery.Predicate, error) { |
| 2669 | if pred, handled := createExistencePredicate(op); handled { |
no test coverage detected