Skip to main content

uqa_storage/
value_index_key.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! Physical B-tree namespaces distinguish column accelerators from named SQL indexes.
8
9#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
10pub enum ValueIndexKey {
11    Column(String),
12    Index(String),
13}
14
15impl ValueIndexKey {
16    #[must_use]
17    pub fn name(&self) -> &str {
18        match self {
19            Self::Column(name) | Self::Index(name) => name,
20        }
21    }
22}
23
24impl From<&str> for ValueIndexKey {
25    fn from(name: &str) -> Self {
26        Self::Column(name.into())
27    }
28}
29
30impl From<String> for ValueIndexKey {
31    fn from(name: String) -> Self {
32        Self::Column(name)
33    }
34}
35
36impl std::fmt::Display for ValueIndexKey {
37    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
38        match self {
39            Self::Column(name) => write!(formatter, "column {name}"),
40            Self::Index(name) => write!(formatter, "index {name}"),
41        }
42    }
43}