24#ifndef MYSQL_SETS_NESTED_SET_UNION_ITERATOR_H
25#define MYSQL_SETS_NESTED_SET_UNION_ITERATOR_H
46template <Is_nested_set Source1_tp, Is_nested_set Source2_tp>
47 requires Is_compatible_set<Source1_tp, Source2_tp>
50 Nested_set_union_iterator<Source1_tp, Source2_tp>, Source1_tp,
51 Source2_tp, Binary_operation::op_union> {
76 [[nodiscard]]
auto get()
const {
106 m_order = std::strong_ordering::less;
110 m_order = std::strong_ordering::greater;
113 this->m_iterator2->first);
Self_tp Self_t
Definition: iterator_interface.h:372
auto end() const
Return a valid end iterator, even if !has_object().
Definition: view_sources.h:273
Common base class for the forward iterators over union view, intersection view, and subtraction view ...
Definition: nested_set_binary_operation_iterator_base.h:54
Source2_tp Source2_t
Definition: nested_set_binary_operation_iterator_base.h:57
typename Source2_t::Const_iterator_t Iterator2_t
Definition: nested_set_binary_operation_iterator_base.h:63
typename Source1_tp::Key_traits_t Key_traits_t
Definition: nested_set_binary_operation_iterator_base.h:64
Value_t make_value2() const
Return the current value, computed as operation(nullptr, m_iterator2).
Definition: nested_set_binary_operation_iterator_base.h:124
std::pair< const Key_t, Mapped_t > Value_t
Definition: nested_set_binary_operation_iterator_base.h:69
Value_t make_value1() const
Return the current value, computed as operation(m_iterator1, nullptr).
Definition: nested_set_binary_operation_iterator_base.h:119
Iterator1_t m_iterator1
Iterator into the first source.
Definition: nested_set_binary_operation_iterator_base.h:137
Source1_tp Source1_t
Definition: nested_set_binary_operation_iterator_base.h:56
Iterator2_t m_iterator2
Iterator into the second source.
Definition: nested_set_binary_operation_iterator_base.h:142
Opt_source1_t m_source1
The first source.
Definition: nested_set_binary_operation_iterator_base.h:129
const auto & iterator2() const
Return const reference to the current iterator into the second set.
Definition: nested_set_binary_operation_iterator_base.h:106
Opt_source2_t m_source2
The second source.
Definition: nested_set_binary_operation_iterator_base.h:132
typename Source1_t::Const_iterator_t Iterator1_t
Definition: nested_set_binary_operation_iterator_base.h:62
Value_t make_value() const
Return the current value, computed as operation(m_iterator1, m_iterator2).
Definition: nested_set_binary_operation_iterator_base.h:113
const auto & iterator1() const
Return const reference to the current iterator into the first set.
Definition: nested_set_binary_operation_iterator_base.h:100
Iterator over the union of two sets.
Definition: nested_set_union_iterator.h:51
Source2_tp Source2_t
Definition: nested_set_binary_operation_iterator_base.h:57
Nested_set_union_iterator()=default
bool is_equal(const Nested_set_union_iterator &other) const
Definition: nested_set_union_iterator.h:91
void compute_order()
Store less, equals, or greater in m_order, according to how m_iterator1 compares to m_iterator2.
Definition: nested_set_union_iterator.h:101
Nested_set_union_iterator(const Source1_t *source1, const Source2_t *source2, const Iterator1_t &iterator1, const Iterator2_t &iterator2)
Definition: nested_set_union_iterator.h:68
typename Source2_t::Const_iterator_t Iterator2_t
Definition: nested_set_binary_operation_iterator_base.h:63
void next()
Move to the next iterator position.
Definition: nested_set_union_iterator.h:84
Source1_tp Source1_t
Definition: nested_set_binary_operation_iterator_base.h:56
auto get() const
Definition: nested_set_union_iterator.h:76
Nested_set_union_iterator< Source1_tp, Source2_tp > Self_t
Definition: nested_set_union_iterator.h:52
typename Source1_t::Const_iterator_t Iterator1_t
Definition: nested_set_binary_operation_iterator_base.h:62
std::strong_ordering m_order
The relative order of the two current iterator positions.
Definition: nested_set_union_iterator.h:119
static int cmp(Bigint *a, Bigint *b)
Definition: dtoa.cc:1064
static bool equal(const Item *i1, const Item *i2, const Field *f2)
Definition: sql_select.cc:3935