Skip to main content

Module rewriter

Module rewriter 

Source
Expand description

Query Rewriting Module

Transparent query rewriting at the proxy layer for optimization, compatibility, and security enforcement.

§Features

  • Pattern Matching: Match queries by fingerprint, regex, AST, or table
  • Transformations: Index hints, SELECT * expansion, LIMIT addition
  • Rule Engine: Priority-based rule application
  • AI Safety: Agent query limits and forbidden table enforcement

§Architecture

  Original Query → Parse → Match Rules → Apply Transformations → Rewritten Query
                     │         │                  │
                     │         │                  ├── Replace
                     │         │                  ├── AddIndexHint
                     │         ├── Fingerprint    ├── ExpandSelectStar
                     │         ├── Regex          ├── AddLimit
                     │         ├── AST            ├── AddWhereClause
                     │         └── Table          └── ReplaceTable
                     │
                  SQL AST

§Example

use heliosdb::proxy::rewriter::{QueryRewriter, RewriteRule, QueryPattern, Transformation};

let mut rewriter = QueryRewriter::builder()
    .rule(RewriteRule::new("expand_star")
        .pattern(QueryPattern::table("users"))
        .transform(Transformation::ExpandSelectStar {
            columns: vec!["id", "name", "email"]
        }))
    .rule(RewriteRule::new("add_limit")
        .pattern(QueryPattern::all())
        .transform(Transformation::AddLimit(1000)))
    .build();

let result = rewriter.rewrite("SELECT * FROM users")?;
// Result: SELECT id, name, email FROM users LIMIT 1000

Re-exports§

pub use config::RewriterConfig;
pub use config::RewriterConfigBuilder;
pub use rules::RewriteRule;
pub use rules::RewriteRuleBuilder;
pub use rules::QueryPattern;
pub use rules::AstPattern;
pub use rules::Transformation;
pub use rules::Condition;
pub use matcher::RuleMatcher;
pub use matcher::MatchResult;
pub use transformer::TransformationEngine;
pub use transformer::TransformError;
pub use parser::SqlParser;
pub use parser::ParsedQuery;
pub use parser::SqlStatement;
pub use metrics::RewriteMetrics;
pub use metrics::RewriteStats;
pub use metrics::RuleStats;

Modules§

config
Query Rewriter Configuration
matcher
Rule Matcher
metrics
Rewrite Metrics
parser
SQL Parser
rules
Rewrite Rules
transformer
Transformation Engine

Structs§

QueryRewriter
Query rewriter
QueryRewriterBuilder
Query rewriter builder
RewriteResult
Result of a rewrite operation

Enums§

RewriteError
Rewrite error