hawdb-optimizer 0.3.0

An embedded Rust graph database for local data-plane workloads
Documentation
// Copyright 2026 Nowledge
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

mod cardinality_defaults;
pub mod context;
pub mod cost {
    pub use hawdb_cascades::cost::*;
}
pub mod graph;
pub mod logical;
pub mod memo {
    pub use hawdb_cascades::memo::*;
}
pub mod operator;
pub mod predicate;
pub mod properties {
    pub use hawdb_cascades::properties::*;
}
pub mod relational;
pub mod relational_join;
mod relational_join_cost;
pub mod relational_join_hypergraph;
pub mod relational_join_rewrite;
pub mod relational_planning;
pub mod relational_profile;
pub mod relational_sargability;
pub mod rule {
    pub use hawdb_cascades::rule::*;
}
pub mod search;
pub mod stage {
    pub use hawdb_cascades::stage::*;
}
pub mod trace;
pub mod vector;

pub use context::{
    ExplainMode, OptimizerContext, QueryFamily, ResourceHints, StatementClass, TraceSink,
};
pub use cost::{PlanCost, PlanCostBreakdown};
pub use graph::{
    CascadesOptimizer, FastPathPhysicalPhase, FastPathPhysicalPlanRoot, LogicalPhase,
    LogicalPlanRoot, LoweringReadyLogicalPlanRoot, LoweringReadyPhase, OptimizerCatalog,
    OptimizerCatalogIndexes, OptimizerCatalogStatistics, OptimizerIndexStatistics, PhysicalPhase,
    PhysicalPlanRoot, PlanPhase, PlanPhaseKind,
};
pub use hawdb_plan::PhysicalPlanNode as PlanNode;
pub use hawdb_plan::{
    plan_class_counts, plan_operator_counts, visit_plan, visit_plan_with_ids, PhysicalOperatorId,
    PhysicalPlanClass, PhysicalPlanKind, PhysicalPlanNode, PlanChildren,
};
pub use logical::{LogicalPlanClass, LogicalPlanKind, LogicalPlanNode};
pub use memo::{GroupId, Memo, MemoGroup};
pub use predicate::{
    normalize_search_enum_value, push_search_predicates, search_field_is_enum_like, SearchFieldRef,
    SearchPredicate, SearchPredicateOp, SearchPredicateParseError, SearchPredicatePushdown,
    SearchPredicateSet, SearchScalarValue, SearchScanPredicateSupport,
};
pub use properties::{
    Distribution, MemoryBudgetClass, PhysicalProperties, RequiredProperties, ScanPruningSupport,
    VectorPrecision,
};
pub use relational::{
    estimate_relational_nested_loop_join_cost, select_relational_access_path,
    skyline_prune_relational_access_paths, RelationalAccessPathDescriptor,
    RelationalAccessPathKind, RelationalNestedLoopJoinCost,
};
pub use relational_join::{
    enumerate_relational_inner_joins, RelationalInnerJoinEnumeration,
    RelationalJoinAccessApplicability, RelationalJoinAccessPath, RelationalJoinEnumerationConfig,
    RelationalJoinEnumerationError, RelationalJoinGraph, RelationalJoinPlan,
    RelationalJoinPredicate, RelationalJoinPredicateId, RelationalJoinRelation, RelationalJoinStep,
};
pub use relational_join_cost::{
    estimate_relational_access_cost, estimate_relational_access_path_cost,
    estimate_relational_join_cost, estimate_relational_probe_join_cost, RelationalJoinCardinality,
    RelationalJoinRightInput, RelationalJoinSelectivity,
};
pub use relational_join_hypergraph::{
    enumerate_relational_csg_cmp_joins, enumerate_relational_csg_cmp_joins_with_implementations,
    enumerate_relational_csg_cmp_joins_with_right_input_policy, RelationalCsgCmpAlternative,
    RelationalCsgCmpEnumeration, RelationalCsgCmpJoinImplementation, RelationalCsgCmpPlan,
    RelationalCsgCmpPlanNode, RelationalCsgCmpRightInputPolicy, RelationalEquiJoinAlgorithm,
};
pub use relational_join_rewrite::{
    analyze_relational_join_conflicts, enumerate_relational_join_rewrites,
    RelationalJoinConflictAnalysis, RelationalJoinConflictDescriptor, RelationalJoinConflictRule,
    RelationalJoinOperator, RelationalJoinOperatorId, RelationalJoinOperatorKind,
    RelationalJoinRewriteEnumeration, RelationalJoinRewriteError, RelationalJoinRewritePlan,
    RelationalJoinRewriteProblem, RelationalJoinRewriteStep, RelationalJoinTree,
};
pub use relational_planning::{
    RelationalJoinPlanningAttempt, RelationalJoinPlanningBudget, RelationalJoinPlanningCost,
    RelationalJoinPlanningDirective, RelationalJoinPlanningFallbackClass,
    RelationalJoinPlanningOutcome, RelationalJoinPlanningReason, RelationalJoinPlanningStatus,
    RelationalJoinPlanningStrategy,
};
pub use relational_profile::{
    RelationalOperatorCardinalityProfile, RelationalOperatorId, RelationalOperatorKind,
};
pub use rule::{
    apply_rule_batch, AppliedRule, OptimizerRule, RuleApplication, RuleBatch, RuleId, RuleKind,
    RulePromise,
};
pub use search::{
    OptimizationSearchReport, OptimizerSearchDirective, OptimizerSearchDirectiveError, RuleEvent,
    RuleOutcome, SearchMode, SelectedPlanTrace,
};
pub use stage::{
    ApplyOrder, OptimizationPipeline, OptimizationStage, PipelineExecution, RuleStage,
    StageRuleBatch, StageStats, StageTrace,
};
pub use trace::{OperatorCardinalityEstimate, OptimizerConfig, OptimizerTrace};
pub use vector::{
    plan_vector_search, select_adaptive_vector_backend, validate_vector_pipeline,
    AdaptiveVectorBackend, AdaptiveVectorBackendDecision, AdaptiveVectorBackendInput,
    AdaptiveVectorBackendPolicy, PlannedVectorSearch, VectorCompressionPreference, VectorPlanError,
    VectorPlanProperties,
};