Skip to main content

uqa_sql/catalog/
dependencies.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! Catalog dependencies as `PostgreSQL` records them in `pg_depend` and `pg_shdepend`, and the deletion search and reports that `DROP` makes from them.
8
9mod address;
10mod deletion;
11mod edge;
12mod graph;
13mod shared;
14
15pub use address::{
16    ObjectAddress, ATTRIBUTE_DEFAULT_CLASS, CONSTRAINT_CLASS, DATABASE_CLASS, FOREIGN_SERVER_CLASS,
17    FOREIGN_WRAPPER_CLASS, LANGUAGE_CLASS, NAMESPACE_CLASS, PROCEDURE_CLASS, RELATION_CLASS,
18    REWRITE_CLASS, ROLE_CLASS, ROLE_MEMBERSHIP_CLASS, TRIGGER_CLASS, TYPE_CLASS,
19};
20pub use deletion::{CascadeNotice, DeletionFlags, DeletionTarget, DeletionTargets};
21pub use edge::{Dependency, DependencyKind};
22pub use graph::DependencyGraph;
23pub use shared::{shared_dependency_detail, SharedDependency, SharedDependencyKind};
24
25/// `getObjectDescription`: an object's description, `None` for an object that does not exist.
26pub type Describe<'a> = &'a dyn Fn(ObjectAddress) -> Result<Option<String>, crate::SQLError>;