Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Enhancement](docs) Sql function compress and uncompress #1955

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
{
"title": "COMPRESS",
"language": "en"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## Description
The COMPRESS function is used to compress strings or values into binary data. The compressed data can be decompressed using the UNCOMPRESS function.

## Syntax

```sql
COMPRESS(<uncompressed_str>)
```

## Parameters

| Parameters | Description |
|--------------------|---------------|
| `<uncompressed_str>` | Uncompressed raw string |

The parameter type is varchar or string

## Return Value
The return string is the same as the input <uncompressed_str> type
The first ten digits of the returned string are the hexadecimal length of the original string, for example, 0x01000000. Followed by the compressed value.

Special case:
- <uncompressed_str> Return '0x' when input is ''

## Example

``` sql
select compress('abc');
```
```text
+----------------------------------+
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add case about empty string input

| compress('abc') |
+----------------------------------+
| 0x03000000789C4B4C4A0600024D0127 |
+----------------------------------+
```
```sql
select compress('');
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add sql here, and remove mysql>

```text
+--------------+
| compress('') |
+--------------+
| 0x |
+--------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
{
"title": "UNCOMPRESS",
"language": "en"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## Description
The UNCOMPRESS function is used to extract binary data into a string or value, and the binary data needs to be the result of 'COMPRESS'

## Syntax

```sql
UNCOMPRESS(<compressed_str>)
```

## Parameters

| Parameters | Description |
|--------------------|---------------|
| `<compressed_str>` | Compressed binary data |

The parameter type is varchar or string

## Return Value
The return value is the same as the input <compressed_str> type

Special cases:
- <compressed_str> Returns NULL if the binary data is not compressed.


## Example

``` sql
select uncompress(compress('abc'));
```
```text
+-----------------------------+
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add more cases which got NULL, or empty

| uncompress(compress('abc')) |
+-----------------------------+
| abc |
+-----------------------------+
```
```sql
select uncompress('0x03000000789C4B4C4A0600024D019');
```
```text
+-----------------------------------------------+
| uncompress('0x03000000789C4B4C4A0600024D019') |
+-----------------------------------------------+
| NULL |
+-----------------------------------------------+
```
`0x03000000789c4b4c4a0600024d019` is `compress('abc')` has carried on the tiny changes, it is illegal.
```sqp
select uncompress(compress(''));
```
```text
+--------------------------+
| uncompress(compress('')) |
+--------------------------+
| |
+--------------------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
{
"title": "COMPRESS",
"language": "zh-CN"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## 描述
COMPRESS 函数用于将字符串或值压缩成二进制数据,压缩后的数据可通过 `UNCOMPRESS` 函数解压还原。

## 语法

```sql
COMPRESS(<uncompresse_str>)
```

## 参数

| 参数 | 说明 |
|--------------------|---------------|
| `<uncompressed_str>` | 未压缩的原串 |

参数类型是varchar或者string

## 返回值
返回串与输入的 <uncompressed_str> 类型一致
返回串的前十位是原串长度的十六进制形式, 例如: 0x01000000。后面的是压缩值。
特殊情况:
- <uncompressed_str> 输入为 ‘’ 时,返回 '0x'

## 举例

``` sql
select compress('abc');
```
```text
+----------------------------------+
| compress('abc') |
+----------------------------------+
| 0x03000000789C4B4C4A0600024D0127 |
+----------------------------------+
```
```sql
select compress('');
```
```text
+--------------+
| compress('') |
+--------------+
| 0x |
+--------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
---
{
"title": "UNCOMPRESS",
"language": "zh-CN"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## 描述
UNCOMPRESS 函数用于将二进制数据解压缩成字符串或值,二进制数据需要是`COMPRESS`的结果

## 语法

```sql
UNCOMPRESS(<compressed_str>)
```

## 参数

| 参数 | 说明 |
|--------------------|---------------|
| `<compressed_str>` | 压缩得到的二进制数据 |

参数类型是varchar或者string

## 返回值
返回值与输入的 <compressed_str> 类型一致
特殊情况:
- <compressed_str> 输入不是`COMPRESS`得到的二进制数据时, 返回 NULL.


## 举例

``` sql
select uncompress(compress('abc'));
```
```text
+-----------------------------+
| uncompress(compress('abc')) |
+-----------------------------+
| abc |
+-----------------------------+
```
```sql
select uncompress('0x03000000789C4B4C4A0600024D019');
```
```text
+-----------------------------------------------+
| uncompress('0x03000000789C4B4C4A0600024D019') |
+-----------------------------------------------+
| NULL |
+-----------------------------------------------+
```
`0x03000000789C4B4C4A0600024D019`是compress('abc')进行了微小的修改,它是非法的。
```sql
select uncompress(compress(''));
```
```text
+--------------------------+
| uncompress(compress('')) |
+--------------------------+
| |
+--------------------------+
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
{
"title": "COMPRESS",
"language": "zh-CN"
}
---

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->

## 描述
COMPRESS 函数用于将字符串或值压缩成二进制数据,压缩后的数据可通过 `UNCOMPRESS` 函数解压还原。

## 语法

```sql
COMPRESS(<uncompressed_str>)
```

## 参数

| 参数 | 说明 |
|--------------------|---------------|
| `<uncompressed_str>` | 未压缩的原串 |

参数类型是varchar或者string

## 返回值
返回串与输入的 <uncompressed_str> 类型一致
返回串的前十位是原串长度的十六进制形式, 例如: 0x01000000。后面的是压缩值。
特殊情况:
- <uncompressed_str> 输入为 ‘’ 时,返回 '0x'

## 举例

``` sql
select compress('abc');
```
```text
+----------------------------------+
| compress('abc') |
+----------------------------------+
| 0x03000000789C4B4C4A0600024D0127 |
+----------------------------------+
```
```sql
select compress('');
```
```text
+--------------+
| compress('') |
+--------------+
| 0x |
+--------------+
```
Loading