Deprecate continuous aggregates with old format

This patch will report a warning when upgrading to new timescaledb extension,
if their exists any caggs with partial aggregates only on release builds.
Also restrict users from creating cagss with old format on timescaledb with
PG15.
This commit is contained in:
Bharathy 2022-11-15 06:18:15 +05:30
parent b085833fda
commit 8afdddc2da
4 changed files with 66 additions and 67 deletions

View File

@ -132,3 +132,19 @@ FROM _timescaledb_catalog.hypertable h
INNER JOIN _timescaledb_catalog.dimension d ON (d.hypertable_id = h.id) INNER JOIN _timescaledb_catalog.dimension d ON (d.hypertable_id = h.id)
WHERE d.interval_length IS NULL; WHERE d.interval_length IS NULL;
DROP FUNCTION _timescaledb_internal.update_dimension_partition; DROP FUNCTION _timescaledb_internal.update_dimension_partition;
-- Report warning when partial aggregates are used
DO $$
DECLARE
cagg_name text;
BEGIN
FOR cagg_name IN
SELECT
format('%I.%I', user_view_schema, user_view_name)
FROM _timescaledb_catalog.continuous_agg
WHERE finalized IS FALSE
ORDER BY 1
LOOP
RAISE WARNING 'Continuous Aggregate: % with old format will not be supported with PG15. You should upgrade to the new format', cagg_name;
END LOOP;
END $$;

View File

@ -959,6 +959,26 @@ cagg_agg_validate(Node *node, void *context)
static bool static bool
cagg_query_supported(Query *query, StringInfo hint, StringInfo detail, const bool finalized) cagg_query_supported(Query *query, StringInfo hint, StringInfo detail, const bool finalized)
{ {
/*
* For now deprecate partial aggregates on release builds only.
* Once migration tests are made compatible with PG15 enable deprecation
* on debug builds as well.
*/
#ifndef DEBUG
#if PG15_GE
if (!finalized)
{
/* continuous aggregates with old format will not be allowed */
appendStringInfoString(detail,
"Continuous Aggregates with partials is not supported anymore.");
appendStringInfoString(hint,
"Define the Continuous Aggregate with \"finalized\" parameter set "
"to true.");
return false;
}
#endif
#endif
if (query->commandType != CMD_SELECT) if (query->commandType != CMD_SELECT)
{ {
appendStringInfoString(hint, "Use a SELECT query in the continuous aggregate view."); appendStringInfoString(hint, "Use a SELECT query in the continuous aggregate view.");

View File

@ -2269,9 +2269,6 @@ WHERE device_id IN (
(18 rows) (18 rows)
RESET seq_page_cost; RESET seq_page_cost;
-- force a BitmapHeapScan
SET enable_indexscan TO FALSE;
SET enable_seqscan TO FALSE;
:PREFIX_VERBOSE :PREFIX_VERBOSE
SELECT device_id_peer SELECT device_id_peer
FROM :TEST_TABLE FROM :TEST_TABLE
@ -2282,25 +2279,21 @@ WHERE device_id IN (
Append (actual rows=1368 loops=1) Append (actual rows=1368 loops=1)
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_1_chunk (actual rows=360 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_1_chunk (actual rows=360 loops=1)
Output: _hyper_1_1_chunk.device_id_peer Output: _hyper_1_1_chunk.device_id_peer
-> Bitmap Heap Scan on _timescaledb_internal.compress_hyper_5_15_chunk (actual rows=1 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_5_15_chunk (actual rows=1 loops=1)
Output: compress_hyper_5_15_chunk."time", compress_hyper_5_15_chunk.device_id, compress_hyper_5_15_chunk.device_id_peer, compress_hyper_5_15_chunk.v0, compress_hyper_5_15_chunk.v1, compress_hyper_5_15_chunk.v2, compress_hyper_5_15_chunk.v3, compress_hyper_5_15_chunk._ts_meta_count, compress_hyper_5_15_chunk._ts_meta_sequence_num, compress_hyper_5_15_chunk._ts_meta_min_3, compress_hyper_5_15_chunk._ts_meta_max_3, compress_hyper_5_15_chunk._ts_meta_min_1, compress_hyper_5_15_chunk._ts_meta_max_1, compress_hyper_5_15_chunk._ts_meta_min_2, compress_hyper_5_15_chunk._ts_meta_max_2 Output: compress_hyper_5_15_chunk."time", compress_hyper_5_15_chunk.device_id, compress_hyper_5_15_chunk.device_id_peer, compress_hyper_5_15_chunk.v0, compress_hyper_5_15_chunk.v1, compress_hyper_5_15_chunk.v2, compress_hyper_5_15_chunk.v3, compress_hyper_5_15_chunk._ts_meta_count, compress_hyper_5_15_chunk._ts_meta_sequence_num, compress_hyper_5_15_chunk._ts_meta_min_3, compress_hyper_5_15_chunk._ts_meta_max_3, compress_hyper_5_15_chunk._ts_meta_min_1, compress_hyper_5_15_chunk._ts_meta_max_1, compress_hyper_5_15_chunk._ts_meta_min_2, compress_hyper_5_15_chunk._ts_meta_max_2
Recheck Cond: (compress_hyper_5_15_chunk.device_id = 1) Filter: (compress_hyper_5_15_chunk.device_id = 1)
Heap Blocks: exact=1 Rows Removed by Filter: 4
-> Bitmap Index Scan on compress_hyper_5_15_chunk_c_index_2 (actual rows=1 loops=1)
Index Cond: (compress_hyper_5_15_chunk.device_id = 1)
-> Seq Scan on _timescaledb_internal._hyper_1_2_chunk (actual rows=504 loops=1) -> Seq Scan on _timescaledb_internal._hyper_1_2_chunk (actual rows=504 loops=1)
Output: _hyper_1_2_chunk.device_id_peer Output: _hyper_1_2_chunk.device_id_peer
Filter: (_hyper_1_2_chunk.device_id = 1) Filter: (_hyper_1_2_chunk.device_id = 1)
Rows Removed by Filter: 2016 Rows Removed by Filter: 2016
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_3_chunk (actual rows=504 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_3_chunk (actual rows=504 loops=1)
Output: _hyper_1_3_chunk.device_id_peer Output: _hyper_1_3_chunk.device_id_peer
-> Bitmap Heap Scan on _timescaledb_internal.compress_hyper_5_16_chunk (actual rows=1 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_5_16_chunk (actual rows=1 loops=1)
Output: compress_hyper_5_16_chunk."time", compress_hyper_5_16_chunk.device_id, compress_hyper_5_16_chunk.device_id_peer, compress_hyper_5_16_chunk.v0, compress_hyper_5_16_chunk.v1, compress_hyper_5_16_chunk.v2, compress_hyper_5_16_chunk.v3, compress_hyper_5_16_chunk._ts_meta_count, compress_hyper_5_16_chunk._ts_meta_sequence_num, compress_hyper_5_16_chunk._ts_meta_min_3, compress_hyper_5_16_chunk._ts_meta_max_3, compress_hyper_5_16_chunk._ts_meta_min_1, compress_hyper_5_16_chunk._ts_meta_max_1, compress_hyper_5_16_chunk._ts_meta_min_2, compress_hyper_5_16_chunk._ts_meta_max_2 Output: compress_hyper_5_16_chunk."time", compress_hyper_5_16_chunk.device_id, compress_hyper_5_16_chunk.device_id_peer, compress_hyper_5_16_chunk.v0, compress_hyper_5_16_chunk.v1, compress_hyper_5_16_chunk.v2, compress_hyper_5_16_chunk.v3, compress_hyper_5_16_chunk._ts_meta_count, compress_hyper_5_16_chunk._ts_meta_sequence_num, compress_hyper_5_16_chunk._ts_meta_min_3, compress_hyper_5_16_chunk._ts_meta_max_3, compress_hyper_5_16_chunk._ts_meta_min_1, compress_hyper_5_16_chunk._ts_meta_max_1, compress_hyper_5_16_chunk._ts_meta_min_2, compress_hyper_5_16_chunk._ts_meta_max_2
Recheck Cond: (compress_hyper_5_16_chunk.device_id = 1) Filter: (compress_hyper_5_16_chunk.device_id = 1)
Heap Blocks: exact=1 Rows Removed by Filter: 4
-> Bitmap Index Scan on compress_hyper_5_16_chunk_c_index_2 (actual rows=1 loops=1) (17 rows)
Index Cond: (compress_hyper_5_16_chunk.device_id = 1)
(21 rows)
:PREFIX_VERBOSE :PREFIX_VERBOSE
SELECT device_id_peer SELECT device_id_peer
@ -2324,11 +2317,8 @@ WHERE device_id IN (
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_1_chunk (actual rows=360 loops=2) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_1_chunk (actual rows=360 loops=2)
Output: _hyper_1_1_chunk.device_id_peer, _hyper_1_1_chunk.device_id Output: _hyper_1_1_chunk.device_id_peer, _hyper_1_1_chunk.device_id
Filter: ("*VALUES*".column1 = _hyper_1_1_chunk.device_id) Filter: ("*VALUES*".column1 = _hyper_1_1_chunk.device_id)
-> Bitmap Heap Scan on _timescaledb_internal.compress_hyper_5_15_chunk (actual rows=1 loops=2) -> Index Scan using compress_hyper_5_15_chunk_c_index_2 on _timescaledb_internal.compress_hyper_5_15_chunk (actual rows=1 loops=2)
Output: compress_hyper_5_15_chunk."time", compress_hyper_5_15_chunk.device_id, compress_hyper_5_15_chunk.device_id_peer, compress_hyper_5_15_chunk.v0, compress_hyper_5_15_chunk.v1, compress_hyper_5_15_chunk.v2, compress_hyper_5_15_chunk.v3, compress_hyper_5_15_chunk._ts_meta_count, compress_hyper_5_15_chunk._ts_meta_sequence_num, compress_hyper_5_15_chunk._ts_meta_min_3, compress_hyper_5_15_chunk._ts_meta_max_3, compress_hyper_5_15_chunk._ts_meta_min_1, compress_hyper_5_15_chunk._ts_meta_max_1, compress_hyper_5_15_chunk._ts_meta_min_2, compress_hyper_5_15_chunk._ts_meta_max_2 Output: compress_hyper_5_15_chunk."time", compress_hyper_5_15_chunk.device_id, compress_hyper_5_15_chunk.device_id_peer, compress_hyper_5_15_chunk.v0, compress_hyper_5_15_chunk.v1, compress_hyper_5_15_chunk.v2, compress_hyper_5_15_chunk.v3, compress_hyper_5_15_chunk._ts_meta_count, compress_hyper_5_15_chunk._ts_meta_sequence_num, compress_hyper_5_15_chunk._ts_meta_min_3, compress_hyper_5_15_chunk._ts_meta_max_3, compress_hyper_5_15_chunk._ts_meta_min_1, compress_hyper_5_15_chunk._ts_meta_max_1, compress_hyper_5_15_chunk._ts_meta_min_2, compress_hyper_5_15_chunk._ts_meta_max_2
Recheck Cond: (compress_hyper_5_15_chunk.device_id = "*VALUES*".column1)
Heap Blocks: exact=2
-> Bitmap Index Scan on compress_hyper_5_15_chunk_c_index_2 (actual rows=1 loops=2)
Index Cond: (compress_hyper_5_15_chunk.device_id = "*VALUES*".column1) Index Cond: (compress_hyper_5_15_chunk.device_id = "*VALUES*".column1)
-> Seq Scan on _timescaledb_internal._hyper_1_2_chunk (actual rows=504 loops=2) -> Seq Scan on _timescaledb_internal._hyper_1_2_chunk (actual rows=504 loops=2)
Output: _hyper_1_2_chunk.device_id_peer, _hyper_1_2_chunk.device_id Output: _hyper_1_2_chunk.device_id_peer, _hyper_1_2_chunk.device_id
@ -2337,16 +2327,11 @@ WHERE device_id IN (
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_3_chunk (actual rows=504 loops=2) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_1_3_chunk (actual rows=504 loops=2)
Output: _hyper_1_3_chunk.device_id_peer, _hyper_1_3_chunk.device_id Output: _hyper_1_3_chunk.device_id_peer, _hyper_1_3_chunk.device_id
Filter: ("*VALUES*".column1 = _hyper_1_3_chunk.device_id) Filter: ("*VALUES*".column1 = _hyper_1_3_chunk.device_id)
-> Bitmap Heap Scan on _timescaledb_internal.compress_hyper_5_16_chunk (actual rows=1 loops=2) -> Index Scan using compress_hyper_5_16_chunk_c_index_2 on _timescaledb_internal.compress_hyper_5_16_chunk (actual rows=1 loops=2)
Output: compress_hyper_5_16_chunk."time", compress_hyper_5_16_chunk.device_id, compress_hyper_5_16_chunk.device_id_peer, compress_hyper_5_16_chunk.v0, compress_hyper_5_16_chunk.v1, compress_hyper_5_16_chunk.v2, compress_hyper_5_16_chunk.v3, compress_hyper_5_16_chunk._ts_meta_count, compress_hyper_5_16_chunk._ts_meta_sequence_num, compress_hyper_5_16_chunk._ts_meta_min_3, compress_hyper_5_16_chunk._ts_meta_max_3, compress_hyper_5_16_chunk._ts_meta_min_1, compress_hyper_5_16_chunk._ts_meta_max_1, compress_hyper_5_16_chunk._ts_meta_min_2, compress_hyper_5_16_chunk._ts_meta_max_2 Output: compress_hyper_5_16_chunk."time", compress_hyper_5_16_chunk.device_id, compress_hyper_5_16_chunk.device_id_peer, compress_hyper_5_16_chunk.v0, compress_hyper_5_16_chunk.v1, compress_hyper_5_16_chunk.v2, compress_hyper_5_16_chunk.v3, compress_hyper_5_16_chunk._ts_meta_count, compress_hyper_5_16_chunk._ts_meta_sequence_num, compress_hyper_5_16_chunk._ts_meta_min_3, compress_hyper_5_16_chunk._ts_meta_max_3, compress_hyper_5_16_chunk._ts_meta_min_1, compress_hyper_5_16_chunk._ts_meta_max_1, compress_hyper_5_16_chunk._ts_meta_min_2, compress_hyper_5_16_chunk._ts_meta_max_2
Recheck Cond: (compress_hyper_5_16_chunk.device_id = "*VALUES*".column1)
Heap Blocks: exact=2
-> Bitmap Index Scan on compress_hyper_5_16_chunk_c_index_2 (actual rows=1 loops=2)
Index Cond: (compress_hyper_5_16_chunk.device_id = "*VALUES*".column1) Index Cond: (compress_hyper_5_16_chunk.device_id = "*VALUES*".column1)
(33 rows) (27 rows)
SET enable_indexscan TO TRUE;
SET enable_seqscan TO TRUE;
-- test view -- test view
CREATE OR REPLACE VIEW compressed_view AS CREATE OR REPLACE VIEW compressed_view AS
SELECT time, SELECT time,
@ -6656,9 +6641,6 @@ WHERE device_id IN (
(52 rows) (52 rows)
RESET seq_page_cost; RESET seq_page_cost;
-- force a BitmapHeapScan
SET enable_indexscan TO FALSE;
SET enable_seqscan TO FALSE;
:PREFIX_VERBOSE :PREFIX_VERBOSE
SELECT device_id_peer SELECT device_id_peer
FROM :TEST_TABLE FROM :TEST_TABLE
@ -6669,27 +6651,18 @@ WHERE device_id IN (
Append (actual rows=1368 loops=1) Append (actual rows=1368 loops=1)
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_4_chunk (actual rows=360 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_4_chunk (actual rows=360 loops=1)
Output: _hyper_2_4_chunk.device_id_peer Output: _hyper_2_4_chunk.device_id_peer
-> Bitmap Heap Scan on _timescaledb_internal.compress_hyper_6_17_chunk (actual rows=1 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_6_17_chunk (actual rows=1 loops=1)
Output: compress_hyper_6_17_chunk."time", compress_hyper_6_17_chunk.device_id, compress_hyper_6_17_chunk.device_id_peer, compress_hyper_6_17_chunk.v0, compress_hyper_6_17_chunk.v1, compress_hyper_6_17_chunk.v2, compress_hyper_6_17_chunk.v3, compress_hyper_6_17_chunk._ts_meta_count, compress_hyper_6_17_chunk._ts_meta_sequence_num, compress_hyper_6_17_chunk._ts_meta_min_3, compress_hyper_6_17_chunk._ts_meta_max_3, compress_hyper_6_17_chunk._ts_meta_min_1, compress_hyper_6_17_chunk._ts_meta_max_1, compress_hyper_6_17_chunk._ts_meta_min_2, compress_hyper_6_17_chunk._ts_meta_max_2 Output: compress_hyper_6_17_chunk."time", compress_hyper_6_17_chunk.device_id, compress_hyper_6_17_chunk.device_id_peer, compress_hyper_6_17_chunk.v0, compress_hyper_6_17_chunk.v1, compress_hyper_6_17_chunk.v2, compress_hyper_6_17_chunk.v3, compress_hyper_6_17_chunk._ts_meta_count, compress_hyper_6_17_chunk._ts_meta_sequence_num, compress_hyper_6_17_chunk._ts_meta_min_3, compress_hyper_6_17_chunk._ts_meta_max_3, compress_hyper_6_17_chunk._ts_meta_min_1, compress_hyper_6_17_chunk._ts_meta_max_1, compress_hyper_6_17_chunk._ts_meta_min_2, compress_hyper_6_17_chunk._ts_meta_max_2
Recheck Cond: (compress_hyper_6_17_chunk.device_id = 1) Filter: (compress_hyper_6_17_chunk.device_id = 1)
Heap Blocks: exact=1 -> Seq Scan on _timescaledb_internal._hyper_2_7_chunk (actual rows=504 loops=1)
-> Bitmap Index Scan on compress_hyper_6_17_chunk_c_space_index_2 (actual rows=1 loops=1)
Index Cond: (compress_hyper_6_17_chunk.device_id = 1)
-> Bitmap Heap Scan on _timescaledb_internal._hyper_2_7_chunk (actual rows=504 loops=1)
Output: _hyper_2_7_chunk.device_id_peer Output: _hyper_2_7_chunk.device_id_peer
Recheck Cond: (_hyper_2_7_chunk.device_id = 1) Filter: (_hyper_2_7_chunk.device_id = 1)
Heap Blocks: exact=5
-> Bitmap Index Scan on _hyper_2_7_chunk_metrics_space_device_id_device_id_peer_v0_v1_2 (actual rows=504 loops=1)
Index Cond: (_hyper_2_7_chunk.device_id = 1)
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_10_chunk (actual rows=504 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_10_chunk (actual rows=504 loops=1)
Output: _hyper_2_10_chunk.device_id_peer Output: _hyper_2_10_chunk.device_id_peer
-> Bitmap Heap Scan on _timescaledb_internal.compress_hyper_6_20_chunk (actual rows=1 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_6_20_chunk (actual rows=1 loops=1)
Output: compress_hyper_6_20_chunk."time", compress_hyper_6_20_chunk.device_id, compress_hyper_6_20_chunk.device_id_peer, compress_hyper_6_20_chunk.v0, compress_hyper_6_20_chunk.v1, compress_hyper_6_20_chunk.v2, compress_hyper_6_20_chunk.v3, compress_hyper_6_20_chunk._ts_meta_count, compress_hyper_6_20_chunk._ts_meta_sequence_num, compress_hyper_6_20_chunk._ts_meta_min_3, compress_hyper_6_20_chunk._ts_meta_max_3, compress_hyper_6_20_chunk._ts_meta_min_1, compress_hyper_6_20_chunk._ts_meta_max_1, compress_hyper_6_20_chunk._ts_meta_min_2, compress_hyper_6_20_chunk._ts_meta_max_2 Output: compress_hyper_6_20_chunk."time", compress_hyper_6_20_chunk.device_id, compress_hyper_6_20_chunk.device_id_peer, compress_hyper_6_20_chunk.v0, compress_hyper_6_20_chunk.v1, compress_hyper_6_20_chunk.v2, compress_hyper_6_20_chunk.v3, compress_hyper_6_20_chunk._ts_meta_count, compress_hyper_6_20_chunk._ts_meta_sequence_num, compress_hyper_6_20_chunk._ts_meta_min_3, compress_hyper_6_20_chunk._ts_meta_max_3, compress_hyper_6_20_chunk._ts_meta_min_1, compress_hyper_6_20_chunk._ts_meta_max_1, compress_hyper_6_20_chunk._ts_meta_min_2, compress_hyper_6_20_chunk._ts_meta_max_2
Recheck Cond: (compress_hyper_6_20_chunk.device_id = 1) Filter: (compress_hyper_6_20_chunk.device_id = 1)
Heap Blocks: exact=1 (14 rows)
-> Bitmap Index Scan on compress_hyper_6_20_chunk_c_space_index_2 (actual rows=1 loops=1)
Index Cond: (compress_hyper_6_20_chunk.device_id = 1)
(23 rows)
:PREFIX_VERBOSE :PREFIX_VERBOSE
SELECT device_id_peer SELECT device_id_peer
@ -6705,49 +6678,39 @@ WHERE device_id IN (
-> Append (actual rows=6840 loops=1) -> Append (actual rows=6840 loops=1)
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_4_chunk (actual rows=360 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_4_chunk (actual rows=360 loops=1)
Output: _hyper_2_4_chunk.device_id_peer, _hyper_2_4_chunk.device_id Output: _hyper_2_4_chunk.device_id_peer, _hyper_2_4_chunk.device_id
-> Index Scan using compress_hyper_6_17_chunk_c_space_index_2 on _timescaledb_internal.compress_hyper_6_17_chunk (actual rows=1 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_6_17_chunk (actual rows=1 loops=1)
Output: compress_hyper_6_17_chunk."time", compress_hyper_6_17_chunk.device_id, compress_hyper_6_17_chunk.device_id_peer, compress_hyper_6_17_chunk.v0, compress_hyper_6_17_chunk.v1, compress_hyper_6_17_chunk.v2, compress_hyper_6_17_chunk.v3, compress_hyper_6_17_chunk._ts_meta_count, compress_hyper_6_17_chunk._ts_meta_sequence_num, compress_hyper_6_17_chunk._ts_meta_min_3, compress_hyper_6_17_chunk._ts_meta_max_3, compress_hyper_6_17_chunk._ts_meta_min_1, compress_hyper_6_17_chunk._ts_meta_max_1, compress_hyper_6_17_chunk._ts_meta_min_2, compress_hyper_6_17_chunk._ts_meta_max_2 Output: compress_hyper_6_17_chunk."time", compress_hyper_6_17_chunk.device_id, compress_hyper_6_17_chunk.device_id_peer, compress_hyper_6_17_chunk.v0, compress_hyper_6_17_chunk.v1, compress_hyper_6_17_chunk.v2, compress_hyper_6_17_chunk.v3, compress_hyper_6_17_chunk._ts_meta_count, compress_hyper_6_17_chunk._ts_meta_sequence_num, compress_hyper_6_17_chunk._ts_meta_min_3, compress_hyper_6_17_chunk._ts_meta_max_3, compress_hyper_6_17_chunk._ts_meta_min_1, compress_hyper_6_17_chunk._ts_meta_max_1, compress_hyper_6_17_chunk._ts_meta_min_2, compress_hyper_6_17_chunk._ts_meta_max_2
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_5_chunk (actual rows=1080 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_5_chunk (actual rows=1080 loops=1)
Output: _hyper_2_5_chunk.device_id_peer, _hyper_2_5_chunk.device_id Output: _hyper_2_5_chunk.device_id_peer, _hyper_2_5_chunk.device_id
-> Index Scan using compress_hyper_6_18_chunk_c_space_index_2 on _timescaledb_internal.compress_hyper_6_18_chunk (actual rows=3 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_6_18_chunk (actual rows=3 loops=1)
Output: compress_hyper_6_18_chunk."time", compress_hyper_6_18_chunk.device_id, compress_hyper_6_18_chunk.device_id_peer, compress_hyper_6_18_chunk.v0, compress_hyper_6_18_chunk.v1, compress_hyper_6_18_chunk.v2, compress_hyper_6_18_chunk.v3, compress_hyper_6_18_chunk._ts_meta_count, compress_hyper_6_18_chunk._ts_meta_sequence_num, compress_hyper_6_18_chunk._ts_meta_min_3, compress_hyper_6_18_chunk._ts_meta_max_3, compress_hyper_6_18_chunk._ts_meta_min_1, compress_hyper_6_18_chunk._ts_meta_max_1, compress_hyper_6_18_chunk._ts_meta_min_2, compress_hyper_6_18_chunk._ts_meta_max_2 Output: compress_hyper_6_18_chunk."time", compress_hyper_6_18_chunk.device_id, compress_hyper_6_18_chunk.device_id_peer, compress_hyper_6_18_chunk.v0, compress_hyper_6_18_chunk.v1, compress_hyper_6_18_chunk.v2, compress_hyper_6_18_chunk.v3, compress_hyper_6_18_chunk._ts_meta_count, compress_hyper_6_18_chunk._ts_meta_sequence_num, compress_hyper_6_18_chunk._ts_meta_min_3, compress_hyper_6_18_chunk._ts_meta_max_3, compress_hyper_6_18_chunk._ts_meta_min_1, compress_hyper_6_18_chunk._ts_meta_max_1, compress_hyper_6_18_chunk._ts_meta_min_2, compress_hyper_6_18_chunk._ts_meta_max_2
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_6_chunk (actual rows=360 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_6_chunk (actual rows=360 loops=1)
Output: _hyper_2_6_chunk.device_id_peer, _hyper_2_6_chunk.device_id Output: _hyper_2_6_chunk.device_id_peer, _hyper_2_6_chunk.device_id
-> Index Scan using compress_hyper_6_19_chunk_c_space_index_2 on _timescaledb_internal.compress_hyper_6_19_chunk (actual rows=1 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_6_19_chunk (actual rows=1 loops=1)
Output: compress_hyper_6_19_chunk."time", compress_hyper_6_19_chunk.device_id, compress_hyper_6_19_chunk.device_id_peer, compress_hyper_6_19_chunk.v0, compress_hyper_6_19_chunk.v1, compress_hyper_6_19_chunk.v2, compress_hyper_6_19_chunk.v3, compress_hyper_6_19_chunk._ts_meta_count, compress_hyper_6_19_chunk._ts_meta_sequence_num, compress_hyper_6_19_chunk._ts_meta_min_3, compress_hyper_6_19_chunk._ts_meta_max_3, compress_hyper_6_19_chunk._ts_meta_min_1, compress_hyper_6_19_chunk._ts_meta_max_1, compress_hyper_6_19_chunk._ts_meta_min_2, compress_hyper_6_19_chunk._ts_meta_max_2 Output: compress_hyper_6_19_chunk."time", compress_hyper_6_19_chunk.device_id, compress_hyper_6_19_chunk.device_id_peer, compress_hyper_6_19_chunk.v0, compress_hyper_6_19_chunk.v1, compress_hyper_6_19_chunk.v2, compress_hyper_6_19_chunk.v3, compress_hyper_6_19_chunk._ts_meta_count, compress_hyper_6_19_chunk._ts_meta_sequence_num, compress_hyper_6_19_chunk._ts_meta_min_3, compress_hyper_6_19_chunk._ts_meta_max_3, compress_hyper_6_19_chunk._ts_meta_min_1, compress_hyper_6_19_chunk._ts_meta_max_1, compress_hyper_6_19_chunk._ts_meta_min_2, compress_hyper_6_19_chunk._ts_meta_max_2
-> Bitmap Heap Scan on _timescaledb_internal._hyper_2_7_chunk (actual rows=504 loops=1) -> Seq Scan on _timescaledb_internal._hyper_2_7_chunk (actual rows=504 loops=1)
Output: _hyper_2_7_chunk.device_id_peer, _hyper_2_7_chunk.device_id Output: _hyper_2_7_chunk.device_id_peer, _hyper_2_7_chunk.device_id
Heap Blocks: exact=5 -> Seq Scan on _timescaledb_internal._hyper_2_8_chunk (actual rows=1512 loops=1)
-> Bitmap Index Scan on _hyper_2_7_chunk_metrics_space_device_id_device_id_peer_v0_v1_2 (actual rows=504 loops=1)
-> Bitmap Heap Scan on _timescaledb_internal._hyper_2_8_chunk (actual rows=1512 loops=1)
Output: _hyper_2_8_chunk.device_id_peer, _hyper_2_8_chunk.device_id Output: _hyper_2_8_chunk.device_id_peer, _hyper_2_8_chunk.device_id
Heap Blocks: exact=13 -> Seq Scan on _timescaledb_internal._hyper_2_9_chunk (actual rows=504 loops=1)
-> Bitmap Index Scan on _hyper_2_8_chunk_metrics_space_device_id_device_id_peer_v0_v1_2 (actual rows=1512 loops=1)
-> Bitmap Heap Scan on _timescaledb_internal._hyper_2_9_chunk (actual rows=504 loops=1)
Output: _hyper_2_9_chunk.device_id_peer, _hyper_2_9_chunk.device_id Output: _hyper_2_9_chunk.device_id_peer, _hyper_2_9_chunk.device_id
Heap Blocks: exact=5
-> Bitmap Index Scan on _hyper_2_9_chunk_metrics_space_device_id_device_id_peer_v0_v1_2 (actual rows=504 loops=1)
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_10_chunk (actual rows=504 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_10_chunk (actual rows=504 loops=1)
Output: _hyper_2_10_chunk.device_id_peer, _hyper_2_10_chunk.device_id Output: _hyper_2_10_chunk.device_id_peer, _hyper_2_10_chunk.device_id
-> Index Scan using compress_hyper_6_20_chunk_c_space_index_2 on _timescaledb_internal.compress_hyper_6_20_chunk (actual rows=1 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_6_20_chunk (actual rows=1 loops=1)
Output: compress_hyper_6_20_chunk."time", compress_hyper_6_20_chunk.device_id, compress_hyper_6_20_chunk.device_id_peer, compress_hyper_6_20_chunk.v0, compress_hyper_6_20_chunk.v1, compress_hyper_6_20_chunk.v2, compress_hyper_6_20_chunk.v3, compress_hyper_6_20_chunk._ts_meta_count, compress_hyper_6_20_chunk._ts_meta_sequence_num, compress_hyper_6_20_chunk._ts_meta_min_3, compress_hyper_6_20_chunk._ts_meta_max_3, compress_hyper_6_20_chunk._ts_meta_min_1, compress_hyper_6_20_chunk._ts_meta_max_1, compress_hyper_6_20_chunk._ts_meta_min_2, compress_hyper_6_20_chunk._ts_meta_max_2 Output: compress_hyper_6_20_chunk."time", compress_hyper_6_20_chunk.device_id, compress_hyper_6_20_chunk.device_id_peer, compress_hyper_6_20_chunk.v0, compress_hyper_6_20_chunk.v1, compress_hyper_6_20_chunk.v2, compress_hyper_6_20_chunk.v3, compress_hyper_6_20_chunk._ts_meta_count, compress_hyper_6_20_chunk._ts_meta_sequence_num, compress_hyper_6_20_chunk._ts_meta_min_3, compress_hyper_6_20_chunk._ts_meta_max_3, compress_hyper_6_20_chunk._ts_meta_min_1, compress_hyper_6_20_chunk._ts_meta_max_1, compress_hyper_6_20_chunk._ts_meta_min_2, compress_hyper_6_20_chunk._ts_meta_max_2
-> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_11_chunk (actual rows=1512 loops=1) -> Custom Scan (DecompressChunk) on _timescaledb_internal._hyper_2_11_chunk (actual rows=1512 loops=1)
Output: _hyper_2_11_chunk.device_id_peer, _hyper_2_11_chunk.device_id Output: _hyper_2_11_chunk.device_id_peer, _hyper_2_11_chunk.device_id
-> Index Scan using compress_hyper_6_21_chunk_c_space_index_2 on _timescaledb_internal.compress_hyper_6_21_chunk (actual rows=3 loops=1) -> Seq Scan on _timescaledb_internal.compress_hyper_6_21_chunk (actual rows=3 loops=1)
Output: compress_hyper_6_21_chunk."time", compress_hyper_6_21_chunk.device_id, compress_hyper_6_21_chunk.device_id_peer, compress_hyper_6_21_chunk.v0, compress_hyper_6_21_chunk.v1, compress_hyper_6_21_chunk.v2, compress_hyper_6_21_chunk.v3, compress_hyper_6_21_chunk._ts_meta_count, compress_hyper_6_21_chunk._ts_meta_sequence_num, compress_hyper_6_21_chunk._ts_meta_min_3, compress_hyper_6_21_chunk._ts_meta_max_3, compress_hyper_6_21_chunk._ts_meta_min_1, compress_hyper_6_21_chunk._ts_meta_max_1, compress_hyper_6_21_chunk._ts_meta_min_2, compress_hyper_6_21_chunk._ts_meta_max_2 Output: compress_hyper_6_21_chunk."time", compress_hyper_6_21_chunk.device_id, compress_hyper_6_21_chunk.device_id_peer, compress_hyper_6_21_chunk.v0, compress_hyper_6_21_chunk.v1, compress_hyper_6_21_chunk.v2, compress_hyper_6_21_chunk.v3, compress_hyper_6_21_chunk._ts_meta_count, compress_hyper_6_21_chunk._ts_meta_sequence_num, compress_hyper_6_21_chunk._ts_meta_min_3, compress_hyper_6_21_chunk._ts_meta_max_3, compress_hyper_6_21_chunk._ts_meta_min_1, compress_hyper_6_21_chunk._ts_meta_max_1, compress_hyper_6_21_chunk._ts_meta_min_2, compress_hyper_6_21_chunk._ts_meta_max_2
-> Bitmap Heap Scan on _timescaledb_internal._hyper_2_12_chunk (actual rows=504 loops=1) -> Seq Scan on _timescaledb_internal._hyper_2_12_chunk (actual rows=504 loops=1)
Output: _hyper_2_12_chunk.device_id_peer, _hyper_2_12_chunk.device_id Output: _hyper_2_12_chunk.device_id_peer, _hyper_2_12_chunk.device_id
Heap Blocks: exact=5
-> Bitmap Index Scan on _hyper_2_12_chunk_metrics_space_device_id_device_id_peer_v0_v_2 (actual rows=504 loops=1)
-> Hash (actual rows=2 loops=1) -> Hash (actual rows=2 loops=1)
Output: "*VALUES*".column1 Output: "*VALUES*".column1
Buckets: 1024 Batches: 1 Buckets: 1024 Batches: 1
-> Values Scan on "*VALUES*" (actual rows=2 loops=1) -> Values Scan on "*VALUES*" (actual rows=2 loops=1)
Output: "*VALUES*".column1 Output: "*VALUES*".column1
(45 rows) (37 rows)
SET enable_indexscan TO TRUE;
SET enable_seqscan TO TRUE;
-- test view -- test view
CREATE OR REPLACE VIEW compressed_view AS CREATE OR REPLACE VIEW compressed_view AS
SELECT time, SELECT time,

View File

@ -6,7 +6,6 @@ set(TEST_FILES
bgw_custom.sql bgw_custom.sql
bgw_policy.sql bgw_policy.sql
cagg_errors.sql cagg_errors.sql
cagg_errors_deprecated.sql
cagg_invalidation.sql cagg_invalidation.sql
cagg_permissions.sql cagg_permissions.sql
cagg_policy.sql cagg_policy.sql
@ -55,6 +54,7 @@ if(CMAKE_BUILD_TYPE MATCHES Debug)
cagg_ddl_dist_ht.sql cagg_ddl_dist_ht.sql
cagg_drop_chunks.sql cagg_drop_chunks.sql
cagg_dump.sql cagg_dump.sql
cagg_errors_deprecated.sql
cagg_migrate_integer.sql cagg_migrate_integer.sql
cagg_migrate_integer_dist_ht.sql cagg_migrate_integer_dist_ht.sql
cagg_migrate_timestamp.sql cagg_migrate_timestamp.sql