Skip to main content

sql_fun_sqlast/sem/
create_extension.rs

1use crate::sem::AstAndContextPair;
2
3use super::{AnalysisError, ParseContext, SemAst};
4
5/// analyzed [`crate::syn::CreateExtensionStmt`]
6#[derive(Debug, Clone)]
7pub struct CreateExtension {
8    name: String,
9}
10
11impl CreateExtension {
12    /// get extension name
13    #[must_use]
14    pub fn name(&self) -> &str {
15        &self.name
16    }
17}
18
19/// analyze [`crate::syn::CreateExtensionStmt`]
20pub fn analyze_create_extension<TParseContext>(
21    context: TParseContext,
22    _parent_schema: &Option<String>,
23    syn: crate::syn::CreateExtensionStmt,
24) -> Result<AstAndContextPair<TParseContext>, AnalysisError>
25where
26    TParseContext: ParseContext,
27{
28    let name = syn.get_extname();
29    let extension = CreateExtension { name };
30    let result_context = context.apply_create_extension(&extension)?;
31    Ok(AstAndContextPair::new(
32        SemAst::CreateExtension(extension),
33        result_context,
34    ))
35}