uqa_execution/type_resolution/
length.rs1use uqa_sql::ast::{ColumnType, FunctionBinding};
10use uqa_sql::SQLError;
11
12use super::common::local_routine_name;
13use super::string_binary::{self, ResolvedStringBinaryOverload};
14use super::{function_resolution_error, FunctionTypeResolver};
15
16pub type ResolvedLengthOverload = ResolvedStringBinaryOverload;
17
18#[doc(hidden)]
19pub fn resolve_length_overload(
20 name: &str,
21 binding: Option<&FunctionBinding>,
22 argument_names: &[Option<String>],
23 argument_types: &[Option<ColumnType>],
24 resolver: Option<&dyn FunctionTypeResolver>,
25) -> Result<ResolvedLengthOverload, SQLError> {
26 if !matches!(
27 local_routine_name(name).as_str(),
28 "length" | "char_length" | "character_length" | "octet_length" | "bit_length"
29 ) {
30 return Err(function_resolution_error(
31 "42883",
32 name,
33 argument_names,
34 argument_types,
35 "does not exist",
36 ));
37 }
38 string_binary::resolve_overload(name, binding, argument_names, argument_types, resolver)
39}