athena_rs 3.22.1

Hyper performant polyglot Database driver
Documentation
//! Schema-catalog column SQL query-selector facade.
//!
//! This module keeps a stable import surface for column query selection while
//! raw SQL definitions are split by filter scope:
//! - `schema_filters` for schema-scoped filters
//! - `table_filters` for table-only filters
//! - `catalog_filters` for unscoped catalog scans

mod catalog_filters;
mod schema_filters;
mod table_filters;

/// Returns the column query text matching the active filters.
pub(super) fn columns_query(
    schema_filter: Option<&str>,
    table_filter: Option<&str>,
    exclude_system_schemas: bool,
) -> &'static str {
    match (
        schema_filter.is_some(),
        table_filter.is_some(),
        exclude_system_schemas,
    ) {
        (true, true, _) => schema_filters::columns_for_schema_table_query(),
        (true, false, _) => schema_filters::columns_for_schema_query(),
        (false, true, true) => table_filters::columns_for_table_excluding_system_query(),
        (false, true, false) => table_filters::columns_for_table_query(),
        (false, false, true) => catalog_filters::columns_excluding_system_query(),
        (false, false, false) => catalog_filters::columns_all_query(),
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    /// Selects schema-and-table scoped query when both filters are present.
    fn columns_query_uses_schema_table_variant() {
        let query = columns_query(Some("public"), Some("users"), false);
        assert!(query.contains("WHERE table_schema = $1"));
        assert!(query.contains("AND table_name = $2"));
    }

    #[test]
    /// Selects schema-only scoped query when only schema filter is present.
    fn columns_query_uses_schema_variant() {
        let query = columns_query(Some("public"), None, false);
        assert!(query.contains("WHERE table_schema = $1"));
        assert!(!query.contains("AND table_name = $2"));
    }

    #[test]
    /// Selects table-only scoped query when only table filter is present.
    fn columns_query_uses_table_variant_without_system_exclusion() {
        let query = columns_query(None, Some("users"), false);
        assert!(query.contains("WHERE table_name = $1"));
        assert!(!query.contains("table_schema NOT IN"));
    }

    #[test]
    /// Selects table-only scoped query with explicit system-schema exclusion.
    fn columns_query_uses_table_variant_with_system_exclusion() {
        let query = columns_query(None, Some("users"), true);
        assert!(query.contains("WHERE table_name = $1"));
        assert!(query.contains("table_schema NOT IN ('information_schema', 'pg_catalog')"));
    }

    #[test]
    /// Selects unscoped query with system-schema exclusion for broad scans.
    fn columns_query_uses_catalog_variant_with_system_exclusion() {
        let query = columns_query(None, None, true);
        assert!(query.contains("WHERE table_schema NOT IN ('information_schema', 'pg_catalog')"));
    }

    #[test]
    /// Selects unscoped all-schemas query when no filters are present.
    fn columns_query_uses_catalog_all_variant() {
        let query = columns_query(None, None, false);
        assert!(!query.contains("WHERE table_schema = $1"));
        assert!(!query.contains("WHERE table_name = $1"));
        assert!(!query.contains("NOT IN ('information_schema', 'pg_catalog')"));
    }
}