/// Returns the distinct set of column values for each provided column,
/// where each returned value lives in a row matching the provided
/// predicate. All values are deduplicated across row groups in the table.
///
/// If the predicate is empty then all distinct values are returned for the
/// table.
///
/// Returns an error if the provided table does not exist.
///
/// `dst` is intended to allow for some more sophisticated execution,
/// wherein execution can be short-circuited for distinct values that have
/// already been found. Callers can simply provide an empty `BTreeMap` to
/// skip this behaviour.
Returns the distinct set of column values for each provided column,
where each returned value lives in a row matching the provided
predicate. All values are deduplicated across row groups in the table.

If the predicate is empty then all distinct values are returned for the
table.

Returns an error if the provided table does not exist.

`dst` is intended to allow for some more sophisticated execution,
wherein execution can be short-circuited for distinct values that have
already been found. Callers can simply provide an empty `BTreeMap` to
skip this behaviour.
Returns the distinct set of column values for each provided column where each returned value lives in a row matching the provided predicate . All values are deduplicated across row groups in the table . If the predicate is empty then all distinct values are returned for the table . Returns an error if the provided table does not exist . ` dst ` is intended to allow for some more sophisticated execution wherein execution can be short - circuited for distinct values that have already been found . Callers can simply provide an empty ` BTreeMap ` to skip this behaviour .
pub fn column_values(
        &self,
        table_name: &str,
        predicate: Predicate,
        columns: Selection<'_>,
        dst: BTreeMap<String, BTreeSet<String>>,
    ) -> Result<BTreeMap<String, BTreeSet<String>>> {
        let columns = match columns {
            Selection::All => {
                return UnsupportedOperation {
                    msg: "column_values does not support All columns".to_owned(),
                }
                .fail();
            }
            Selection::Some(columns) => columns,
        };
        let chunk_data = self.chunk_data.read();
        // TODO(edd): same potential contention as `table_names` but I'm ok
        // with this for now.
        match chunk_data.data.get(table_name) {
            Some(table) => table
                .column_values(&predicate, columns, dst)
                .context(TableError),
            None => TableNotFound {
                table_name: table_name.to_owned(),
            }
            .fail(),
        }
    }
pub fn column_values ( & self , table_name : & str , predicate : Predicate , columns : Selection < ' _ > , dst : BTreeMap < String , BTreeSet < String > > , ) -> Result < BTreeMap < String , BTreeSet < String > > > { let columns = match columns { Selection :: All => { return UnsupportedOperation { msg : " " . to_owned ( ) , } . fail ( ) ; } Selection :: Some ( columns ) => columns , } ; let chunk_data = self . chunk_data . read ( ) ; // TODO(edd): same potential contention as `table_names` but I'm ok // with this for now. match chunk_data . data . get ( table_name ) { Some ( table ) => table . column_values ( & predicate , columns , dst ) . context ( TableError ) , None => TableNotFound { table_name : table_name . to_owned ( ) , } . fail ( ) , } }
Returns the distinct set of column values for each provided column,
where each returned value lives in a row matching the provided
predicate.
Returns the distinct set of column values for each provided column where each returned value lives in a row matching the provided predicate .
&self
table_name
&str
predicate
Predicate
columns
Selection<'_>
dst
BTreeMap<String, BTreeSet<String>>