uqa_sql/schema/
namespaces.rs1pub mod removal;
10
11pub fn validate_schema_name(name: &str) -> Result<(), String> {
12 validate_stored_schema_name(name)?;
13 if crate::catalog::is_virtual_system_schema(name) {
14 return Err(format!("schema name `{name}` is reserved"));
15 }
16 Ok(())
17}
18
19pub fn validate_stored_schema_name(name: &str) -> Result<(), String> {
21 if name.is_empty() {
22 Err(format!("invalid schema name `{name}`"))
23 } else {
24 Ok(())
25 }
26}
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31
32 #[test]
33 fn stored_system_namespace_security_is_valid_without_permitting_reserved_creation() {
34 for name in ["pg_catalog", "information_schema", "ag_catalog"] {
35 validate_stored_schema_name(name).unwrap();
36 assert!(validate_schema_name(name).unwrap_err().contains("reserved"));
37 }
38 for validate in [validate_schema_name, validate_stored_schema_name] {
39 assert!(validate("").unwrap_err().contains("invalid"));
40 validate("application").unwrap();
41 }
42 }
43}
44
45pub mod creation;