timescaledb/tsl/test/expected/compression_algos.out
Stephen Polcyn b57d2ac388 Cleanup TODOs and FIXMEs
Unless otherwise listed, the TODO was converted to a comment or put
into an issue tracker.

test/sql/
- triggers.sql: Made required change

tsl/test/
- CMakeLists.txt: TODO complete
- bgw_policy.sql: TODO complete
- continuous_aggs_materialize.sql: TODO complete
- compression.sql: TODO complete
- compression_algos.sql: TODO complete

tsl/src/
- compression/compression.c:
  - row_compressor_decompress_row: Expected complete
- compression/dictionary.c: FIXME complete
- materialize.c: TODO complete
- reorder.c: TODO complete
- simple8b_rle.h:
  - compressor_finish: Removed (obsolete)

src/
- extension.c: Removed due to age
- adts/simplehash.h: TODOs are from copied Postgres code
- adts/vec.h: TODO is non-significant
- planner.c: Removed
- process_utility.c
  - process_altertable_end_subcmd: Removed (PG will handle case)
2020-05-18 20:16:03 -04:00

1267 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 TABLE_NAME base_ints
\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 --
------------------------
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 TABLE_NAME base_ints
\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 TABLE_NAME base_time
\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
\set TABLE_NAME base_doubles
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
\set TABLE_NAME base_texts
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
-----------------
4289
(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
-----------------
605
(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
-----------------
39
(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
-----------------
1100084
(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
-----------------
187
(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
-----------------
179
(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
-----------------
178
(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
-----------------
189
(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
\set TABLE_NAME base_texts
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
-----------------
356
(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
-----------------
39
(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
-----------------
1100092
(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
-----------------
80
(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
-----------------
80
(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
-----------------
79
(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
-----------------
74
(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;