glaredb_core 25.6.3

Core functionality for GlareDB
Documentation
use glaredb_error::Result;
use glaredb_parser::ast;

use super::bind_context::BindScopeRef;
use crate::config::session::SessionConfig;
use crate::logical::logical_discard::{DiscardType, LogicalDiscard};
use crate::logical::operator::{LocationRequirement, Node};
use crate::statistics::value::StatisticsValue;

#[derive(Debug)]
pub struct DiscardBinder<'a> {
    pub current: BindScopeRef,
    pub config: &'a SessionConfig,
}

impl<'a> DiscardBinder<'a> {
    pub fn new(current: BindScopeRef, config: &'a SessionConfig) -> Self {
        DiscardBinder { current, config }
    }

    pub fn bind_discard(&self, discard: ast::DiscardStatement) -> Result<Node<LogicalDiscard>> {
        Ok(Node {
            node: LogicalDiscard {
                discard_type: match discard.discard_type {
                    ast::DiscardType::All => DiscardType::All,
                    ast::DiscardType::Plans => DiscardType::Plans,
                    ast::DiscardType::Temp => DiscardType::Temp,
                    ast::DiscardType::Metadata => DiscardType::Metadata,
                },
            },
            location: LocationRequirement::ClientLocal,
            children: Vec::new(),
            estimated_cardinality: StatisticsValue::Unknown,
        })
    }
}