diff --git a/src/filter_result_iterator.cpp b/src/filter_result_iterator.cpp index 6076807f..f2aeb7cd 100644 --- a/src/filter_result_iterator.cpp +++ b/src/filter_result_iterator.cpp @@ -1074,6 +1074,19 @@ uint32_t filter_result_iterator_t::to_filter_id_array(uint32_t*& filter_array) { return 0; } + if (!filter_node->isOperator) { + const filter a_filter = filter_node->filter_exp; + field f = index->search_schema.at(a_filter.field_name); + + if (!a_filter.referenced_collection_name.empty() || a_filter.field_name == "id" || + (index->field_is_indexed(a_filter.field_name) && (f.is_integer() || f.is_float() || f.is_bool()))) { + filter_array = new uint32_t[filter_result.count]; + std::copy(filter_result.docs, filter_result.docs + filter_result.count, filter_array); + + return filter_result.count; + } + } + std::vector filter_ids; do { filter_ids.push_back(seq_id);