1#![cfg_attr(coverage, feature(coverage_attribute))]
4
5use arrow_schema::{DataType, Field as ArrowField};
6use std::sync::LazyLock;
7
8pub mod cache;
9pub mod container;
10pub mod datatypes;
11pub mod error;
12pub mod traits;
13pub mod utils;
14
15pub use error::{box_error, ArrowResult, Error, Result};
16
17pub const WILDCARD: &str = "*";
19pub const ROW_ID: &str = "_rowid";
21pub const ROW_ADDR: &str = "_rowaddr";
23pub const ROW_OFFSET: &str = "_rowoffset";
25pub const ROW_LAST_UPDATED_AT_VERSION: &str = "_row_last_updated_at_version";
27pub const ROW_CREATED_AT_VERSION: &str = "_row_created_at_version";
29
30pub static ROW_ID_FIELD: LazyLock<ArrowField> =
33 LazyLock::new(|| ArrowField::new(ROW_ID, DataType::UInt64, true));
34pub static ROW_ADDR_FIELD: LazyLock<ArrowField> =
37 LazyLock::new(|| ArrowField::new(ROW_ADDR, DataType::UInt64, true));
38pub static ROW_OFFSET_FIELD: LazyLock<ArrowField> =
41 LazyLock::new(|| ArrowField::new(ROW_OFFSET, DataType::UInt64, true));
42pub static ROW_LAST_UPDATED_AT_VERSION_FIELD: LazyLock<ArrowField> =
44 LazyLock::new(|| ArrowField::new(ROW_LAST_UPDATED_AT_VERSION, DataType::UInt64, true));
45pub static ROW_CREATED_AT_VERSION_FIELD: LazyLock<ArrowField> =
47 LazyLock::new(|| ArrowField::new(ROW_CREATED_AT_VERSION, DataType::UInt64, true));
48
49pub fn is_system_column(column_name: &str) -> bool {
59 matches!(
60 column_name,
61 ROW_ID | ROW_ADDR | ROW_OFFSET | ROW_LAST_UPDATED_AT_VERSION | ROW_CREATED_AT_VERSION
62 )
63}