Skip to main content

uqa_sql/result/
labels.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! Host-facing results carry enum values as their current labels, as `PostgreSQL` clients receive them through the type's output function.
8
9use super::SQLResult;
10use crate::expr::enums::{contains_enum_carrier, render_enum_labels, EnumLabelCatalog};
11use crate::SQLError;
12
13/// Replace every enum carrier in the result's named and positional rows by its label text. Declared column types keep the enum type.
14pub fn render_result_enum_labels(
15    catalog: Option<&dyn EnumLabelCatalog>,
16    result: &mut SQLResult,
17) -> Result<(), SQLError> {
18    for row in &mut result.rows {
19        for value in row.values_mut() {
20            if contains_enum_carrier(value) {
21                *value = render_enum_labels(catalog, value)?;
22            }
23        }
24    }
25    for row in result.positional_rows.iter_mut().flatten() {
26        for value in row {
27            if contains_enum_carrier(value) {
28                *value = render_enum_labels(catalog, value)?;
29            }
30        }
31    }
32    Ok(())
33}