use std::sync::Arc;
use smallvec::SmallVec;
use uqa_core::Value;
use uqa_sql::expr::RowLookup;
use uqa_sql::ResultRow;
use crate::physical::ExecResult;
mod batches;
mod materialization;
mod owned_row;
mod physical_row;
mod physical_row_view;
mod row_lock_origins;
mod schema_runtime;
pub use batches::Batch;
use materialization::RowMaterializer;
pub use owned_row::OwnedPhysicalRow;
use physical_row::RowFragment;
pub use physical_row::{PhysicalRow, RowProjectionValue};
pub use physical_row_view::PhysicalRowView;
use row_lock_origins::concat_lock_origins;
pub use row_lock_origins::RowLockOrigin;
pub use schema_runtime::RowSchemaExecution;
pub use uqa_sql::schema::{ColumnIdentity, RowSchema};
pub(crate) use uqa_sql::schema::{PhysicalLayout, ProjectedSlot};
#[cfg(test)]
mod tests;
pub const DEFAULT_BATCH_SIZE: usize = 1024;
const NULL_SLOT: usize = usize::MAX;
const INLINE_ROW_FRAGMENTS: usize = 7;
static NULL_VALUE: Value = Value::Null;