diff options
| author | lambda-delta <[email protected]> | 2025-08-04 19:40:46 +0300 |
|---|---|---|
| committer | lambda-delta <[email protected]> | 2025-08-04 20:05:53 +0300 |
| commit | b5c31e9554edee086eed97d94e7908d6d6ef3ec2 (patch) | |
| tree | 06f2ac35cc4d8aa62f3c64f023e56a0e7256352c /yql/essentials/docs | |
| parent | c0bc4e708e27a153b958eed0f42d2a67f245b288 (diff) | |
YQL-19784: Implement Ipv4FromUint32 and Ipv4ToUint32 functions in IP UDF
Implement Ipv4FromUint32 and Ipv4ToUint32 functions in IP UDF
commit_hash:ac21513d59acaf686ad0ab1482753863eb2d9a12
Diffstat (limited to 'yql/essentials/docs')
| -rw-r--r-- | yql/essentials/docs/en/changelog/2025.03.md | 4 | ||||
| -rw-r--r-- | yql/essentials/docs/en/udf/list/ip.md | 14 | ||||
| -rw-r--r-- | yql/essentials/docs/ru/changelog/2025.03.md | 4 | ||||
| -rw-r--r-- | yql/essentials/docs/ru/udf/list/ip.md | 26 |
4 files changed, 38 insertions, 10 deletions
diff --git a/yql/essentials/docs/en/changelog/2025.03.md b/yql/essentials/docs/en/changelog/2025.03.md index 361474ae616..19b7d486be8 100644 --- a/yql/essentials/docs/en/changelog/2025.03.md +++ b/yql/essentials/docs/en/changelog/2025.03.md @@ -15,6 +15,10 @@ * Added `Math::SwapBytes` function +## Changes in IP module {#ip-module} + +* Added `Ip::Ipv4FromUint32` and `Ip::Ipv4ToUint32` functions. + ## Changes in SELECT syntax * Added the ability to explicitly specify `DISTINCT` for `UNION`; diff --git a/yql/essentials/docs/en/udf/list/ip.md b/yql/essentials/docs/en/udf/list/ip.md index c635d5009e1..e214aecaa5f 100644 --- a/yql/essentials/docs/en/udf/list/ip.md +++ b/yql/essentials/docs/en/udf/list/ip.md @@ -5,14 +5,16 @@ The `Ip` module supports both the IPv4 and IPv6 addresses. By default, they are ## List of functions * `Ip::FromString(String{Flags:AutoMap}) -> String?` - From a human-readable representation to a binary representation. +* `Ip::Ipv4FromUint32(Uint32{Flags:AutoMap}) -> String` - From a Uint32 to a binary representation. Integer `A << 24 | B << 16 | C << 8 | D` corresponds to address `A.B.C.D`. * `Ip::SubnetFromString(String{Flags:AutoMap}) -> String?` - From a human-readable representation of subnet to a binary representation. * `Ip::ToString(String{Flags:AutoMap}) -> String?` - From a binary representation to a human-readable representation. +* `Ip::Ipv4ToUint32(String{Flags:AutoMap}) -> Uint32?` - From a binary representation of IPv4 to a Uint32. Address `A.B.C.D` corresponds to integer `A << 24 | B << 16 | C << 8 | D`. IPv6 is not supported. * `Ip::SubnetToString(String{Flags:AutoMap}) -> String?` - From a binary representation of subnet to a human-readable representation. * `Ip::IsIPv4(String?) -> Bool` * `Ip::IsIPv6(String?) -> Bool` * `Ip::IsEmbeddedIPv4(String?) -> Bool` -* `Ip::ConvertToIPv6(String{Flags:AutoMap}) -> String`: IPv6 remains unchanged, and IPv4 becomes embedded in IPv6 -* `Ip::GetSubnet(String{Flags:AutoMap}, [Uint8?]) -> String`: The second argument is the subnet size, by default it's 24 for IPv4 and 64 for IPv6 +* `Ip::ConvertToIPv6(String{Flags:AutoMap}) -> String`: IPv6 remains unchanged, and IPv4 becomes embedded in IPv6. +* `Ip::GetSubnet(String{Flags:AutoMap}, [Uint8?]) -> String`: The second argument is the subnet size, by default it's 24 for IPv4 and 64 for IPv6. * `Ip::GetSubnetByMask(String{Flags:AutoMap}, String{Flags:AutoMap}) -> String`: The first argument is the base address, the second argument is the bit mask of a desired subnet. * `Ip::SubnetMatch(String{Flags:AutoMap}, String{Flags:AutoMap}) -> Bool`: The first argument is a subnet, the second argument is a subnet or an address. @@ -24,6 +26,14 @@ SELECT Ip::IsEmbeddedIPv4( Ip::FromString("::ffff:77.75.155.3") ); -- true +SELECT Ip::ToString( + Ip::Ipv4FromUint32(1) +); -- "0.0.0.1" + +SELECT Ip::Ipv4ToUint32( + Ip::FromString("0.0.0.1") +); -- 1 + SELECT Ip::ToString( Ip::GetSubnet( diff --git a/yql/essentials/docs/ru/changelog/2025.03.md b/yql/essentials/docs/ru/changelog/2025.03.md index f50f09d8a0e..4ec16ac99f7 100644 --- a/yql/essentials/docs/ru/changelog/2025.03.md +++ b/yql/essentials/docs/ru/changelog/2025.03.md @@ -15,6 +15,10 @@ * Добавлена функция `Math::SwapBytes` +## Изменения в модуле IP {#ip-module} + +* Добавлены функции `Ip::Ipv4FromUint32` и `Ip::Ipv4ToUint32`. + ## Изменения в синтаксисе SELECT * Добавлена возможность явного указания `DISTINCT` для `UNION`; diff --git a/yql/essentials/docs/ru/udf/list/ip.md b/yql/essentials/docs/ru/udf/list/ip.md index 8ec01015c9e..f114e36ad09 100644 --- a/yql/essentials/docs/ru/udf/list/ip.md +++ b/yql/essentials/docs/ru/udf/list/ip.md @@ -4,17 +4,19 @@ ## Список функций -* `Ip::FromString(String{Flags:AutoMap}) -> String?` - из человекочитаемого представления в бинарное -* `Ip::SubnetFromString(String{Flags:AutoMap}) -> String?` - из человекочитаемого представления подсети в бинарное -* `Ip::ToString(String{Flags:AutoMap}) -> String?` - из бинарного представления в человекочитаемое -* `Ip::ToString(String{Flags:AutoMap}) -> String?` - из бинарного представления подсети в человекочитаемое +* `Ip::FromString(String{Flags:AutoMap}) -> String?` - из человекочитаемого представления в бинарное. +* `Ip::Ipv4FromUint32(Uint32{Flags:AutoMap}) -> String` - из Uint32 в бинарное представление. Целое число `A << 24 | B << 16 | C << 8 | D` соответствует адресу `A.B.C.D`. +* `Ip::SubnetFromString(String{Flags:AutoMap}) -> String?` - из человекочитаемого представления подсети в бинарное. +* `Ip::ToString(String{Flags:AutoMap}) -> String?` - из бинарного представления в человекочитаемое. +* `Ip::Ipv4ToUint32(String{Flags:AutoMap}) -> Uint32?` - из бинарного представления IPv4 в Uint32. Адрес `A.B.C.D` соответствует целому числу `A << 24 | B << 16 | C << 8 | D`. IPv6 не поддерживается. +* `Ip::SubnetToString(String{Flags:AutoMap}) -> String?` - из бинарного представления подсети в человекочитаемое. * `Ip::IsIPv4(String?) -> Bool` * `Ip::IsIPv6(String?) -> Bool` * `Ip::IsEmbeddedIPv4(String?) -> Bool` -* `Ip::ConvertToIPv6(String{Flags:AutoMap}) -> String` - IPv6 остается без изменений, а IPv4 становится embedded в IPv6 -* `Ip::GetSubnet(String{Flags:AutoMap}, [Uint8?]) -> String` - во втором аргументе размер подсети, по умолчанию 24 для IPv4 и 64 для IPv6 -* `Ip::GetSubnetByMask(String{Flags:AutoMap}, String{Flags:AutoMap}) -> String` - во втором аргументе битовая маска подсети -* `Ip::SubnetMatch(String{Flags:AutoMap}, String{Flags:AutoMap}) -> Bool` - в первом аргументе подсеть, во втором аргументе подсеть или адрес +* `Ip::ConvertToIPv6(String{Flags:AutoMap}) -> String` - IPv6 остается без изменений, а IPv4 становится embedded в IPv6. +* `Ip::GetSubnet(String{Flags:AutoMap}, [Uint8?]) -> String` - во втором аргументе размер подсети, по умолчанию 24 для IPv4 и 64 для IPv6. +* `Ip::GetSubnetByMask(String{Flags:AutoMap}, String{Flags:AutoMap}) -> String` - во втором аргументе битовая маска подсети. +* `Ip::SubnetMatch(String{Flags:AutoMap}, String{Flags:AutoMap}) -> Bool` - в первом аргументе подсеть, во втором аргументе подсеть или адрес. ## Примеры @@ -23,6 +25,14 @@ SELECT Ip::IsEmbeddedIPv4( Ip::FromString("::ffff:77.75.155.3") ); -- true +SELECT Ip::ToString( + Ip::Ipv4FromUint32(1) +); -- "0.0.0.1" + +SELECT Ip::Ipv4ToUint32( + Ip::FromString("0.0.0.1") +); -- 1 + SELECT Ip::ToString( Ip::GetSubnet( |
