spacetimedb_sql_parser/ast/
sub.rs1use crate::parser::{errors::SqlUnsupported, SqlParseResult};
2
3use super::{Project, SqlExpr, SqlFrom};
4
5pub struct SqlSelect {
7 pub project: Project,
8 pub from: SqlFrom,
9 pub filter: Option<SqlExpr>,
10}
11
12impl SqlSelect {
13 pub fn qualify_vars(self) -> Self {
14 match &self.from {
15 SqlFrom::Expr(_, alias) => Self {
16 project: self.project.qualify_vars(alias.clone()),
17 filter: self.filter.map(|expr| expr.qualify_vars(alias.clone())),
18 from: self.from,
19 },
20 SqlFrom::Join(..) => self,
21 }
22 }
23
24 pub fn find_unqualified_vars(self) -> SqlParseResult<Self> {
25 if self.from.has_unqualified_vars() {
26 return Err(SqlUnsupported::UnqualifiedNames.into());
27 }
28 if self.project.has_unqualified_vars() {
29 return Err(SqlUnsupported::UnqualifiedNames.into());
30 }
31 Ok(self)
32 }
33}