MCPcopy Create free account
hub / github.com/PRQL/prql / translate_query

Function translate_query

prqlc/prqlc/src/sql/gen_query.rs:26–51  ·  view source on GitHub ↗
(query: RelationalQuery, dialect: Option<Dialect>)

Source from the content-addressed store, hash-verified

24type Transform = SqlTransform<RelationExpr, ()>;
25
26pub fn translate_query(query: RelationalQuery, dialect: Option<Dialect>) -> Result<sql_ast::Query> {
27 // compile from RQ to PQ
28 let (pq_query, mut ctx) = super::pq::compile_query(query, dialect)?;
29
30 debug::log_stage(debug::Stage::Sql(debug::StageSql::Main));
31 let mut query = translate_relation(pq_query.main_relation, &mut ctx)?;
32
33 if !pq_query.ctes.is_empty() {
34 // attach CTEs
35 let mut cte_tables = Vec::new();
36 let mut recursive = false;
37 for cte in pq_query.ctes {
38 let (cte, rec) = translate_cte(cte, &mut ctx)?;
39 cte_tables.push(cte);
40 recursive = recursive || rec;
41 }
42 query.with = Some(sql_ast::With {
43 recursive,
44 cte_tables,
45 with_token: sqlparser::ast::helpers::attached_token::AttachedToken::empty(),
46 });
47 }
48
49 debug::log_entry(|| debug::DebugEntryKind::ReprSqlParser(Box::new(query.clone())));
50 Ok(query)
51}
52
53fn translate_relation(relation: SqlRelation, ctx: &mut Context) -> Result<sql_ast::Query> {
54 match relation {

Callers 1

compileFunction · 0.85

Calls 7

compile_queryFunction · 0.85
log_stageFunction · 0.85
translate_relationFunction · 0.85
translate_cteFunction · 0.85
log_entryFunction · 0.85
is_emptyMethod · 0.80
pushMethod · 0.80

Tested by

no test coverage detected