partition_slice_builder: add range mutating methods
This commit is contained in:
@@ -29,6 +29,7 @@ partition_slice_builder::partition_slice_builder(const schema& schema, query::pa
|
||||
: _regular_columns(std::move(slice.regular_columns))
|
||||
, _static_columns(std::move(slice.static_columns))
|
||||
, _row_ranges(std::move(slice._row_ranges))
|
||||
, _specific_ranges(std::move(slice._specific_ranges))
|
||||
, _schema(schema)
|
||||
, _options(std::move(slice.options))
|
||||
{
|
||||
@@ -72,7 +73,8 @@ partition_slice_builder::build() {
|
||||
std::move(ranges),
|
||||
std::move(static_columns),
|
||||
std::move(regular_columns),
|
||||
std::move(_options)
|
||||
std::move(_options),
|
||||
std::move(_specific_ranges)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -97,6 +99,22 @@ partition_slice_builder::with_ranges(std::vector<query::clustering_range> ranges
|
||||
return *this;
|
||||
}
|
||||
|
||||
partition_slice_builder&
|
||||
partition_slice_builder::mutate_ranges(std::function<void(std::vector<query::clustering_range>&)> func) {
|
||||
if (_row_ranges) {
|
||||
func(*_row_ranges);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
partition_slice_builder&
|
||||
partition_slice_builder::mutate_specific_ranges(std::function<void(query::specific_ranges&)> func) {
|
||||
if (_specific_ranges) {
|
||||
func(*_specific_ranges);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
partition_slice_builder&
|
||||
partition_slice_builder::with_no_regular_columns() {
|
||||
_regular_columns = query::column_id_vector();
|
||||
|
||||
@@ -40,6 +40,7 @@ class partition_slice_builder {
|
||||
std::optional<query::column_id_vector> _regular_columns;
|
||||
std::optional<query::column_id_vector> _static_columns;
|
||||
std::optional<std::vector<query::clustering_range>> _row_ranges;
|
||||
std::unique_ptr<query::specific_ranges> _specific_ranges;
|
||||
const schema& _schema;
|
||||
query::partition_slice::option_set _options;
|
||||
public:
|
||||
@@ -52,6 +53,10 @@ public:
|
||||
partition_slice_builder& with_no_regular_columns();
|
||||
partition_slice_builder& with_range(query::clustering_range range);
|
||||
partition_slice_builder& with_ranges(std::vector<query::clustering_range>);
|
||||
// noop if no ranges have been set yet
|
||||
partition_slice_builder& mutate_ranges(std::function<void(std::vector<query::clustering_range>&)>);
|
||||
// noop if no specific ranges have been set yet
|
||||
partition_slice_builder& mutate_specific_ranges(std::function<void(query::specific_ranges&)>);
|
||||
partition_slice_builder& without_partition_key_columns();
|
||||
partition_slice_builder& without_clustering_key_columns();
|
||||
partition_slice_builder& reversed();
|
||||
|
||||
Reference in New Issue
Block a user