Packages

An Elixir DuckDB library

Current section

Files

Jump to
exduckdb c_src duckdb src function scalar string chr.cpp
Raw

c_src/duckdb/src/function/scalar/string/chr.cpp

#include "duckdb/function/scalar/string_functions.hpp"
#include "utf8proc.hpp"
#include "utf8proc_wrapper.hpp"
namespace duckdb {
struct ChrOperator {
template <class TA, class TR>
static inline TR Operation(const TA &input) {
char c[5] = {'\0', '\0', '\0', '\0', '\0'};
int utf8_bytes = 4;
if (input < 0 || !Utf8Proc::CodepointToUtf8(input, utf8_bytes, &c[0])) {
throw InvalidInputException("Invalid UTF8 Codepoint %d", input);
}
return string_t(&c[0]);
}
};
void CHR::RegisterFunction(BuiltinFunctions &set) {
ScalarFunction chr("chr", {LogicalType::INTEGER}, LogicalType::VARCHAR,
ScalarFunction::UnaryFunction<int32_t, string_t, ChrOperator>);
set.AddFunction(chr);
}
} // namespace duckdb