( makeIter, makeNilIter makeIterFn, conditions []traceql.Condition, allConditions bool, dedicatedColumns backend.DedicatedColumns, selectAll bool, )
| 742 | } |
| 743 | |
| 744 | func createEventIterators( |
| 745 | makeIter, makeNilIter makeIterFn, |
| 746 | conditions []traceql.Condition, |
| 747 | allConditions bool, |
| 748 | dedicatedColumns backend.DedicatedColumns, |
| 749 | selectAll bool, |
| 750 | ) (required, optional []parquetquery.Iterator, err error) { |
| 751 | // TODO - Preserving compatibility with original fetch. |
| 752 | // If there are no event-level conditions we do nothing. |
| 753 | // Which means we are ignoring event data during select all. |
| 754 | if len(conditions) == 0 { |
| 755 | return nil, nil, nil |
| 756 | } |
| 757 | |
| 758 | var ( |
| 759 | columnSelectAs = map[string]string{} |
| 760 | columnPredicates = map[string][]parquetquery.Predicate{} |
| 761 | genericConditions []traceql.Condition |
| 762 | columnMapping = dedicatedColumnsToColumnMapping(dedicatedColumns, backend.DedicatedColumnScopeEvent) |
| 763 | ) |
| 764 | |
| 765 | addPredicate := func(columnPath string, p parquetquery.Predicate) { |
| 766 | columnPredicates[columnPath] = append(columnPredicates[columnPath], p) |
| 767 | } |
| 768 | |
| 769 | specialCase := func(cond traceql.Condition, columnPath string) (handled bool) { |
| 770 | // Operands that need special handling. |
| 771 | switch cond.Op { |
| 772 | case traceql.OpNone: |
| 773 | addPredicate(columnPath, nil) // No filtering |
| 774 | columnSelectAs[columnPath] = cond.Attribute.Name |
| 775 | return true |
| 776 | case traceql.OpExists: |
| 777 | addPredicate(columnPath, &parquetquery.SkipNilsPredicate{}) |
| 778 | columnSelectAs[columnPath] = cond.Attribute.Name |
| 779 | return true |
| 780 | case traceql.OpNotExists: |
| 781 | optional = append(optional, makeIter(columnPath, parquetquery.NewNilValuePredicate(), cond.Attribute.Name)) |
| 782 | return true |
| 783 | default: |
| 784 | return false |
| 785 | } |
| 786 | } |
| 787 | |
| 788 | for _, cond := range conditions { |
| 789 | switch cond.Attribute.Intrinsic { |
| 790 | case traceql.IntrinsicEventName: |
| 791 | pred, err := createStringPredicate(cond.Op, cond.Operands) |
| 792 | if err != nil { |
| 793 | return nil, nil, err |
| 794 | } |
| 795 | optional = append(optional, makeIter(ColumnPathEventName, pred, ColumnPathEventName)) |
| 796 | continue |
| 797 | case traceql.IntrinsicEventTimeSinceStart: |
| 798 | pred, err := createIntPredicate(cond.Op, cond.Operands) |
| 799 | if err != nil { |
| 800 | return nil, nil, err |
| 801 | } |
no test coverage detected