Compare commits

...

1 Commits

Author SHA1 Message Date
Paul Masurel
4a072e3c18 Introducing a column trait 2022-09-02 11:24:04 +09:00
2 changed files with 6 additions and 5 deletions

View File

@@ -92,6 +92,7 @@ pub struct FastFieldStats {
struct VecColum<'a>(&'a [u64]); struct VecColum<'a>(&'a [u64]);
impl<'a> Column for VecColum<'a> { impl<'a> Column for VecColum<'a> {
fn get_val(&self, position: u64) -> u64 { fn get_val(&self, position: u64) -> u64 {
self.0[position as usize] self.0[position as usize]
} }

View File

@@ -64,8 +64,8 @@ impl From<FastFieldCodecType> for FastFieldCodecEnableCheck {
// use this, when this is merged and stabilized explicit_generic_args_with_impl_trait // use this, when this is merged and stabilized explicit_generic_args_with_impl_trait
// https://github.com/rust-lang/rust/pull/86176 // https://github.com/rust-lang/rust/pull/86176
fn codec_estimation<C: FastFieldCodec, D: Column>( fn codec_estimation<C: FastFieldCodec>(
fastfield_accessor: &D, fastfield_accessor: &impl Column,
estimations: &mut Vec<(f32, FastFieldCodecType)>, estimations: &mut Vec<(f32, FastFieldCodecType)>,
) { ) {
if let Some(ratio) = C::estimate(fastfield_accessor) { if let Some(ratio) = C::estimate(fastfield_accessor) {
@@ -202,13 +202,13 @@ impl CompositeFastFieldSerializer {
let mut estimations = vec![]; let mut estimations = vec![];
if codec_enable_checker.is_enabled(FastFieldCodecType::Bitpacked) { if codec_enable_checker.is_enabled(FastFieldCodecType::Bitpacked) {
codec_estimation::<BitpackedCodec, _>(&fastfield_accessor, &mut estimations); codec_estimation::<BitpackedCodec>(&fastfield_accessor, &mut estimations);
} }
if codec_enable_checker.is_enabled(FastFieldCodecType::Linear) { if codec_enable_checker.is_enabled(FastFieldCodecType::Linear) {
codec_estimation::<LinearCodec, _>(&fastfield_accessor, &mut estimations); codec_estimation::<LinearCodec>(&fastfield_accessor, &mut estimations);
} }
if codec_enable_checker.is_enabled(FastFieldCodecType::BlockwiseLinear) { if codec_enable_checker.is_enabled(FastFieldCodecType::BlockwiseLinear) {
codec_estimation::<BlockwiseLinearCodec, _>(&fastfield_accessor, &mut estimations); codec_estimation::<BlockwiseLinearCodec>(&fastfield_accessor, &mut estimations);
} }
if let Some(broken_estimation) = estimations.iter().find(|estimation| estimation.0.is_nan()) if let Some(broken_estimation) = estimations.iter().find(|estimation| estimation.0.is_nan())
{ {