nodedb-sql 0.6.1

SQL parser, planner, and optimizer for NodeDB
Documentation
// SPDX-License-Identifier: Apache-2.0

//! DML planning helpers, split by concern:
//! - [`value_convert`] — `ast::Expr` -> `SqlValue` conversion
//! - [`range_check`] — declared-width coercion + range validation
//! - [`insert_columns`] — positional-insert column resolution
//! - [`ast_extract`] — table-name / primary-key point-lookup extraction
//! - [`declared_defaults`] — declared column DEFAULT materialization
//! - [`vector_primary_insert`] — vector-primary collection insert plans
//! - [`vector_primary_dml`] — vector-primary collection update / delete / truncate plans
//! - [`kv_insert`] — KV engine insert plans
//! - [`kv_counter`] — the row a KV counter atomic creates for an absent key
//! - [`insert_select_bind`] — `INSERT ... SELECT` target-column binding
//! - [`params`] — parameter structs for the helpers above

mod ast_extract;
mod declared_defaults;
mod insert_columns;
mod insert_select_bind;
mod kv_counter;
mod kv_insert;
mod params;
mod range_check;
mod value_convert;
mod vector_primary_dml;
mod vector_primary_insert;

pub use ast_extract::extract_point_keys;
pub(super) use ast_extract::extract_table_name_from_table_with_joins;
pub(super) use declared_defaults::materialize_defaults_in_rows;
pub(super) use insert_columns::resolve_insert_columns;
pub(super) use insert_select_bind::{
    bind_insert_select_columns, insert_select_targets, name_insert_select_outputs,
};
pub use kv_counter::{KvCounterFreshRow, KvCounterKind, plan_kv_counter_fresh_row};
pub(super) use kv_insert::build_kv_insert_plan;
pub(super) use params::KvInsertParams;
pub(super) use range_check::{
    check_declared_float_ranges, check_declared_float_ranges_in_assignments,
    check_declared_int_ranges, check_declared_int_ranges_in_assignments, coerce_and_check_rows,
};
pub(super) use value_convert::convert_value_rows;
pub(super) use vector_primary_dml::{
    VectorPrimaryUpdateParams, build_vector_primary_delete_plan,
    build_vector_primary_truncate_plan, build_vector_primary_update_plan, is_vector_primary,
    refuse_vector_primary_shape,
};
pub(super) use vector_primary_insert::{
    VectorPrimaryInsertParams, build_vector_primary_insert_plan,
};