diff --git a/core/include/c_api/constants.h b/core/include/c_api/constants.h index 7def14b8..9187c1d8 100644 --- a/core/include/c_api/constants.h +++ b/core/include/c_api/constants.h @@ -37,7 +37,7 @@ #include /** Version. */ -#define TILEDB_VERSION "0.3.1" +#define TILEDB_VERSION "0.3.2" /**@{*/ /** Return code. */ diff --git a/core/src/array/array_read_state.cc b/core/src/array/array_read_state.cc index 0e16b8f5..4d6b7e01 100644 --- a/core/src/array/array_read_state.cc +++ b/core/src/array/array_read_state.cc @@ -1510,12 +1510,26 @@ int ArrayReadState::sort_fragment_cell_ranges( popped = pq.top(); pq.pop(); - // Last range - just insert it into the results and stop + // Last range - insert it into the results and get the next range + // for that fragment if(pq.empty()) { popped->export_to(result); fragment_cell_ranges.push_back(result); + fid = popped->fragment_id_; delete popped; - break; + + if(rid[fid] == rlen[fid]) { + break; + } else { + pq_fragment_cell_range = new PQFragmentCellRange( + array_schema_, + &fragment_read_states_); + pq_fragment_cell_range->import_from( + unsorted_fragment_cell_ranges[fid][rid[fid]]); + pq.push(pq_fragment_cell_range); + ++rid[fid]; + continue; + } } // Mark the second entry (now top) as top diff --git a/core/src/fragment/read_state.cc b/core/src/fragment/read_state.cc index 7eedf981..183d316d 100644 --- a/core/src/fragment/read_state.cc +++ b/core/src/fragment/read_state.cc @@ -229,6 +229,9 @@ void ReadState::reset() { done_ = false; search_tile_pos_ = -1; compute_tile_search_range(); + + for(int i=0; i