risingwave_frontend/expr/function_impl/
pg_get_userbyid.rs1use risingwave_expr::{ExprError, Result, capture_context, function};
16
17use super::context::USER_INFO_READER;
18use crate::user::user_service::UserInfoReader;
19
20#[function("pg_get_userbyid(int4) -> varchar")]
21fn pg_get_userbyid(oid: i32) -> Result<Option<Box<str>>> {
22 pg_get_userbyid_impl_captured(oid)
23}
24
25#[capture_context(USER_INFO_READER)]
26fn pg_get_userbyid_impl(reader: &UserInfoReader, oid: i32) -> Result<Option<Box<str>>> {
27 let oid: u32 = oid.try_into().map_err(|_| ExprError::InvalidParam {
28 name: "pg_get_userbyid",
29 reason: format!("invalid oid {oid}").into_boxed_str(),
30 })?;
31 Ok(reader
32 .read_guard()
33 .get_user_name_by_id(oid.into())
34 .map(|s| s.into_boxed_str()))
35}