uqa_sql/catalog/events/definition/
context.rs1use crate::{
10 ast::{ColumnDef, TableHierarchy},
11 binding::{
12 stored_columns::StoredColumnBindingContext,
13 stored_relations::{StoredQuerySequences, StoredRelationCatalog},
14 stored_routines::analysis::CatalogRoutineAnalysisContext,
15 },
16 catalog::{
17 regrole_dependencies::StoredRegroleResolver, security::table::TableAclPrivilege,
18 stored_view::StoredView, view::StoredViewKind,
19 },
20 routines::{
21 compilation::RoutineCompilationCatalog, security::RoutineExecutionAuthority,
22 RoutineResolution,
23 },
24 semantics::{
25 mutation_privileges::MutationPrivilegeCatalog, returning::ReturningAnalysisContext,
26 rules::action_binding::RuleSourceCatalog,
27 },
28 RowSchema, SQLError,
29};
30use uqa_core::RelationIdentity;
31
32pub trait EventRelationCatalog {
34 fn event_relation_owner(
35 &self,
36 relation: &RelationIdentity,
37 ) -> Result<(String, &'static str), SQLError>;
38 fn view_kind(&self, relation: &RelationIdentity) -> Option<StoredViewKind>;
39 fn view(&self, relation: &RelationIdentity) -> Option<StoredView>;
40 fn foreign_columns(&self, relation: &RelationIdentity) -> Option<Vec<ColumnDef>>;
41 fn restored_catalog_view_definition(&self, name: &str) -> Result<Option<StoredView>, SQLError>;
42 fn stored_view_schema(&self, view: &StoredView) -> Result<RowSchema, SQLError>;
43 fn loaded_table_hierarchy(&self, relation: &RelationIdentity) -> Option<TableHierarchy>;
44}
45pub trait EventForeignPrivileges {
47 fn ensure_foreign_table_privilege(
48 &self,
49 name: &str,
50 privilege: TableAclPrivilege,
51 ) -> Result<(), SQLError>;
52}
53#[derive(Clone, Copy)]
54pub struct EventAnalysisContext<'a> {
55 pub catalog: &'a dyn EventRelationCatalog,
56 pub relations: &'a dyn StoredRelationCatalog,
57 pub sources: &'a dyn RuleSourceCatalog,
58 pub routines: &'a dyn RoutineResolution,
59 pub authority: &'a dyn RoutineExecutionAuthority,
60 pub privileges: &'a dyn MutationPrivilegeCatalog,
61 pub foreign_privileges: &'a dyn EventForeignPrivileges,
62 pub columns: StoredColumnBindingContext<'a>,
63 pub returning: ReturningAnalysisContext<'a>,
64 pub stored_routines: CatalogRoutineAnalysisContext<'a>,
65 pub namespaces: &'a dyn RoutineCompilationCatalog,
66 pub sequences: &'a dyn StoredQuerySequences,
67 pub regroles: &'a dyn StoredRegroleResolver,
68}