pub mod alter_table_attach_partition;
pub mod alter_table_stmt;
pub mod comment_stmt;
pub mod create_composite_type_stmt;
pub mod create_domain_stmt;
pub mod create_enum_stmt;
pub mod create_extension_stmt;
pub mod create_function_stmt;
pub mod create_materialized_view_stmt;
pub mod create_schema_stmt;
pub mod create_seq_stmt;
pub mod create_stmt;
pub mod create_trigger_stmt;
pub mod create_view_stmt;
pub mod default_privileges;
pub mod desugar_serial;
pub mod grants;
pub mod index_stmt;
pub mod owner_stmt;
pub mod plpgsql;
pub mod policy_stmt;
pub mod publication_stmt;
pub mod reloptions;
pub mod shared;
pub mod subscription_stmt;
use std::collections::HashMap;
use crate::identifier::QualifiedName;
use crate::ir::catalog::Catalog;
use crate::parse::error::SourceLocation;
#[derive(Debug, Default)]
pub struct Builder {
pub catalog: Catalog,
pub locations: HashMap<String, SourceLocation>,
}
impl Builder {
pub fn new() -> Self {
Self::default()
}
pub fn record_location(
&mut self,
qname: &QualifiedName,
location: SourceLocation,
) -> Option<SourceLocation> {
let key = qname.to_string();
if let Some(prior) = self.locations.get(&key) {
return Some(prior.clone());
}
self.locations.insert(key, location);
None
}
}