Category: 📚 References
Version: v1.3.0
Status: ✅ Complete
Datum: 22. Dezember 2025
- 📋 Übersicht
- ✨ Features & Highlights
- 🚀 Schnellstart
- 📖 Detaillierte Dokumentation
- 💡 Best Practices
- 🔧 Troubleshooting
- 📚 Siehe auch
- 📝 Changelog
Diese Seite bietet eine Schnellreferenz für Subquery & CTE Syntax in ThemisDB AQL.
WITH expensive AS (
FOR h IN hotels
FILTER h.price > 200
RETURN h
)
FOR doc IN expensive
RETURN doc
WITH
expensive AS (FOR h IN hotels FILTER h.price > 200 RETURN h),
berlin AS (FOR e IN expensive FILTER e.city == "Berlin" RETURN e)
FOR doc IN berlin RETURN doc
FOR user IN users
LET avgAge = (FOR u IN users RETURN AVG(u.age))
RETURN {user: user.name, avgAge: avgAge[0]}
FOR user IN users
LET userOrders = (
FOR o IN orders
FILTER o.userId == user._key
RETURN o
)
RETURN {user: user.name, orders: userOrders}
FOR doc IN users
FILTER ANY tag IN doc.tags SATISFIES tag == "premium"
RETURN doc
FOR order IN orders
FILTER ALL item IN order.items SATISFIES item.price < 100
RETURN order
include/query/aql_ast.h- AST nodes (WithNode, SubqueryExpr, etc.)src/query/aql_parser.cpp- Parsing logicinclude/query/aql_translator.h- CTE execution metadatasrc/query/aql_translator.cpp- CTE collection and optimizationinclude/query/query_engine.h- Execution interfacesrc/query/query_engine.cpp- Execution logic
include/query/cte_cache.h- CTECache interfacesrc/query/cte_cache.cpp- Spill-to-disk implementation
tests/test_aql_subqueries.cpp- Parser & execution tests (21 tests)tests/test_cte_cache.cpp- Memory management tests (15 tests)
✅ WITH Clause CTEs - Common Table Expressions with multiple references
✅ Scalar Subqueries - In LET and RETURN expressions
✅ Correlated Subqueries - Access to outer variables
✅ ANY/ALL Quantifiers - With full subquery support
✅ Memory Management - Automatic spill-to-disk for large CTEs (100MB default)
✅ Optimization - Materialization heuristics based on reference count
Default: 100MB in-memory cache, automatic spill to ./themis_cte_spill/
Future: Configurable via QueryEngine constructor or config file
- Subquery Implementation - Implementierungsdetails
- AQL Syntax - WITH-Klausel Syntax
- Query Engine - CTE Execution
- Best Practices - Wann CTEs nutzen
- ✅ Template-Update: Standardisierung auf v1.3.0 Dokumentationsformat
- ✅ Struktur: 8-Abschnitte-Format mit Emojis und TOC
- Initial Release mit Subquery & CTE Quick Reference
- Syntax-Beispiele für alle Subquery-Typen
- Multiple references to same subquery
- Complex filtering that should be materialized
- Improving query readability
Avoid CTEs when:
- Single-use subqueries (inlining faster)
- Very large result sets (consider streaming)
- Simple filters (better to inline)
Phase 3: ✅ Parsing & AST (14h)
Phase 4: ✅ Execution & Memory Management (14h)
Total: 28 hours implementation time
Compilation:
Tests: ✅ 36 tests implemented (21 execution + 15 cache)
Documentation: ✅ Complete
- Fix OpenSSL build dependency
- Run full test suite
- Performance benchmarks
- Consider Phase 5: Window Functions or Advanced JOINs
See docs/SUBQUERY_IMPLEMENTATION_SUMMARY.md for complete details.