Skip to main content

sql_fun_sqlast/sem/problem/name_resolution/
column_not_found.rs

1use crate::sem::{
2    AnalysisProblem, ColumnName, CteName, TableName, ViewName, data_source::AliasName,
3};
4
5use super::NameResolution;
6
7impl NameResolution {
8    pub(crate) fn column_not_found_in_view(view_name: &ViewName, column: &ColumnName) -> Self {
9        Self::ColumnNotFoundInView(view_name.clone(), column.clone())
10    }
11
12    pub(crate) fn column_not_found_in_cte(cte_name: &CteName, column: &ColumnName) -> Self {
13        Self::ColumnNotFoundInCte(cte_name.clone(), column.clone())
14    }
15
16    pub(crate) fn column_not_found_in_table(table_name: &TableName, column: &ColumnName) -> Self {
17        Self::ColumnNotFoundInTable(table_name.clone(), column.clone())
18    }
19
20    pub(crate) fn column_not_found_in_subquery(
21        alias_name: &AliasName,
22        column: &ColumnName,
23    ) -> Self {
24        Self::ColumnNotFoundInSubQuery(alias_name.clone(), column.clone())
25    }
26
27    pub(crate) fn column_not_found_in_source(column: &ColumnName) -> Self {
28        Self::ColumnNotFoundInSource(column.clone())
29    }
30
31    /// column not found in table function
32    pub fn column_not_found_in_table_function(alias: &AliasName, column: &ColumnName) -> Self {
33        Self::ColumnNotFoundInTableFunction(alias.clone(), column.clone())
34    }
35}
36
37impl AnalysisProblem {
38    /// column not found in view
39    #[must_use]
40    pub fn column_not_found_in_view(view_name: &ViewName, column: &ColumnName) -> Self {
41        Self::NameResolution(NameResolution::column_not_found_in_view(view_name, column))
42    }
43
44    /// specfied column not found in sub query
45    #[tracing::instrument()]
46    pub fn column_not_found_in_subquery(alias: &AliasName, column: &ColumnName) -> Self {
47        Self::NameResolution(NameResolution::column_not_found_in_subquery(alias, column))
48    }
49
50    /// specified column not found in table
51    #[tracing::instrument()]
52    pub fn column_not_found_in_table(table_name: &TableName, col_name: &ColumnName) -> Self {
53        Self::NameResolution(NameResolution::column_not_found_in_table(
54            table_name, col_name,
55        ))
56    }
57
58    /// specified column not found in CTE
59    #[tracing::instrument()]
60    pub fn column_not_found_in_cte(cte_name: &CteName, column: &ColumnName) -> Self {
61        Self::NameResolution(NameResolution::column_not_found_in_cte(cte_name, column))
62    }
63
64    /// column not found
65    #[tracing::instrument()]
66    pub fn column_not_found_in_source(column: &ColumnName) -> Self {
67        Self::NameResolution(NameResolution::column_not_found_in_source(column))
68    }
69
70    /// column not found in table function
71    #[tracing::instrument()]
72    pub fn column_not_found_in_table_function(alias: &AliasName, column: &ColumnName) -> Self {
73        Self::NameResolution(NameResolution::column_not_found_in_table_function(
74            alias, column,
75        ))
76    }
77}