summaryrefslogtreecommitdiffstats
path: root/yql/essentials/docs
diff options
context:
space:
mode:
authorlambda-delta <[email protected]>2025-08-04 19:40:46 +0300
committerlambda-delta <[email protected]>2025-08-04 20:05:53 +0300
commitb5c31e9554edee086eed97d94e7908d6d6ef3ec2 (patch)
tree06f2ac35cc4d8aa62f3c64f023e56a0e7256352c /yql/essentials/docs
parentc0bc4e708e27a153b958eed0f42d2a67f245b288 (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.md4
-rw-r--r--yql/essentials/docs/en/udf/list/ip.md14
-rw-r--r--yql/essentials/docs/ru/changelog/2025.03.md4
-rw-r--r--yql/essentials/docs/ru/udf/list/ip.md26
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(