Skip to main content

radixdb_executor/
lib.rs

1//! SQL binding, planning, and execution engine for RadixDB.
2//!
3//! This private implementation crate is the canonical owner of SQL binding,
4//! planning, relational operators, DDL/DML dispatch and result execution. The
5//! root `radixdb::executor` path is a compatibility facade, not a second owner.
6//! Allowed internal dependencies are limited to `radixdb-core`,
7//! `radixdb-sql`, `radixdb-functions`, `radixdb-catalog`,
8//! `radixdb-procedural`, and `radixdb-storage`.
9
10#![forbid(unsafe_code)]
11
12pub mod access;
13pub mod aggregation;
14pub mod application;
15mod authorization;
16pub mod binding;
17pub mod compiled_plan;
18pub mod context;
19pub mod credentials;
20pub mod cte;
21pub mod dispatch;
22mod executor;
23mod executor_host;
24mod explain;
25pub mod expr_converter;
26pub mod expression;
27pub mod hash_table;
28pub mod index_optimizer;
29mod index_optimizer_host;
30pub mod join_executor;
31pub mod join_graph;
32pub mod lookup_key;
33#[doc(hidden)]
34pub mod memory;
35pub mod mutation;
36mod mutation_host;
37pub mod navigation;
38pub mod operator;
39pub mod operators;
40pub mod optimizer;
41pub mod parallel;
42pub mod pipeline;
43pub mod planner;
44mod prepared;
45pub mod procedural;
46pub mod public_read;
47pub mod pushdown;
48mod query;
49pub mod query_cache;
50pub mod query_classification;
51pub mod result;
52pub mod semantic_cache;
53mod show;
54pub mod statistics;
55pub mod subquery;
56#[cfg(feature = "test-mutations")]
57#[doc(hidden)]
58pub mod test_mutations;
59pub mod utils;
60pub mod window;
61
62mod catalog;
63
64#[doc(hidden)]
65pub use catalog::{bind_runtime_catalog, plugin_catalog_runtime_binder};
66
67#[cfg(any(test, feature = "test-hooks"))]
68#[doc(hidden)]
69pub use executor::test_executor_construction_count;
70pub use executor::{count_parameters, Executor};
71#[doc(hidden)]
72pub use prepared::{program_contains_transaction_control, PreparedProgram};
73pub use public_read::{
74    BoundPublicReadPolicy, PublicReadColumnBinding, PublicReadLimits, PublicReadMaterialized,
75    PublicReadRelationBinding, PublicReadRelationSpec,
76};
77
78// Historical `radixdb::executor::*` names remain source-compatible through
79// direct exports from their canonical owner. The root crate aliases this crate
80// and no longer carries a mirror module tree.
81pub use binding::output::QueryOutputColumn;
82pub use context::{clear_all_thread_local_caches, ExecutionContext, TimeoutGuard};
83pub use expression::{
84    CompileContext, CompileError, CompiledEvaluator, ExecuteContext, ExprCompiler, ExprVM,
85    Program as ExprProgram,
86};
87pub use hash_table::{hash_row_keys, verify_key_equality, JoinHashTable};
88pub use join_executor::{JoinAnalysis, JoinExecutor, JoinInputOrderings, JoinRequest, JoinResult};
89pub use operator::{
90    ColumnInfo, CompositeRow, EmptyOperator, MaterializedOperator, Operator, OrderingProperty,
91    RowRef,
92};
93pub use operators::{
94    BatchIndexNestedLoopJoinOperator, HashJoinOperator, IndexLookupStrategy,
95    IndexNestedLoopJoinOperator, JoinProjection, JoinSide, JoinType, MergeJoinOperator,
96    NestedLoopJoinOperator,
97};
98pub use parallel::{
99    JoinType as ParallelJoinType, ParallelConfig, DEFAULT_PARALLEL_CHUNK_SIZE,
100    DEFAULT_PARALLEL_FILTER_THRESHOLD, DEFAULT_PARALLEL_JOIN_THRESHOLD,
101};
102pub use planner::{
103    ColumnStatsCache, QueryPlanner, RuntimeJoinAlgorithm, RuntimeJoinDecision, StatsHealth,
104};
105pub use query_cache::{CacheStats, CachedPlanRef, CachedQueryPlan, QueryCache, DEFAULT_CACHE_SIZE};
106pub use query_classification::clear_classification_cache;
107pub use radixdb_plugin_host::{DatabasePluginAdmission, PluginRegistry};
108pub use result::{ColumnarResult, ExecResult, ExecutionResult, ExecutorResult};
109pub use semantic_cache::{
110    CacheLookupResult, CachedResult, QueryFingerprint, SemanticCache, SemanticCacheStats,
111    SemanticCacheStatsSnapshot, SubsumptionResult, DEFAULT_CACHE_TTL_SECS, DEFAULT_MAX_CACHED_ROWS,
112    DEFAULT_MAX_GLOBAL_CACHED_BYTES, DEFAULT_SEMANTIC_CACHE_SIZE,
113};
114pub use utils::{compute_join_projection, extract_join_keys_and_residual, JoinProjectionIndices};