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

Function assign_names

prqlc/prqlc/src/sql/pq/postprocess.rs:440–458  ·  view source on GitHub ↗

Makes sure all relation instances have assigned names. Tries to infer from table references.

(query: SqlQuery, ctx: &mut Context)

Source from the content-addressed store, hash-verified

438
439/// Makes sure all relation instances have assigned names. Tries to infer from table references.
440fn assign_names(query: SqlQuery, ctx: &mut Context) -> SqlQuery {
441 // generate CTE names, make sure they don't clash
442 let decls = ctx.anchor.table_decls.values_mut();
443 let mut names = HashSet::new();
444 for decl in decls.sorted_by_key(|d| d.id.get()) {
445 while decl.name.is_none() || names.contains(decl.name.as_ref().unwrap()) {
446 decl.name = Some(Ident::from_name(ctx.anchor.table_name.gen()));
447 }
448 names.insert(decl.name.clone().unwrap());
449 }
450
451 // generate relation variable names
452 RelVarNameAssigner {
453 ctx,
454 relation_instance_names: Default::default(),
455 }
456 .fold_sql_query(query)
457 .unwrap()
458}
459
460struct RelVarNameAssigner<'a> {
461 relation_instance_names: HashSet<String>,

Callers 1

postprocessFunction · 0.85

Calls 4

genMethod · 0.80
getMethod · 0.45
insertMethod · 0.45
fold_sql_queryMethod · 0.45

Tested by

no test coverage detected