GoogleSQL for Spanner supports compression functions.
Compression functions compress or decompress bytes or string values using the Zstandard (Zstd) lossless data compression algorithm.
Function list
| Name | Summary |
|---|---|
ZSTD_COMPRESS
|
Compresses STRING
or BYTES
input into BYTES
output using the Zstandard (Zstd)
lossless data compression algorithm. |
ZSTD_DECOMPRESS_TO_BYTES
|
Decompresses BYTES
input into BYTES
output using
the Zstandard (Zstd)
lossless data compression algorithm. |
ZSTD_DECOMPRESS_TO_STRING
|
Decompress BYTES
input into STRING
output using
the Zstandard (Zstd)
lossless data compression algorithm. |
ZSTD_COMPRESS
ZSTD_COMPRESS
(
string_or_bytes_value
,
level
=
>
3
)
Description
Compresses STRING
or BYTES
input into BYTES
output using the Zstandard (Zstd) lossless
data compression algorithm.
Arguments:
-
string_or_bytes_value: The SQL value to compress. -
level: Optional. The Zstd compression level. The default is 3. You can setlevelto an integer value between -5 and 22. A higher value results in a better compression ratio at the cost of slower performance.
Return type
BYTES
: Base64-encoded bytes.
Example
SELECT
ZSTD_COMPRESS
(
'string_value'
)
AS
result
;
/*------------------------------+
| result |
+------------------------------+
| KLUv/SAMYQAAc3RyaW5nX3ZhbHVl |
+------------------------------*/
SELECT
ZSTD_COMPRESS
(
b
'bytes_value'
,
level
=
>
1
);
/*------------------------------+
| result |
+------------------------------+
| KLUv/SALWQAAYnl0ZXNfdmFsdWU= |
+------------------------------*/
This function returns NULL
if the input is NULL
:
SELECT
ZSTD_COMPRESS
(
NULL
)
AS
result
;
/*------------+
| result |
+------------+
| NULL |
+------------*/
ZSTD_DECOMPRESS_TO_BYTES
ZSTD_DECOMPRESS_TO_BYTES
(
bytes_value
,
size_limit
=
>
1024
*
1024
*
1024
)
Description
Decompresses BYTES
input into BYTES
using the
Zstandard (Zstd) lossless data compression algorithm.
Arguments:
-
bytes_value: The bytes to decompress. -
size_limit: Optional. The size limit of returned decompressed bytes. The default value is one GiB. You can set this limit to a lower value to minimize the risk ofZSTD_DECOMPRESS_TO_BYTEScausing server memory issues.
Return type
BYTES
: Base64-encoded bytes.
Example
SELECT
ZSTD_DECOMPRESS_TO_BYTES
(
ZSTD_COMPRESS
(
b
'bytes'
))
AS
result
;
/*------------+
| result |
+------------+
| Ynl0ZXM= |
+------------*/
If compressed bytes exceed the size_limit
value, ZSTD_DECOMPRESS_TO_BYTES
returns an error:
SELECT
ZSTD_DECOMPRESS_TO_BYTES
(
ZSTD_COMPRESS
(
b
'bytes'
),
size_limit
=
>
1
)
AS
result
;
Statement
failed
:
ZSTD
output
is
too
large
:
(
5
bytes
)
>
limit
(
1
bytes
)
This function returns NULL
if the input is NULL
:
SELECT
ZSTD_DECOMPRESS_TO_BYTES
(
NULL
)
AS
result
;
/*------------+
| result |
+------------+
| NULL |
+------------*/
ZSTD_DECOMPRESS_TO_STRING
ZSTD_DECOMPRESS_TO_STRING
(
bytes_value
,
size_limit
=
>
1024
*
1024
*
1024
)
Description
Decompress BYTES
input into STRING
output using the
Zstandard (Zstd) lossless data compression algorithm.
Arguments:
-
bytes_value: The bytes to decompress. -
size_limit: Optional. The size limit of returned decompressed string. The default value is one GiB. You can set this limit to a lower value to minimize the risk ofZSTD_DECOMPRESS_TO_STRINGcausing server memory issues.
Return type
STRING
Example
SELECT
ZSTD_DECOMPRESS_TO_STRING
(
ZSTD_COMPRESS
(
'zstd'
))
AS
result
;
/*----------+
| result |
+----------+
| "zstd" |
+----------*/
If compressed bytes exceed the size_limit
value, ZSTD_DECOMPRESS_TO_STRING
returns an error:
SELECT
ZSTD_DECOMPRESS_TO_STRING
(
ZSTD_COMPRESS
(
'zstd'
),
size_limit
=
>
1
)
AS
result
;
Statement
failed
:
ZSTD
output
is
too
large
:
(
4
bytes
)
>
limit
(
1
bytes
)
This function returns NULL
if the input is NULL
:
SELECT
ZSTD_DECOMPRESS_TO_STRING
(
NULL
)
AS
result
;
/*------------+
| result |
+------------+
| NULL |
+------------*/

