69135 {
69136 if (m_idx == matchers.size()) {
69137
69138 return true;
69139 }
69140
69141 idx_t previous_binding_count = bindings.size();
69142 for (idx_t e_idx = 0; e_idx < entries.size(); e_idx++) {
69143
69144 if (excluded_entries.find(e_idx) != excluded_entries.end()) {
69145
69146 continue;
69147 }
69148
69149 if (matchers[m_idx]->Match(entries[e_idx], bindings)) {
69150
69151
69152
69153 unordered_set<idx_t> new_excluded_entries;
69154 new_excluded_entries = excluded_entries;
69155 new_excluded_entries.insert(e_idx);
69156
69157 if (MatchRecursive(matchers, entries, bindings, new_excluded_entries, m_idx + 1)) {
69158
69159 return true;
69160 } else {
69161
69162 bindings.erase(bindings.begin() + NumericCast<int64_t>(previous_binding_count), bindings.end());
69163 }
69164 }
69165 }
69166 return false;
69167 }