Skip to main content

uqa_execution/type_resolution/
gamma.rs

1//
2// Unified Query Algebra
3//
4// Copyright (c) 2023-2026 Cognica, Inc.
5//
6
7//! Compatibility API for `gamma(float8)` and `lgamma(float8)` overload resolution.
8
9use uqa_sql::ast::{ColumnType, FunctionBinding};
10use uqa_sql::SQLError;
11
12use super::common::local_routine_name;
13use super::{
14    fixed_builtin, function_resolution_error, FunctionTypeResolver, ResolvedFunctionOverload,
15};
16
17pub type ResolvedGammaOverload = ResolvedFunctionOverload;
18
19#[doc(hidden)]
20pub fn resolve_gamma_overload(
21    name: &str,
22    binding: Option<&FunctionBinding>,
23    argument_names: &[Option<String>],
24    argument_types: &[Option<ColumnType>],
25    resolver: Option<&dyn FunctionTypeResolver>,
26) -> Result<ResolvedGammaOverload, SQLError> {
27    if !matches!(local_routine_name(name).as_str(), "gamma" | "lgamma") {
28        return Err(function_resolution_error(
29            "42883",
30            name,
31            argument_names,
32            argument_types,
33            "does not exist",
34        ));
35    }
36    fixed_builtin::resolve_overload(
37        name,
38        binding,
39        argument_names,
40        argument_types,
41        false,
42        resolver,
43    )
44}