1
0
mirror of https://github.com/timescale/timescaledb.git synced 2025-05-19 12:13:24 +08:00
timescaledb/tsl/test/sql/include/compress_table_test.sql
Matvey Arye 9223f08d68 Truncate chunks after (de-)compression
This commit will truncate the original chunk after compression
or decompression.
2019-10-29 19:02:58 -04:00

67 lines
2.2 KiB
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
TRUNCATE TABLE compressed;
CREATE TABLE tmp AS SELECT * FROM :"DATA_IN";
SELECT ts_compress_table(:'DATA_IN'::REGCLASS, 'compressed'::REGCLASS, :'COMPRESSION_INFO'::_timescaledb_catalog.hypertable_compression[]);
--compression truncates the DATA_IN table, restore the data
INSERT INTO :"DATA_IN" SELECT * FROM tmp;
DROP TABLE tmp;
--test that decompression gives same result in forward direction
WITH original AS (
SELECT * FROM :DATA_OUT
),
decompressed AS (
SELECT * FROM (SELECT :DECOMPRESS_FORWARD_CMD FROM compressed ORDER BY device) AS q
)
SELECT 'Number of rows different between original and decompressed forward (expect 0)', count(*)
FROM original
FULL OUTER JOIN decompressed ON (original.device = decompressed.device AND original.time = decompressed.t)
WHERE (original.*) IS DISTINCT FROM (decompressed.*);
WITH original AS (
SELECT * FROM :DATA_OUT AS q
),
decompressed AS (
SELECT * FROM (SELECT :DECOMPRESS_FORWARD_CMD FROM compressed) AS q
)
SELECT *
FROM original
FULL OUTER JOIN decompressed ON (original.device = decompressed.device AND original.time = decompressed.t)
WHERE (original.*) IS DISTINCT FROM (decompressed.*);
-- test that decompress_table works
CREATE TABLE decompressed_table AS SELECT * FROM :DATA_OUT LIMIT 0;
SELECT ts_decompress_table('compressed'::REGCLASS, 'decompressed_table'::REGCLASS);
WITH original AS (
SELECT * FROM :DATA_OUT
),
decompressed AS (
SELECT * FROM decompressed_table
)
SELECT 'Number of rows different between original and decompress_table (expect 0)', count(*)
FROM original
FULL OUTER JOIN decompressed ON (original.device = decompressed.device AND original.time = decompressed.time)
WHERE (original.*) IS DISTINCT FROM (decompressed.*);
WITH original AS (
SELECT * FROM :DATA_OUT
),
decompressed AS (
SELECT * FROM decompressed_table
)
SELECT *
FROM original
FULL OUTER JOIN decompressed ON (original.device = decompressed.device AND original.time = decompressed.time)
WHERE (original.*) IS DISTINCT FROM (decompressed.*);
DROP TABLE decompressed_table;
\set ECHO all