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 1000Re-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§
- Query
Rewriter - Query rewriter
- Query
Rewriter Builder - Query rewriter builder
- Rewrite
Result - Result of a rewrite operation
Enums§
- Rewrite
Error - Rewrite error