uqa_sql/catalog/collations/
declarations.rs1use crate::{ast::ColumnDef, ColumnType, FunctionTypeResolver, SQLError};
10
11pub fn select(
13 types: &dyn FunctionTypeResolver,
14 ty: &ColumnType,
15 name: Option<&str>,
16) -> Result<u32, SQLError> {
17 let Some(name) = name else {
18 return Ok(
19 u32::try_from(crate::catalog::type_metadata::pg_type_collation_oid(ty))
20 .expect("predefined collation identity"),
21 );
22 };
23 let oid = super::expression::select(name, None, None, Some(types))?;
24 super::expression::select(name, Some(oid), Some(ty), Some(types))
25}
26
27#[must_use]
29pub fn column_oid(column: &ColumnDef) -> i64 {
30 column.collation_oid.map_or_else(
31 || crate::catalog::type_metadata::pg_type_collation_oid(&column.ty),
32 i64::from,
33 )
34}
35
36#[cfg(test)]
37mod tests;