Checks whether SQL contains any {{query:"..."}} composition tokens. Use this as a fast guard before calling ResolveComposition(). Only considers tokens outside of SQL comments.
Parses all {{query:"..."}} tokens from SQL without resolving them. Useful for dependency extraction during the save pipeline. Only considers tokens outside of SQL comments.
Uses MJLexer for structured tokenization instead of regex, providing full parsing of category paths, query names, and parameter lists.
The SQL text to parse
Array of parsed token metadata
Resolves all {{query:"..."}} composition tokens in the given SQL into CTEs.
The SQL containing composition tokens
Target database platform for SQL resolution
User context for permission checks on referenced queries
OptionalouterParams: Record<string, string>Parameter values from the outer/parent query (for pass-through resolution)
OptionalinlineDependencies: QueryDependencySpec[]Optional inline dependency specs for transient query testing. When provided, these are checked first before falling back to Metadata.Provider.Queries. Inline dependencies skip governance validation (Reusable, IsApproved, UserCanRun).
CompositionResult with fully resolved SQL and provenance metadata
QueryCompositionEngine resolves {{query:"CategoryPath/QueryName(params)"}} tokens in query SQL into Common Table Expressions (CTEs). It handles:
This engine runs BEFORE Nunjucks template processing, so regular {{param}} tokens are preserved for later substitution.