1use arrow_schema::{DataType, Field as ArrowField};
5use std::sync::LazyLock;
6
7pub mod cache;
8pub mod container;
9pub mod datatypes;
10pub mod error;
11pub mod traits;
12pub mod utils;
13
14pub use error::{box_error, ArrowResult, Error, Result};
15
16pub const WILDCARD: &str = "*";
18pub const ROW_ID: &str = "_rowid";
20pub const ROW_ADDR: &str = "_rowaddr";
22pub const ROW_OFFSET: &str = "_rowoffset";
24pub const ROW_LAST_UPDATED_AT_VERSION: &str = "_row_last_updated_at_version";
26pub const ROW_CREATED_AT_VERSION: &str = "_row_created_at_version";
28
29pub static ROW_ID_FIELD: LazyLock<ArrowField> =
32 LazyLock::new(|| ArrowField::new(ROW_ID, DataType::UInt64, true));
33pub static ROW_ADDR_FIELD: LazyLock<ArrowField> =
36 LazyLock::new(|| ArrowField::new(ROW_ADDR, DataType::UInt64, true));
37pub static ROW_OFFSET_FIELD: LazyLock<ArrowField> =
40 LazyLock::new(|| ArrowField::new(ROW_OFFSET, DataType::UInt64, true));
41pub static ROW_LAST_UPDATED_AT_VERSION_FIELD: LazyLock<ArrowField> =
43 LazyLock::new(|| ArrowField::new(ROW_LAST_UPDATED_AT_VERSION, DataType::UInt64, true));
44pub static ROW_CREATED_AT_VERSION_FIELD: LazyLock<ArrowField> =
46 LazyLock::new(|| ArrowField::new(ROW_CREATED_AT_VERSION, DataType::UInt64, true));
47
48pub fn is_system_column(column_name: &str) -> bool {
58 matches!(
59 column_name,
60 ROW_ID | ROW_ADDR | ROW_OFFSET | ROW_LAST_UPDATED_AT_VERSION | ROW_CREATED_AT_VERSION
61 )
62}