Skip to main content

sql_fun_sqlast/sem/
alter_seq.rs

1use crate::{
2    sem::{AstAndContextPair, FullName, alter_table::AlterObjSubCommand},
3    syn::Opt,
4};
5
6use super::{AnalysisError, ParseContext, SemAst};
7
8/// analyzed [`crate::syn::AlterSeqStmt`]
9#[derive(Debug, Clone, derive_getters::Getters)]
10pub struct AlterSequence {
11    seq_name: FullName,
12    commands: Vec<AlterObjSubCommand>,
13}
14
15impl AlterSequence {
16    /// create `alter sequence` statement
17    #[must_use]
18    pub fn new(seq_name: &FullName, commands: &[AlterObjSubCommand]) -> Self {
19        Self {
20            seq_name: seq_name.clone(),
21            commands: commands.to_vec(),
22        }
23    }
24}
25
26/// analyze [`crate::syn::AlterSeqStmt`]
27pub fn analyze_alter_seq<TParseContext>(
28    mut context: TParseContext,
29    _parent_schema: &Option<String>,
30    syn: crate::syn::AlterSeqStmt,
31) -> Result<AstAndContextPair<TParseContext>, AnalysisError>
32where
33    TParseContext: ParseContext,
34{
35    let Some(seq) = syn.get_sequence().as_inner() else {
36        AnalysisError::raise_unexpected_none("AlterSeqStmt.seuqence")?
37    };
38    let seq = FullName::try_from(seq)?;
39
40    let alter_seq = AlterSequence {
41        seq_name: seq,
42        commands: Default::default(),
43    };
44    context = context.apply_alter_sequence(&alter_seq)?;
45    Ok(AstAndContextPair::new(
46        SemAst::AlterSequence(alter_seq),
47        context,
48    ))
49}