athena_rs 3.26.2

Hyper performant polyglot Database driver
Documentation
//! Observed-column mapping helpers for `/debug/schema`.
//!
//! This module owns column attachment, deduplication, and stable sorting
//! against the relation-keyed observed-table map.

use super::debug_observed_tables::{ObservedTablesMap, relation_key};
use super::service::SchemaColumnRecord;

/// Applies discovered column rows to a relation-keyed observed table map.
pub(super) fn apply_observed_columns(
    observed_map: &mut ObservedTablesMap,
    columns: Vec<SchemaColumnRecord>,
) {
    for column in columns {
        let key = relation_key(&column.table_schema, &column.table_name);
        if let Some(observed) = observed_map.get_mut(&key)
            && !observed
                .columns
                .iter()
                .any(|name| name == &column.column_name)
        {
            observed.columns.push(column.column_name);
        }
    }

    for observed in observed_map.values_mut() {
        observed.columns.sort();
    }
}