[fix](function) fix ipv4 funcs get failed error, improve an ipv6 func and exception message (#30269)

This commit is contained in:
Chester
2024-01-27 21:37:44 +08:00
committed by yiguolei
parent 0433b8730d
commit 7e19224a6c
12 changed files with 160 additions and 93 deletions

View File

@ -20,30 +20,41 @@
namespace doris::vectorized {
void register_function_ip(SimpleFunctionFactory& factory) {
/// IPv4 convert between string and num part
factory.register_function<FunctionIPv4NumToString>();
factory.register_alias(FunctionIPv4NumToString::name, "inet_ntoa");
factory.register_function<FunctionIPv4StringToNum<IPExceptionMode::Throw>>();
factory.register_function<FunctionIPv4StringToNum<IPExceptionMode::Default>>();
factory.register_function<FunctionIPv4StringToNum<IPExceptionMode::Null>>();
factory.register_alias(FunctionIPv4StringToNum<IPExceptionMode::Null>::name, "inet_aton");
factory.register_function<FunctionIPv4StringToNum<IPConvertExceptionMode::Throw>>();
factory.register_function<FunctionIPv4StringToNum<IPConvertExceptionMode::Default>>();
factory.register_function<FunctionIPv4StringToNum<IPConvertExceptionMode::Null>>();
factory.register_alias(FunctionIPv4StringToNum<IPConvertExceptionMode::Null>::name,
"inet_aton");
/// IPv6 convert between string and num part
factory.register_function<FunctionIPv6NumToString>();
factory.register_alias(FunctionIPv6NumToString::name, "inet6_ntoa");
factory.register_function<FunctionIPv6StringToNum<IPExceptionMode::Throw>>();
factory.register_function<FunctionIPv6StringToNum<IPExceptionMode::Default>>();
factory.register_function<FunctionIPv6StringToNum<IPExceptionMode::Null>>();
factory.register_alias(FunctionIPv6StringToNum<IPExceptionMode::Null>::name, "inet6_aton");
factory.register_function<FunctionIPv6StringToNum<IPConvertExceptionMode::Throw>>();
factory.register_function<FunctionIPv6StringToNum<IPConvertExceptionMode::Default>>();
factory.register_function<FunctionIPv6StringToNum<IPConvertExceptionMode::Null>>();
factory.register_alias(FunctionIPv6StringToNum<IPConvertExceptionMode::Null>::name,
"inet6_aton");
/// Judge part
factory.register_function<FunctionIsIPv4Compat>();
factory.register_function<FunctionIsIPv4Mapped>();
factory.register_function<FunctionIsIPString<IPv4>>();
factory.register_function<FunctionIsIPString<IPv6>>();
factory.register_function<FunctionIsIPAddressInRange>();
/// CIDR part
factory.register_function<FunctionIPv4CIDRToRange>();
factory.register_function<FunctionIPv6CIDRToRange>();
factory.register_function<FunctionToIP<IPExceptionMode::Throw, IPv4>>();
factory.register_function<FunctionToIP<IPExceptionMode::Default, IPv4>>();
factory.register_function<FunctionToIP<IPExceptionMode::Null, IPv4>>();
factory.register_function<FunctionToIP<IPExceptionMode::Throw, IPv6>>();
factory.register_function<FunctionToIP<IPExceptionMode::Default, IPv6>>();
factory.register_function<FunctionToIP<IPExceptionMode::Null, IPv6>>();
/// Convert to IPv4/IPv6 part
factory.register_function<FunctionToIP<IPConvertExceptionMode::Throw, IPv4>>();
factory.register_function<FunctionToIP<IPConvertExceptionMode::Default, IPv4>>();
factory.register_function<FunctionToIP<IPConvertExceptionMode::Null, IPv4>>();
factory.register_function<FunctionToIP<IPConvertExceptionMode::Throw, IPv6>>();
factory.register_function<FunctionToIP<IPConvertExceptionMode::Default, IPv6>>();
factory.register_function<FunctionToIP<IPConvertExceptionMode::Null, IPv6>>();
}
} // namespace doris::vectorized