[feature](function) support ip functions named to_ipv4[or_default, or_null](string) and to_ipv6[or_default, or_null](string) (#29838)

This commit is contained in:
yangshijie
2024-01-22 16:19:47 +08:00
committed by yiguolei
parent 68e67470c0
commit d5d0e5e611
13 changed files with 720 additions and 55 deletions

View File

@ -22,25 +22,27 @@ namespace doris::vectorized {
void register_function_ip(SimpleFunctionFactory& factory) {
factory.register_function<FunctionIPv4NumToString>();
factory.register_alias(FunctionIPv4NumToString::name, "inet_ntoa");
factory.register_function<FunctionIPv4StringToNum<IPStringToNumExceptionMode::Throw>>();
factory.register_function<FunctionIPv4StringToNum<IPStringToNumExceptionMode::Default>>();
factory.register_function<FunctionIPv4StringToNum<IPStringToNumExceptionMode::Null>>();
factory.register_alias(FunctionIPv4StringToNum<IPStringToNumExceptionMode::Null>::name,
"inet_aton");
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<FunctionIPv6NumToString>();
factory.register_alias(FunctionIPv6NumToString::name, "inet6_ntoa");
factory.register_function<FunctionIPv6StringToNum<IPStringToNumExceptionMode::Throw>>();
factory.register_function<FunctionIPv6StringToNum<IPStringToNumExceptionMode::Default>>();
factory.register_function<FunctionIPv6StringToNum<IPStringToNumExceptionMode::Null>>();
factory.register_alias(FunctionIPv6StringToNum<IPStringToNumExceptionMode::Null>::name,
"inet6_aton");
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<FunctionIsIPv4Compat>();
factory.register_function<FunctionIsIPv4Mapped>();
factory.register_function<FunctionIsIPString<IPv4>>();
factory.register_function<FunctionIsIPString<IPv6>>();
factory.register_function<FunctionIsIPAddressInRange>();
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>>();
}
} // namespace doris::vectorized