liquid_cache_storage/cache/
cached_batch.rs1use std::{fmt::Display, sync::Arc};
4
5use arrow::array::{ArrayRef, BooleanArray};
6use arrow_schema::DataType;
7
8use crate::liquid_array::{LiquidArrayRef, LiquidHybridArrayRef};
9
10#[derive(Debug, Clone)]
12pub enum CachedBatch {
13 MemoryArrow(ArrayRef),
15 MemoryLiquid(LiquidArrayRef),
17 MemoryHybridLiquid(LiquidHybridArrayRef),
19 DiskLiquid(DataType),
21 DiskArrow(DataType),
23}
24
25impl CachedBatch {
26 pub fn memory_usage_bytes(&self) -> usize {
28 match self {
29 Self::MemoryArrow(array) => array.get_array_memory_size(),
30 Self::MemoryLiquid(array) => array.get_array_memory_size(),
31 Self::MemoryHybridLiquid(array) => array.get_array_memory_size(),
32 Self::DiskLiquid(_) => 0,
33 Self::DiskArrow(_) => 0,
34 }
35 }
36
37 pub fn reference_count(&self) -> usize {
39 match self {
40 Self::MemoryArrow(array) => Arc::strong_count(array),
41 Self::MemoryLiquid(array) => Arc::strong_count(array),
42 Self::MemoryHybridLiquid(array) => Arc::strong_count(array),
43 Self::DiskLiquid(_) => 0,
44 Self::DiskArrow(_) => 0,
45 }
46 }
47}
48
49impl Display for CachedBatch {
50 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
51 match self {
52 Self::MemoryArrow(_) => write!(f, "MemoryArrow"),
53 Self::MemoryLiquid(_) => write!(f, "MemoryLiquid"),
54 Self::MemoryHybridLiquid(_) => write!(f, "MemoryHybridLiquid"),
55 Self::DiskLiquid(_) => write!(f, "DiskLiquid"),
56 Self::DiskArrow(_) => write!(f, "DiskArrow"),
57 }
58 }
59}
60
61#[derive(Debug, Clone, Copy, PartialEq, Eq)]
63pub enum CachedBatchType {
64 MemoryArrow,
66 MemoryLiquid,
68 MemoryHybridLiquid,
70 DiskLiquid,
72 DiskArrow,
74}
75
76impl From<&CachedBatch> for CachedBatchType {
77 fn from(batch: &CachedBatch) -> Self {
78 match batch {
79 CachedBatch::MemoryArrow(_) => Self::MemoryArrow,
80 CachedBatch::MemoryLiquid(_) => Self::MemoryLiquid,
81 CachedBatch::MemoryHybridLiquid(_) => Self::MemoryHybridLiquid,
82 CachedBatch::DiskLiquid(_) => Self::DiskLiquid,
83 CachedBatch::DiskArrow(_) => Self::DiskArrow,
84 }
85 }
86}
87
88#[derive(Debug, PartialEq)]
90pub enum GetWithPredicateResult {
91 Evaluated(BooleanArray),
93
94 Filtered(ArrayRef),
96}