mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-19 12:13:24 +08:00
67 lines
2.2 KiB
SQL
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
|