const DEFAULT_MAX_FRAME_HEADER_LENGTH: u64 = 64 * 1024 * 1024;
const DEFAULT_MAX_FRAME_PAYLOAD_LENGTH: u64 = 4 * 1024 * 1024 * 1024;
const DEFAULT_MAX_SCHEMA_COLUMNS: u64 = 65_536;
const DEFAULT_MAX_SCHEMA_FIELD_LENGTH: u64 = 16 * 1024 * 1024;
const DEFAULT_MAX_BLOCKS: u64 = 10_000_000;
const DEFAULT_MAX_ROWS_PER_BLOCK: u64 = 16 * 1024 * 1024;
const DEFAULT_MAX_DECODED_BLOCK_BYTES: u64 = 1024 * 1024 * 1024;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Limits {
max_frame_header_length: u64,
max_frame_payload_length: u64,
max_schema_columns: u64,
max_schema_field_length: u64,
max_blocks: u64,
max_rows_per_block: u64,
max_decoded_block_bytes: u64,
max_rows_per_scan: u64,
max_decoded_scan_bytes: u64,
}
impl Limits {
pub fn max_frame_header_length(&self) -> u64 {
self.max_frame_header_length
}
pub fn max_frame_payload_length(&self) -> u64 {
self.max_frame_payload_length
}
pub fn max_schema_columns(&self) -> u64 {
self.max_schema_columns
}
pub fn max_schema_field_length(&self) -> u64 {
self.max_schema_field_length
}
pub fn max_blocks(&self) -> u64 {
self.max_blocks
}
pub fn max_rows_per_block(&self) -> u64 {
self.max_rows_per_block
}
pub fn max_decoded_block_bytes(&self) -> u64 {
self.max_decoded_block_bytes
}
pub fn max_rows_per_scan(&self) -> u64 {
self.max_rows_per_scan
}
pub fn max_decoded_scan_bytes(&self) -> u64 {
self.max_decoded_scan_bytes
}
pub fn with_max_frame_header_length(mut self, bytes: u64) -> Self {
self.max_frame_header_length = bytes;
self
}
pub fn with_max_frame_payload_length(mut self, bytes: u64) -> Self {
self.max_frame_payload_length = bytes;
self
}
pub fn with_max_schema_columns(mut self, columns: u64) -> Self {
self.max_schema_columns = columns;
self
}
pub fn with_max_schema_field_length(mut self, bytes: u64) -> Self {
self.max_schema_field_length = bytes;
self
}
pub fn with_max_blocks(mut self, blocks: u64) -> Self {
self.max_blocks = blocks;
self
}
pub fn with_max_rows_per_block(mut self, rows: u64) -> Self {
self.max_rows_per_block = rows;
self
}
pub fn with_max_decoded_block_bytes(mut self, bytes: u64) -> Self {
self.max_decoded_block_bytes = bytes;
self
}
pub fn with_max_rows_per_scan(mut self, rows: u64) -> Self {
self.max_rows_per_scan = rows;
self
}
pub fn with_max_decoded_scan_bytes(mut self, bytes: u64) -> Self {
self.max_decoded_scan_bytes = bytes;
self
}
}
impl Default for Limits {
fn default() -> Self {
Self {
max_frame_header_length: DEFAULT_MAX_FRAME_HEADER_LENGTH,
max_frame_payload_length: DEFAULT_MAX_FRAME_PAYLOAD_LENGTH,
max_schema_columns: DEFAULT_MAX_SCHEMA_COLUMNS,
max_schema_field_length: DEFAULT_MAX_SCHEMA_FIELD_LENGTH,
max_blocks: DEFAULT_MAX_BLOCKS,
max_rows_per_block: DEFAULT_MAX_ROWS_PER_BLOCK,
max_decoded_block_bytes: DEFAULT_MAX_DECODED_BLOCK_BYTES,
max_rows_per_scan: u64::MAX,
max_decoded_scan_bytes: u64::MAX,
}
}
}