Skip to main content

hawdb_optimizer_relational/
lib.rs

1// Copyright 2026 Nowledge
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15//! Relational access costing, join enumeration, and sargability.
16
17mod cardinality_defaults;
18pub mod relational;
19pub mod relational_join;
20mod relational_join_cost;
21pub mod relational_join_hypergraph;
22pub mod relational_join_rewrite;
23pub mod relational_planning;
24pub mod relational_profile;
25pub mod relational_sargability;
26
27pub use hawdb_cascades::*;
28pub use relational::{
29    estimate_relational_nested_loop_join_cost, select_relational_access_path,
30    select_relational_access_path_with_context, skyline_prune_relational_access_paths,
31    skyline_prune_relational_access_paths_with_context, RelationalAccessPathDescriptor,
32    RelationalAccessPathKind, RelationalNestedLoopJoinCost, RelationalRangeAccess,
33};
34pub use relational_join::{
35    enumerate_relational_inner_joins, enumerate_relational_inner_joins_with_cost_contexts,
36    RelationalInnerJoinEnumeration, RelationalJoinAccessApplicability, RelationalJoinAccessPath,
37    RelationalJoinEnumerationConfig, RelationalJoinEnumerationError, RelationalJoinGraph,
38    RelationalJoinPlan, RelationalJoinPredicate, RelationalJoinPredicateId, RelationalJoinRelation,
39    RelationalJoinStep,
40};
41pub use relational_join_cost::{
42    estimate_relational_access_cost, estimate_relational_access_path_cost,
43    estimate_relational_access_path_cost_with_context, estimate_relational_join_cost,
44    estimate_relational_join_cost_with_contexts, estimate_relational_probe_join_cost,
45    RelationalAccessCostContext, RelationalJoinCardinality, RelationalJoinCostContexts,
46    RelationalJoinRightInput, RelationalJoinSelectivity,
47};
48pub use relational_join_hypergraph::{
49    enumerate_relational_csg_cmp_joins, enumerate_relational_csg_cmp_joins_with_cost_contexts,
50    enumerate_relational_csg_cmp_joins_with_implementations,
51    enumerate_relational_csg_cmp_joins_with_right_input_policy, RelationalCsgCmpAlternative,
52    RelationalCsgCmpEnumeration, RelationalCsgCmpJoinImplementation, RelationalCsgCmpPlan,
53    RelationalCsgCmpPlanNode, RelationalCsgCmpRightInputPolicy, RelationalEquiJoinAlgorithm,
54};
55pub use relational_join_rewrite::{
56    analyze_relational_join_conflicts, enumerate_relational_join_rewrites,
57    enumerate_relational_join_rewrites_with_cost_contexts, RelationalJoinConflictAnalysis,
58    RelationalJoinConflictDescriptor, RelationalJoinConflictRule, RelationalJoinOperator,
59    RelationalJoinOperatorId, RelationalJoinOperatorKind, RelationalJoinRewriteEnumeration,
60    RelationalJoinRewriteError, RelationalJoinRewritePlan, RelationalJoinRewriteProblem,
61    RelationalJoinRewriteStep, RelationalJoinTree,
62};
63pub use relational_planning::{
64    RelationalJoinPlanningAttempt, RelationalJoinPlanningBudget, RelationalJoinPlanningCost,
65    RelationalJoinPlanningDirective, RelationalJoinPlanningFallbackClass,
66    RelationalJoinPlanningOutcome, RelationalJoinPlanningReason, RelationalJoinPlanningStatus,
67    RelationalJoinPlanningStrategy,
68};
69pub use relational_profile::{
70    RelationalOperatorCardinalityProfile, RelationalOperatorId, RelationalOperatorKind,
71};