pub mod aggregates;
pub mod casts;
pub mod cluster;
pub mod collations;
pub mod default_privileges;
pub mod event_triggers;
pub mod filter_pg_defaults;
pub mod grants;
pub mod policies;
pub mod publications;
pub mod reloptions;
pub mod renumber_enum_sort_orders;
pub mod resolve_user_defined_types;
pub mod sentinel_view_columns;
pub mod sort_and_dedupe;
pub mod statistics;
pub mod subscriptions;
pub mod text_search;
use crate::ir::IrError;
use crate::ir::catalog::Catalog;
pub fn canonicalize(cat: &mut Catalog) -> Result<(), IrError> {
filter_pg_defaults::run(cat);
resolve_user_defined_types::run(cat);
sentinel_view_columns::run(cat)?;
renumber_enum_sort_orders::run(cat);
for s in &mut cat.schemas {
grants::strip_owner_self_grants(&mut s.grants, s.owner.as_ref());
grants::run_on_list(&mut s.grants);
}
for s in &mut cat.sequences {
grants::strip_owner_self_grants(&mut s.grants, s.owner.as_ref());
grants::run_on_list(&mut s.grants);
}
for t in &mut cat.tables {
grants::strip_owner_self_grants(&mut t.grants, t.owner.as_ref());
grants::run_on_list(&mut t.grants);
}
for v in &mut cat.views {
grants::strip_owner_self_grants(&mut v.grants, v.owner.as_ref());
grants::run_on_list(&mut v.grants);
}
for m in &mut cat.materialized_views {
grants::strip_owner_self_grants(&mut m.grants, m.owner.as_ref());
grants::run_on_list(&mut m.grants);
}
for f in &mut cat.functions {
grants::strip_owner_self_grants(&mut f.grants, f.owner.as_ref());
grants::run_on_list(&mut f.grants);
}
for p in &mut cat.procedures {
grants::strip_owner_self_grants(&mut p.grants, p.owner.as_ref());
grants::run_on_list(&mut p.grants);
}
for t in &mut cat.types {
grants::strip_owner_self_grants(&mut t.grants, t.owner.as_ref());
grants::run_on_list(&mut t.grants);
}
default_privileges::run(&mut cat.default_privileges);
for t in &mut cat.tables {
policies::run_on_table(t);
}
publications::run(cat)?;
event_triggers::run(cat)?;
aggregates::run(cat)?;
casts::run(cat)?;
text_search::run(cat)?;
subscriptions::run(cat)?;
statistics::run(cat)?;
collations::run(cat)?;
reloptions::run(cat);
sort_and_dedupe::run(cat)?;
Ok(())
}