1
0
mirror of https://github.com/timescale/timescaledb.git synced 2025-05-23 22:41:34 +08:00
timescaledb/tsl/test/expected/compression_algos.out
Matvey Arye b4a7108492 Integrate segment meta into compression
This commit integrates the SegmentMetaMinMax into the
compression logic. It adds metadata columns to the compressed table
and correctly sets it upon compression.

We also fix several errors with datum detoasting in SegmentMetaMinMax
2019-10-29 19:02:58 -04:00

1264 lines
98 KiB
Plaintext

-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
--install necessary functions for tests
\c :TEST_DBNAME :ROLE_SUPERUSER
CREATE OR REPLACE FUNCTION ts_test_compression() RETURNS VOID
AS :TSL_MODULE_PATHNAME LANGUAGE C VOLATILE;
\ir include/compression_utils.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
\c :TEST_DBNAME :ROLE_DEFAULT_PERM_USER
------------------
-- C unit tests --
------------------
SELECT ts_test_compression();
ts_test_compression
---------------------
(1 row)
\ir include/rand_generator.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
--------------------------
-- cheap rand generator --
--------------------------
create table rand_minstd_state(i bigint);
create function rand_minstd_advance(bigint) returns bigint
language sql immutable as
$$
select (16807 * $1) % 2147483647
$$;
create function gen_rand_minstd() returns bigint
language sql security definer as
$$
update rand_minstd_state set i = rand_minstd_advance(i) returning i
$$;
-- seed the random num generator
insert into rand_minstd_state values (321);
------------------------
-- BIGINT Compression --
------------------------
SELECT
$$
select item from base_ints order by rn
$$ AS "QUERY"
\gset
\set TYPE BIGINT
\set COMPRESSION_CMD _timescaledb_internal.compress_deltadelta(item)
\set DECOMPRESS_FORWARD_CMD _timescaledb_internal.decompress_forward(c::_timescaledb_internal.compressed_data, NULL::BIGINT)
\set DECOMPRESS_REVERSE_CMD _timescaledb_internal.decompress_reverse(c::_timescaledb_internal.compressed_data, NULL::BIGINT)
-- random order
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, item::bigint FROM (select sub.item from (SELECT generate_series(1, 1000) item) as sub ORDER BY gen_rand_minstd()) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
psql:include/compression_test.sql:7: NOTICE: table "compressed" does not exist, skipping
compressed size
-----------------
1728
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
-- ascending order with nulls
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, item::bigint FROM (SELECT generate_series(1, 1000) item) sub;
INSERT INTO base_ints VALUES (0, NULL), (10, NULL), (10000, NULL);
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
93
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
SELECT c ints_text FROM compressed;
ints_text
--------------------------------------------------------------------------------------------------------------------------
BAEAAAAAAAAD6AAAAAAAAAABAAAD6AAAAAIAAAAAAAAA8gAAAAAAAAACAAA8gAAAAAAAAAPrAAAAAwAAAAAAAAHxAAAAAAAABAEAADqgAAAAAAAAAAAAAAAB
(1 row)
DROP TABLE base_ints;
-- single element
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, item::bigint FROM (SELECT generate_series(1, 1) item) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
45
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
-- really big deltas
SELECT 9223372036854775807 as big_int_max \gset
SELECT -9223372036854775808 as big_int_min \gset
CREATE TABLE base_ints AS SELECT row_number() over () as rn, item FROM
(
VALUES
--big deltas
(0), (:big_int_max), (:big_int_min), (:big_int_max), (:big_int_min),
(0), (:big_int_min), (32), (5), (:big_int_min), (-52), (:big_int_max),
(1000),
--big delta_deltas
(0), (:big_int_max), (:big_int_max), (:big_int_min), (:big_int_min), (:big_int_max), (:big_int_max),
(0), (:big_int_max-1), (:big_int_max-1), (:big_int_min), (:big_int_min), (:big_int_max-1), (:big_int_max-1)
) as t(item);
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
184
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
-- NULLs
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, NULLIF(i, 5) item FROM generate_series(1::BIGINT, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
69
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, NULLIF(i, 1) item FROM generate_series(1::BIGINT, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
69
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, NULLIF(i, 10) item FROM generate_series(1::BIGINT, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
69
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, NULLIF(NULLIF(NULLIF(NULLIF(i, 2), 4), 5), 8) item FROM generate_series(1::BIGINT, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
69
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
------------------------
-- INT Compression --
------------------------
--kinda silly test for now since compressed as bigint anyway
--TODO add proper int support
--TODO add proper smallint support and tests
CREATE TABLE base_ints AS SELECT row_number() OVER() as rn, item::int FROM (select sub.item from (SELECT generate_series(1, 1000) item) as sub ORDER BY gen_rand_minstd()) sub;
SELECT
$$
select item::bigint from base_ints order by rn
$$ AS "QUERY"
\gset
\set TYPE BIGINT
\set COMPRESSION_CMD _timescaledb_internal.compress_deltadelta(item::bigint)
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
1728
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_ints;
-----------------------------
-- TIMESTAMPTZ Compression --
-----------------------------
SELECT
$$
select item from base_time order by rn
$$ AS "QUERY"
\gset
\set TYPE TIMESTAMPTZ
\set COMPRESSION_CMD _timescaledb_internal.compress_deltadelta(item)
\set DECOMPRESS_FORWARD_CMD _timescaledb_internal.decompress_forward(c::_timescaledb_internal.compressed_data, NULL::TIMESTAMPTZ)
\set DECOMPRESS_REVERSE_CMD _timescaledb_internal.decompress_reverse(c::_timescaledb_internal.compressed_data, NULL::TIMESTAMPTZ)
CREATE TABLE base_time AS SELECT row_number() OVER() as rn, item FROM
(select sub.item from (SELECT generate_series('2018-03-02 1:00'::TIMESTAMPTZ, '2018-03-28 1:00', '1 hour') item) as sub ORDER BY gen_rand_minstd()) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
5332
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_time;
------------------------
-- DOUBLE Compression --
------------------------
SELECT
$$
select item from base_doubles order by rn
$$ AS "QUERY"
\gset
SELECT 'DOUBLE PRECISION' as "TYPE" \gset
\set COMPRESSION_CMD _timescaledb_internal.compress_gorilla(item)
SELECT '_timescaledb_internal.decompress_forward(c::_timescaledb_internal.compressed_data, NULL::DOUBLE PRECISION)' AS "DECOMPRESS_FORWARD_CMD" \gset
SELECT '_timescaledb_internal.decompress_reverse(c::_timescaledb_internal.compressed_data, NULL::DOUBLE PRECISION)' AS "DECOMPRESS_REVERSE_CMD" \gset
CREATE TABLE base_doubles AS SELECT row_number() OVER() as rn, item::double precision FROM
(select sub.item from (SELECT generate_series(1, 1000) item) as sub ORDER BY gen_rand_minstd()) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
1808
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
SELECT c gorilla_text FROM compressed;
gorilla_text
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AwBAe9AAAAAAAAAAA+gAAAABAAAAAAAAAA8AAD6AAAAAAQAAA+gAAAAEAAAAAAAA8f8AAAQQAAAAAQAAG/AAAAAAAAAAAAAAGFsAABqAAAAAAAAAAAcwggooggggggGIIIIIIINMICETDCCCCyCCggooohAgwo0IINIIIIONIDCSSiDEDjDTAAAgwgowEEgAAABIAAAABQAAAAAABURFBrWoSpTWsZLd2bx925R8edzHeqXWhNKZ2TdVfcjd3WcGpYk9HNOs6QAAAMg0ZejfXftmAzFj/WfPPef8X/X/XqufB+P/kcu7vc2E7EGeb/N8d9n+P/++mn+B3y757qdTc+cMO+/sDwh6c9yabt/ee8PSPvf38J84bk1v2L7sFUj/oFG+Q2ASrf4vMRXZNgPQN94+09MyHUZYO9gq4Jvr4y5i7Dw7cIjFjviIRgKwBwVIasMJB8HUFJCaHALneS4lwMYLAFW+ee4vrX7kFxiDP/u/0NB883YajtB5g6gHz818c85BAJIaaQGWJvBYhH6MBUAVe0jYe/AugeoDX6oIB3YF3fkPxB/MLxgAEd5QnMVE8a7OdZhE/F31P9uG/ToYkDOLILqkMttQd0MIDrzF4NDDgEfXaYw5IBDyd7gqoZM6e+nyi+kTXR+olEVkvR6Y+VelPkNFPXwDgG904yUGIA8eWiCRztW2jsEF/D/ZmUwOdsBXngeH5gA+oJk+8C6DFCVu+QAgzHkT3CEj+sdQKqA0gB32vIn8YCD9XFR5N8ymIB3GhAKIYEOb6WB7AKFIdQgRYMT6YSgLkE192F49AdkBKgXrcmFfonz7+tiTAV8Uuowc7EX7cF8A/84f6GWdb/2YCYGoRQLz4S/CefAtCyB2wUb8fasEp2P4E+vAY93R33lHsHcLr6ASBwB8DkFsMPvz34UF/1au8ru8ZSXfCClxmzhkjn2R76DLexgjFyPf3Lbhn3sHtxl51BdN5dsuogM36j/YO5wiFBDjupEEPKAT3mT1gEyDj8XeHN5eLv6/Z/v0CAbQOgE8dBA+/XUBltEPD6wNFvhLDJTruBtgIwaIFUCWvYMm9Ug9Qf6UARBF5zdCM64e03q/wxlxMNMgBIA3rlNj6lAmf+ZfafPyXmcCt/D+38NAxe2v4HxfPnkXeWD41XwNAc/6Pf4OgY3scDoE86+PA/iA5APH7OSYAwHqAH6eqQE8ZMA5vaEMHBP0L77BU36BHBBPmPTMvvHU/gEILrA1CS9yBPn+QH21kmQNo4UBlBMBdA+YHEPP0oBp+oHEdI4U9owRoZX1HlPxWGK82hd1KhgNb4CH1wlLqF9CBeeA87ftCoxvwVf9Mkt7K++BdJ+/BAcM/7uP/SCwikfF/a0P+AcnObhBsf0fWMLIBYgGQwgFsGUHlCr+VCr+Dv9IS9OJ6AvBkR90hg6yBxv+35WhfgMaILQU+CiDcBWAovPD0nFcN8ETD0gUAeajNrmjQ0BFzVZ8aHJdJDHAkLsCXQIga22bdrD+Az+K/qv9g0Tn35AIwGHBAhvFoFJCEDPBkX6v0uNI4P9MC/BsQ0v3EFShCp4HlBMBji4/0BSQdgeAsD9EOQ6OAuz/fLwQIcT2F/vpn1v98ihhki+O9IImwRfT8d628UeAfkBs/94xTsgEg7YWQHSBSP3EXOPQA31+CoFQMm7wedj1/KgY9R2tR6f7WHu6X8g/zxAQSwNv5sBs0h5S9/eYP7i0DgggoO4DS7f63CgGkC+BowjH9P58EODiEVDr/hRQXIAqQMrnB1sDAB4BXhwNyOxDpBDr3l7u/72w/teyeCYOu0hJzMKHk6cIUAJenwKYVwWfpQc0JGGZFo+OIWEQnkEy3uL81+5AxtMpQI1Ox/sM+IR/q/wp8U9bHJcvAegKULJCj3MH+AU/mGFHAC2nzXcIS0EIGQBJfe+7AwgnH5QEO5MqcB+FQc79DCgB93kAOH634D/VCgBbBaf+wIwaQP3wH5loq2XgVFDaRwR3bXmrqjg1uq1bAQMMghQ3Qay1Giw0QZ68hh4AzbH9VAD3kyKUDPymLiZcQPATOtHTgqpnD71/+Dn+zRCaeizhyzMgDANwE7CQB2QjdCwvoHAC8FO5FzyHUeeuJRLg+gSELvepP8E8AxgIA87vA7XoEOeFxIQJI6GB3gHHKQcHl0PnhUMG142fA9AiPtv7Idzon2/sqGMDqUXU/gnwhYDTmcB05JZWCk8mxH3iA/gK0I161Tp1aBmAHOWwQgLH8/yv/eAX9O8jf//uILISNva5mDg+U4eu8CoFeXrU2mFTIX9pDSeZBTcxRGgOT4CZz3/4p+wA2CUDDvqfrFN3TuQvKP/Oi0Ipf3AAf78fnyYDd0E4CaEG9feApYIX/QLz1eHn0yHrDL5rMpPzMK0AAPgP65hhGA==
(1 row)
DROP TABLE base_doubles;
-- single element
CREATE TABLE base_doubles AS SELECT row_number() OVER() as rn, item::double precision FROM (SELECT generate_series(1, 1) item) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
109
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_doubles;
--special values
CREATE TABLE base_doubles AS SELECT row_number() over () as rn, item FROM
(
VALUES
--special
(0::double precision), ('Infinity'), ('-Infinity'), ('NaN'),
--big deltas
(0), ('Infinity'), ('-Infinity'), ('Infinity'), ('-Infinity'),
(0), ('-Infinity'), (32), (5), ('-Infinity'), (-52), ('Infinity'),
(1000),
--big delta_deltas
(0), ('Infinity'), ('Infinity'), ('-Infinity'), ('-Infinity'), ('Infinity'), ('Infinity')
) as t(item);
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
152
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_doubles;
-- all 0s
CREATE TABLE base_doubles AS SELECT row_number() over () as rn, 0::FLOAT(50) as item FROM (SELECT generate_series(1, 1000) ) j;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
160
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_doubles;
-- NULLs
CREATE TABLE base_doubles AS SELECT row_number() OVER() as rn, NULLIF(i, 5)::DOUBLE PRECISION item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
136
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_doubles;
CREATE TABLE base_doubles AS SELECT row_number() OVER() as rn, NULLIF(i, 1)::DOUBLE PRECISION item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
136
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_doubles;
CREATE TABLE base_doubles AS SELECT row_number() OVER() as rn, NULLIF(i, 10)::DOUBLE PRECISION item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
136
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_doubles;
CREATE TABLE base_doubles AS SELECT row_number() OVER() as rn, NULLIF(NULLIF(NULLIF(NULLIF(i, 2), 4), 5), 8)::DOUBLE PRECISION item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
136
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_doubles;
------------------------
-- Dictionary Compression --
------------------------
SELECT
$$
select item from base_texts order by rn
$$ AS "QUERY"
\gset
SELECT 'TEXT' as "TYPE" \gset
\set COMPRESSION_CMD _timescaledb_internal.compress_dictionary(item)
\set DECOMPRESS_FORWARD_CMD _timescaledb_internal.decompress_forward(c::_timescaledb_internal.compressed_data, NULL::TEXT)
\set DECOMPRESS_REVERSE_CMD _timescaledb_internal.decompress_reverse(c::_timescaledb_internal.compressed_data, NULL::TEXT)
-- high cardinality
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, item::text FROM
(select sub.item from (SELECT generate_series(1, 1000) item) as sub ORDER BY gen_rand_minstd()) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
4056
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
SELECT c from compressed;
c
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AQBwZ19jYXRhbG9nAHRleHQAAAEAAAPoAAAAAzM0OQAAAAM4NjMAAAACNDUAAAADOTc4AAAAAzEwMQAAAAM1MjcAAAADOTUxAAAAAzYyOQAAAAM2NTcAAAADMjU5AAAAAzU5OQAAAAM1MzAAAAADMTI2AAAAAzc1OAAAAAI2MQAAAAMyMjIAAAACNTkAAAADMzUyAAAAAzI3OQAAAAM0NzQAAAADMzg5AAAAAzUxMAAAAAI2MgAAAAM2OTYAAAABMwAAAAM3MDAAAAADMzE3AAAAAzM3OAAAAAM0MTEAAAADNjI0AAAAAzQ4MQAAAAM3NzEAAAADMjE1AAAAAzgxNwAAAAM3NzIAAAADOTA0AAAAAzU5NQAAAAM3NTYAAAADNjE3AAAAAzk1MwAAAAMyMTAAAAADODIzAAAAAzUzNAAAAAM2NTQAAAADMjAxAAAAAjE2AAAAAzkzNgAAAAM3ODQAAAADODQzAAAAAzUwNgAAAAM2NzMAAAADMzYzAAAAAzYzNgAAAAI1OAAAAAM1MDMAAAADMTk1AAAAAzU1MwAAAAMxNDcAAAADOTAxAAAAAzIyMQAAAAMxMjEAAAADNjYxAAAAAzU4NAAAAAM2MDkAAAADNDQ2AAAAAzkwNgAAAAM2MDcAAAADMzYxAAAAAzY0NwAAAAM4MDgAAAADOTc5AAAAAzQ4MAAAAAM5MjMAAAADNzYxAAAAAzI0MwAAAAMzMjEAAAADMjE3AAAAAjM5AAAAAzYwMwAAAAMzNjkAAAADOTM4AAAAAzcyMQAAAAI4MgAAAAM4ODkAAAADMjM2AAAAAzk1NAAAAAMxMTUAAAADNzgyAAAAAzk3NgAAAAMyMDcAAAADNDU4AAAAAzQxMwAAAAM4MjAAAAADODg3AAAAAzk2OQAAAAIxOQAAAAM1MjYAAAADMzQwAAAAAzQ2MgAAAAM1ODYAAAADNTMxAAAAAzQzNgAAAAM3ODEAAAADOTkxAAAAAzQzMgAAAAM4MjUAAAADNTE0AAAAAzYxMQAAAAM0MDAAAAADNjA1AAAAAzQzMwAAAAMzNjYAAAADNjc2AAAAAzE1OQAAAAM1MDUAAAABNQAAAAMxMTIAAAADNDUyAAAAAzYwMgAAAAM2NzIAAAADMzkyAAAAAjM4AAAAAzE2MwAAAAM0ODcAAAADNjI1AAAAAzQ4NAAAAAM3MTIAAAADODM2AAAAAjM3AAAAAzgwNwAAAAM1MzYAAAADNjkzAAAAAzk2MAAAAAMxNTEAAAADMTU3AAAAAzEzMAAAAAM3ODkAAAADOTMyAAAAAzc0MQAAAAM2NDEAAAADOTYxAAAAAzk1MAAAAAMzMDQAAAADNDA1AAAAAzMyNgAAAAM2MTgAAAACNDIAAAADNTUxAAAAAzE3NgAAAAM4ODEAAAADMTc4AAAAAzQwMwAAAAI3MwAAAAI2NwAAAAM0MzgAAAADMjg0AAAAAzgyNgAAAAM5MTAAAAADNTA0AAAAAzgyOAAAAAI0NAAAAAMzNzYAAAADNTkwAAAAAzgzMgAAAAM3MzQAAAADNjcxAAAAAzk2NgAAAAM1ODAAAAADMTU1AAAAAzMyNwAAAAIyNQAAAAM5ODQAAAACMTgAAAADODc0AAAAAzk5NwAAAAMxMDgAAAADMTg3AAAAAzU3NwAAAAM1MTUAAAACMjkAAAACNTEAAAADMjk4AAAAAzczNgAAAAMyMjAAAAACNDkAAAADODgwAAAAAzQwOQAAAAM0MTcAAAADNzU1AAAAAzE5MAAAAAM0NDUAAAADNTYxAAAAAzcxNAAAAAI1MAAAAAM3NDYAAAADNDMxAAAAAzc5NAAAAAM3MjgAAAADNzQzAAAAAzk3MAAAAAM1NDUAAAADMTk0AAAAAzg3MQAAAAM4MjIAAAACMTAAAAADMzY1AAAAAzQ5MgAAAAMzMzUAAAADNTQ2AAAAAzQyMQAAAAM2MDYAAAADODAwAAAAAzkwNwAAAAM3MTcAAAADOTEzAAAAAzE0MwAAAAMxNzUAAAADNDgzAAAAAzE5OQAAAAMzMTYAAAADNDUxAAAAAzk0MAAAAAM0MzUAAAABOAAAAAM5MzQAAAADNTYzAAAAATIAAAADMTA0AAAAAzM0MgAAAAM0MjQAAAADMTUzAAAAAzc3OQAAAAM0MzcAAAADMzI0AAAAAzg0OQAAAAM2NzQAAAADMzMyAAAAAzgwMQAAAAM5MzAAAAADODA1AAAAAzE4MwAAAAM0MTgAAAADMzY4AAAAAzM5MAAAAAMxODIAAAADODU3AAAAAzU2OQAAAAM2NjMAAAADNjA0AAAAAzQzOQAAAAMyMzkAAAADMTM3AAAAAzE4OQAAAAMxMzQAAAADOTE0AAAAAzE4MAAAAAMzMDUAAAADNTg5AAAAAzIyNwAAAAM2NDkAAAADMzgzAAAAAzg4NgAAAAM3MTUAAAADNzEwAAAAAzMyOQAAAAM3MDMAAAADOTE5AAAAAzUyMQAAAAM4NDcAAAADOTg3AAAAAzYxNgAAAAMzMjgAAAADNTA4AAAAAzIzMAAAAAMzMDEAAAADMjI4AAAAAzgzOAAAAAM1MjUAAAADNDk3AAAAAzIwNgAAAAM0MDcAAAAEMTAwMAAAAAMzOTYAAAADNzA5AAAAAzkzMQAAAAM3NzMAAAADNjkxAAAAAzYwOAAAAAM3NTIAAAADOTU1AAAAAzQ5NQAAAAM0ODYAAAACNzgAAAADNjY1AAAAAzc4NwAAAAMxNTIAAAADMjUzAAAAAzk3MgAAAAM2ODQAAAADNzc0AAAAAzU2OAAAAAM3NTEAAAADNjU1AAAAAzMzOQAAAAM5MDUAAAADMzU4AAAAAzc5NwAAAAMzNDEAAAADMzk1AAAAAzM0NwAAAAM4MTEAAAADMzE4AAAAAzI5NAAAAAMyMzgAAAADNTgyAAAAAzU3NgAAAAM4NTMAAAADNjU5AAAAAzkxMgAAAAM4OTAAAAADNzM4AAAAAzU3MQAAAAM0NTQAAAADODI5AAAAAzk1NgAAAAMzODQAAAADNDY4AAAAAzE4NQAAAAMyNDkAAAADODY0AAAAAzM1MAAAAAI4NwAAAAM0NDgAAAADMzU2AAAAAzIyNAAAAAM4OTMAAAADNDA2AAAAAzQ0MAAAAAMyNjkAAAABNwAAAAI5OAAAAAI2NQAAAAIzNgAAAAM1ODMAAAABOQAAAAMyNTUAAAADMTIzAAAAAzE0MQAAAAM3MDIAAAADODY1AAAAAjI4AAAAAzE2NgAAAAMzNzcAAAADNTEzAAAAAzk1OQAAAAM3OTkAAAADOTM3AAAAAzk0MgAAAAMxMjkAAAADNzA0AAAAAzg3NwAAAAI3NAAAAAI3MgAAAAM1NzUAAAADMjkyAAAAAzc4OAAAAAM1OTgAAAADNjY4AAAAAzM1NAAAAAM4MTkAAAADMzIwAAAAAzY1MAAAAAM4NTkAAAADNTQ4AAAAAzc3NwAAAAM0NjUAAAADMjU3AAAAAzI0MQAAAAM3NzYAAAACOTkAAAADNDczAAAAAjE0AAAAAzMyMgAAAAM5OTkAAAACMTcAAAADMjIzAAAAAzc0MAAAAAMxNjAAAAADMzg3AAAAAjEzAAAAAjY2AAAAAzE3MAAAAAM3OTYAAAADODU4AAAAAzE4OAAAAAMyODYAAAADMjAyAAAAAzE4MQAAAAM3MjYAAAADMTc3AAAAATQAAAADMzU3AAAAAjQ2AAAAAzM3MQAAAAMxMzgAAAADNDk2AAAAAzkwMgAAAAM3NTkAAAACNDEAAAADMjI5AAAAAzcwNQAAAAM1NDcAAAADNDI5AAAAAzE5MwAAAAM3MjIAAAADODYxAAAAAzE1OAAAAAM0OTgAAAADNjEzAAAAAzM4OAAAAAM1NjAAAAADNTQxAAAAAzI0NAAAAAMxNjIAAAADNTY0AAAAAzU1NgAAAAM3NDIAAAADNTMzAAAAAzQ3MgAAAAM0NjcAAAADMjgwAAAAAzc1MAAAAAI5MQAAAAMyODkAAAADODQ1AAAAAzUwOQAAAAM2NTMAAAADNzgzAAAAAzc5MQAAAAM5ODEAAAADNjMwAAAAAzM3MwAAAAMzMDAAAAADNjQwAAAAAzk3NAAAAAM0NDcAAAADNjI2AAAAAzk4NQAAAAM2NjAAAAADNjg2AAAAAjMyAAAAAzE1NAAAAAMyMTkAAAADODg1AAAAAzcwMQAAAAM2MzUAAAADODM5AAAAAzQxNgAAAAM2ODUAAAADMjUyAAAAAzM5MQAAAAMzODYAAAADODQ0AAAAAzg4MwAAAAM0NzcAAAADMjEyAAAAAzU1NAAAAAMzOTgAAAADMzIzAAAAAzE5NwAAAAI4MQAAAAM2OTcAAAADNjY0AAAAAzYwMQAAAAM2NDUAAAADNjk5AAAAAzIyNQAAAAI4OAAAAAM0ODIAAAADMzcyAAAAAjIzAAAAAzY1OAAAAAM4MTUAAAADNTk0AAAAAzk5MwAAAAM1MjQAAAADMTEwAAAAAzc5MAAAAAMxNTAAAAADNjEyAAAAAjEyAAAAAzE0MgAAAAM1NjcAAAADODUwAAAAAzg0NgAAAAM1MjMAAAADMjU4AAAAAzMzMwAAAAIzMQAAAAM0MjMAAAADNDkxAAAAAzQ2MwAAAAM0NDQAAAADMzA3AAAAAjc3AAAAAzYxNQAAAAMxMDkAAAADNTg4AAAAAzYyMQAAAAM3NzUAAAADMzUxAAAAAzY3OQAAAAM1NzIAAAADODc4AAAAAzk0OQAAAAM5OTYAAAADNDk5AAAAAzUyMAAAAAMxNzMAAAADNTU4AAAAAjk0AAAAAzM0NQAAAAI5NgAAAAMyODUAAAADNzY3AAAAAzg3OQAAAAMyNjgAAAADOTkwAAAAAzczNQAAAAM5ODAAAAADMjgxAAAAAzY4MQAAAAMxMTQAAAADNzQ5AAAAAzk5NQAAAAI5MwAAAAM5OTQAAAADMjEzAAAAAzUxNgAAAAMxMDIAAAADNTUyAAAAAzU5MwAAAAMzODEAAAADMzgyAAAAAjk1AAAAAzE2NAAAAAM4OTgAAAADOTY0AAAAAzI3MwAAAAM5MjIAAAADNzIwAAAAAzM5NAAAAAIzMAAAAAM3MTYAAAADMTA1AAAAAzg3NQAAAAM3NjIAAAADNTkxAAAAAzk3NwAAAAM3NzgAAAADNjQ4AAAAAzc2OQAAAAM2NzUAAAADNzk1AAAAAzg2OQAAAAMzNDQAAAADOTQ4AAAAAzQyOAAAAAM2MTQAAAADNTE5AAAAAzE3NAAAAAMxNDgAAAADNDkwAAAAAzI4MgAAAAM1OTIAAAADOTgzAAAAAzM5NwAAAAMxOTIAAAADMzQzAAAAAzI3NQAAAAM1NzMAAAADNjE5AAAAAzMwNgAAAAM0MzQAAAACMjAAAAADODk3AAAAAzI2MwAAAAM4OTUAAAADODUxAAAAAzI1MAAAAAMyMzMAAAADNTc0AAAAAzg3MAAAAAMyNjEAAAADNDI1AAAAAzI4NwAAAAM1NDIAAAABMQAAAAM4MTYAAAADNzY2AAAAAjU1AAAAAzg5NAAAAAMyNDgAAAADNDg1AAAAAzI1MQAAAAM1MjkAAAADNzkyAAAAAzUzNwAAAAM2OTIAAAADOTUyAAAAAzczMwAAAAM2NzcAAAACOTIAAAADMTQ1AAAAAzYzMwAAAAM1MzIAAAADNjY5AAAAAjcxAAAAAzg2MgAAAAE2AAAAAzg5MQAAAAMxMDMAAAADNzcwAAAAAzI5MwAAAAM1NzkAAAACOTAAAAADNzA4AAAAAzU5NgAAAAM4MTQAAAADMzU5AAAAAzY0MgAAAAM5MzkAAAADMzY0AAAAAzIwNAAAAAM0OTQAAAADMjA4AAAAAzExMwAAAAM3NDUAAAACNzkAAAADMzQ4AAAAAjU3AAAAAzU0MwAAAAMzOTMAAAADNDU2AAAAAzMxMAAAAAM5MjQAAAADMjcwAAAAAzk3NQAAAAM5NDMAAAADMjE4AAAAAzM3NQAAAAMxNjUAAAADMTU2AAAAAzczOQAAAAMzNTUAAAADODU0AAAAAzEzNQAAAAM4MzAAAAADMzY3AAAAAzMwMgAAAAIyMgAAAAM0NzgAAAADNzY1AAAAAzI0MgAAAAMyOTUAAAADNzg1AAAAAzg4OAAAAAMzODUAAAACNDcAAAADNTM1AAAAAzU0NAAAAAMyMDAAAAADMTM5AAAAAzgyNAAAAAMxMTkAAAADNDU1AAAAAzE3OQAAAAM2NDQAAAADNTU1AAAAAzY4MgAAAAMyNjcAAAADMTkxAAAAAzgzNAAAAAMyMDkAAAADNjMxAAAAAzU3OAAAAAM5NDQAAAADNjgzAAAAAzEyMgAAAAIyMQAAAAM4ODQAAAADMzEyAAAAAzkzMwAAAAM0NDkAAAADNDU5AAAAAzI3NAAAAAMyNzIAAAADODQxAAAAAzI5MAAAAAI2NAAAAAMzNzkAAAADNTU5AAAAAzI5NwAAAAM1MTIAAAADOTE1AAAAAzQyNwAAAAM0MDQAAAADMzE1AAAAAzIzNwAAAAM4NDAAAAADMjYyAAAAAzY3OAAAAAMyODgAAAACNDgAAAADMjMyAAAAAzc0NAAAAAM5MjcAAAADMjU2AAAAAzk1NwAAAAM5NDUAAAADODk5AAAAAzI2MAAAAAMxMzMAAAADNTU3AAAAAzc2MwAAAAM2NzAAAAADMjkxAAAAAzg2OAAAAAMxNjEAAAADMzk5AAAAAzczMAAAAAM1MTEAAAACMjcAAAADNTAyAAAAAzYyMgAAAAM1NDkAAAADNDI2AAAAAjg0AAAAAjYzAAAAAzUyOAAAAAM3MjUAAAACNzAAAAADMjM1AAAAAzUzOAAAAAM0NzkAAAADOTE4AAAAAzY1MQAAAAM0MTkAAAADMzM2AAAAAzk5OAAAAAMxMjQAAAADMjQ3AAAAAzI5OQAAAAM1ODEAAAADMjMxAAAAAzMzMQAAAAMxNjcAAAADMjA1AAAAAzc5OAAAAAM2MjMAAAADNDMwAAAAAjg5AAAAAzI2NQAAAAM0ODkAAAACMTUAAAADMjc4AAAAAzgxOAAAAAM4NTIAAAACOTcAAAADNjIwAAAAAjU2AAAAAzkyMAAAAAM1NTAAAAADODczAAAAAzQ1NwAAAAM2NjIAAAADNDUwAAAAAzExOAAAAAM3MTgAAAADNzI3AAAAAzMwOQAAAAMyNzcAAAADNzExAAAAAzYwMAAAAAMzNDYAAAADNTAwAAAAAzg3NgAAAAM3NTQAAAADMzM0AAAAAzIzNAAAAAMxMzIAAAADMjE2AAAAAzc2OAAAAAMzNzAAAAADODgyAAAAAzI1NAAAAAM3MDcAAAADODY2AAAAAzE2OAAAAAMzMzAAAAADNTIyAAAAAzk2MgAAAAM3NDcAAAADNjgwAAAAAzg0MgAAAAM3NjQAAAADODkyAAAAAzI5NgAAAAM4NzIAAAADOTczAAAAAzQwMgAAAAM4NTUAAAADNDA4AAAAAzkzNQAAAAMzMTkAAAADNzYwAAAAAzYyOAAAAAM0MDEAAAADNDQyAAAAAjUyAAAAAzQyMAAAAAI3NQAAAAM4MDkAAAADNzU3AAAAAzI0NgAAAAM5MDAAAAACNzYAAAADNjk1AAAAAzc0OAAAAAMxMzYAAAACMzUAAAADMjAzAAAAAzczMgAAAAM4MzUAAAADMzE0AAAAAzYzOAAAAAM2ODcAAAADMTI4AAAAAzkyOAAAAAIzNAAAAAM3MjQAAAADODAyAAAAAzc1MwAAAAM4MDYAAAADNjQzAAAAAzkyNgAAAAMzMTMAAAADMTA3AAAAAzY5MAAAAAM5NjcAAAADNTA3AAAAAzQ4OAAAAAM2MzIAAAADOTA4AAAAAzQ5MwAAAAMxNDYAAAADMzExAAAAAzE0MAAAAAMzODAAAAADNjY3AAAAAzk4MgAAAAMxMjUAAAADOTA5AAAAAzk2OAAAAAM4MjcAAAADODAzAAAAAzE5OAAAAAM0MTUAAAADMjc2AAAAAzQ3MAAAAAMzNjIAAAADODM3AAAAAzk2MwAAAAM5NDEAAAADODk2AAAAAzcxOQAAAAM0NjAAAAADOTI1AAAAAzYyNwAAAAMzNjAAAAADODQ4AAAAAzg2MAAAAAM4MDQAAAADNzMxAAAAAzc4MAAAAAIzMwAAAAMyNzEAAAADMzA4AAAAAzExNgAAAAM5MTEAAAADOTQ2AAAAAzU4NQAAAAMzNTMAAAADNjM5AAAAAjgwAAAAAzMzNwAAAAMxMjcAAAADNTM5AAAAAzY5OAAAAAM4NjcAAAADNDcxAAAAAzY5NAAAAAI4NgAAAAM3MjkAAAADNDY2AAAAAzE3MgAAAAM3MTMAAAADOTY1AAAAAzg1NgAAAAM5MjEAAAADOTI5AAAAAjgzAAAAAzQ0MQAAAAM4MzMAAAADOTg5AAAAAzkxNwAAAAM4MTMAAAADNjUyAAAAAjExAAAAAzE3MQAAAAM2MTAAAAADNjg4AAAAAzE0OQAAAAM3MzcAAAADNDQzAAAAAzQ3NQAAAAM3ODYAAAADMzc0AAAAAzk4NgAAAAIyNAAAAAM5MDMAAAADNjY2AAAAAzU5NwAAAAMzMjUAAAACNTMAAAADMTExAAAAAzI4MwAAAAM1NDAAAAACNDMAAAADNTE3AAAAAzQ2OQAAAAMyNjYAAAADNTE4AAAAAzk4OAAAAAIyNgAAAAMxMjAAAAADNzA2AAAAAzIyNgAAAAMxNDQAAAADNDE0AAAAAzUwMQAAAAMyMTEAAAADOTQ3AAAAAjU0AAAAAjY4AAAAAzE2OQAAAAMzMDMAAAADODEyAAAAAzU3MAAAAAM4MzEAAAACNjAAAAADNzkzAAAAAzkxNgAAAAM4MjEAAAADNDIyAAAAAzQ3NgAAAAM1NjUAAAADNjQ2AAAAAzQ2MQAAAAMxODQAAAADOTcxAAAAAzQxMAAAAAMyNDUAAAACNDAAAAADNDUzAAAAAzQxMgAAAAM5OTIAAAADNjg5AAAAAzgxMAAAAAMxMzEAAAADNTg3AAAAAzU2NgAAAAMxOTYAAAACODUAAAADNzIzAAAAAzI0MAAAAAM2MzQAAAADNDY0AAAAAzk1OAAAAAMxMDYAAAADMzM4AAAAAzU2MgAAAAM2MzcAAAADMTAwAAAAAzI2NAAAAAMxMTcAAAADNjU2AAAAAzIxNAAAAAMxODYAAAACNjk=
(1 row)
DROP TABLE base_texts;
-- low cardinality
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, item::text FROM
(SELECT i as item FROM generate_series(1, 10) i, generate_series(1, 100) j ORDER BY gen_rand_minstd()) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
624
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
-- single element
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, item::text FROM (SELECT generate_series(1, 1) item) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
41
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
-- high cardinality with toasted values
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, repeat(item::text, 100000) as item FROM
(select sub.item from (SELECT generate_series(1, 10) item) as sub ORDER BY gen_rand_minstd()) sub;
--make sure it's toasted
SELECT pg_total_relation_size(reltoastrelid)
FROM pg_class c
WHERE relname = 'base_texts';
pg_total_relation_size
------------------------
24576
(1 row)
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
10468
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
-- NULLs
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(i, 5)::TEXT item FROM generate_series(1, 10) i, generate_series(1, 100) j;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
204
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(i, 1)::TEXT item FROM generate_series(1, 10) i, generate_series(1, 100) j;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
196
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(i, 10)::TEXT item FROM generate_series(1, 10) i, generate_series(1, 100) j;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
196
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(NULLIF(NULLIF(NULLIF(i, 2), 4), 5), 8)::TEXT item FROM generate_series(1, 10) i, generate_series(1, 100) j;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
200
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
-----------------------
-- Array Compression --
-----------------------
SELECT
$$
select item from base_texts order by rn
$$ AS "QUERY"
\gset
SELECT 'TEXT' as "TYPE" \gset
\set COMPRESSION_CMD _timescaledb_internal.compress_array(item)
\set DECOMPRESS_FORWARD_CMD _timescaledb_internal.decompress_forward(c::_timescaledb_internal.compressed_data, NULL::TEXT)
\set DECOMPRESS_REVERSE_CMD _timescaledb_internal.decompress_reverse(c::_timescaledb_internal.compressed_data, NULL::TEXT)
--basic test
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, item::text FROM
(select sub.item from (SELECT generate_series(1, 100) item) as sub ORDER BY gen_rand_minstd()) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
440
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
SELECT c from compressed;
c
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AQBwZ19jYXRhbG9nAHRleHQAAAEAAABkAAAAAjU5AAAAAjg2AAAAAjE2AAAAAjM2AAAAAjk2AAAAAjM4AAAAAjI4AAAAAjEzAAAAAjczAAAAAjM3AAAAAjY5AAAAAjMxAAAAATkAAAACMTQAAAACNDQAAAABMQAAAAI3MQAAAAI2NgAAAAIxMAAAAAI4NQAAAAIyMwAAAAI3MAAAAAIyNQAAAAI4MAAAAAEzAAAAAjgzAAAAAjU2AAAAAjQ5AAAAAjUzAAAAAjI5AAAAAjk5AAAAATUAAAACNTIAAAACMjcAAAACNzkAAAACNDEAAAACNjUAAAACNTUAAAACNTAAAAACNjcAAAACNjEAAAACOTUAAAACNzcAAAACNzIAAAABNgAAAAI4MgAAAAIzNAAAAAI0NQAAAAI5NAAAAAI4NwAAAAI2MwAAAAI0NgAAAAIxOQAAAAI1MQAAAAI0NwAAAAEyAAAAATgAAAACOTIAAAACNTgAAAACNzUAAAACMTgAAAACOTMAAAACNDgAAAACNjAAAAACODQAAAACMTUAAAACMzAAAAACODgAAAACNzgAAAACNjQAAAACOTcAAAABNAAAAAI2MgAAAAI4MQAAAAI5OAAAAAI0MAAAAAI5MQAAAAE3AAAAAjI2AAAAAjQyAAAAAjg5AAAAAjEyAAAAAjkwAAAAAjE3AAAAAjc2AAAAAjM5AAAAAjMzAAAAAjMyAAAAAjIyAAAAAjY4AAAAAjQzAAAAAzEwMAAAAAIyMAAAAAIyNAAAAAI1NwAAAAIxMQAAAAIzNQAAAAI1NAAAAAI3NAAAAAIyMQ==
(1 row)
DROP TABLE base_texts;
-- single element
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, item::text FROM (SELECT generate_series(1, 1) item) sub;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
41
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
-- toasted values
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, repeat(item::text, 100000) as item FROM
(select sub.item from (SELECT generate_series(1, 10) item) as sub ORDER BY gen_rand_minstd()) sub;
--make sure it's toasted
SELECT pg_total_relation_size(reltoastrelid)
FROM pg_class c
WHERE relname = 'base_texts';
pg_total_relation_size
------------------------
24576
(1 row)
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
10468
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
-- NULLs
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(i, 5)::TEXT item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
97
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(i, 1)::TEXT item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
97
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(i, 10)::TEXT item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
97
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;
CREATE TABLE base_texts AS SELECT row_number() OVER() as rn, NULLIF(NULLIF(NULLIF(NULLIF(i, 2), 4), 5), 8)::TEXT item FROM generate_series(1, 10) i;
\ir include/compression_test.sql
-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
\set ECHO errors
compressed size
-----------------
85
(1 row)
?column? | count
-------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed forward (expect 0) | 0
(1 row)
?column? | count
--------------------------------------------------------------------------------+-------
Number of rows different between original and decompressed reversed (expect 0) | 0
(1 row)
?column? | count
----------------------------------------------------------------------------------------------------+-------
Number of rows different between original, decompressed, and decompressed deserializeed (expect 0) | 0
(1 row)
?column? | ?column?
-----------------------------------------------------------------------------------------------------+----------
Test that deserialization, decompression, recompression, and serialization results in the same text | t
(1 row)
DROP TABLE base_texts;