Skip to main content

nodedb_sql/planner/dml_helpers/
mod.rs

1// SPDX-License-Identifier: Apache-2.0
2
3//! DML planning helpers, split by concern:
4//! - [`value_convert`] — `ast::Expr` -> `SqlValue` conversion
5//! - [`range_check`] — declared-width coercion + range validation
6//! - [`insert_columns`] — positional-insert column resolution
7//! - [`ast_extract`] — table-name / primary-key point-lookup extraction
8//! - [`declared_defaults`] — declared column DEFAULT materialization
9//! - [`vector_primary_insert`] — vector-primary collection insert plans
10//! - [`vector_primary_dml`] — vector-primary collection update / delete / truncate plans
11//! - [`kv_insert`] — KV engine insert plans
12//! - [`kv_counter`] — the row a KV counter atomic creates for an absent key
13//! - [`insert_select_bind`] — `INSERT ... SELECT` target-column binding
14//! - [`params`] — parameter structs for the helpers above
15
16mod ast_extract;
17mod declared_defaults;
18mod insert_columns;
19mod insert_select_bind;
20mod kv_counter;
21mod kv_insert;
22mod params;
23mod range_check;
24mod value_convert;
25mod vector_primary_dml;
26mod vector_primary_insert;
27
28pub use ast_extract::extract_point_keys;
29pub(super) use ast_extract::extract_table_name_from_table_with_joins;
30pub(super) use declared_defaults::materialize_defaults_in_rows;
31pub(super) use insert_columns::resolve_insert_columns;
32pub(super) use insert_select_bind::{
33    bind_insert_select_columns, insert_select_targets, name_insert_select_outputs,
34};
35pub use kv_counter::{KvCounterFreshRow, KvCounterKind, plan_kv_counter_fresh_row};
36pub(super) use kv_insert::build_kv_insert_plan;
37pub(super) use params::KvInsertParams;
38pub(super) use range_check::{
39    check_declared_float_ranges, check_declared_float_ranges_in_assignments,
40    check_declared_int_ranges, check_declared_int_ranges_in_assignments, coerce_and_check_rows,
41};
42pub(super) use value_convert::convert_value_rows;
43pub(super) use vector_primary_dml::{
44    VectorPrimaryUpdateParams, build_vector_primary_delete_plan,
45    build_vector_primary_truncate_plan, build_vector_primary_update_plan, is_vector_primary,
46    refuse_vector_primary_shape,
47};
48pub(super) use vector_primary_insert::{
49    VectorPrimaryInsertParams, build_vector_primary_insert_plan,
50};