mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 18:43:18 +08:00
Fix for inconsistent num_chunks
Different num_chunks values reported by timescaledb_information.hypertables and timescaledb_information.chunks. View definition of hypertables was not filtering dropped and osm_chunks. Fixes #5338
This commit is contained in:
parent
2f7e0433a9
commit
e6f6eb3ab8
@ -7,6 +7,7 @@ accidentally triggering the load of a previous DB version.**
|
||||
## Unreleased
|
||||
|
||||
**Bugfixes**
|
||||
* #5364 Fix num_chunks inconsistency in hypertables view
|
||||
* #5336 Use NameData and namestrcpy for names
|
||||
* #5317 Fix some incorrect memory handling
|
||||
|
||||
|
@ -11,7 +11,7 @@ SELECT ht.schema_name AS hypertable_schema,
|
||||
(
|
||||
SELECT count(1)
|
||||
FROM _timescaledb_catalog.chunk ch
|
||||
WHERE ch.hypertable_id = ht.id) AS num_chunks,
|
||||
WHERE ch.hypertable_id = ht.id AND ch.dropped IS FALSE AND ch.osm_chunk IS FALSE) AS num_chunks,
|
||||
(
|
||||
CASE WHEN compression_state = 1 THEN
|
||||
TRUE
|
||||
|
68
tsl/test/expected/information_view_chunk_count.out
Normal file
68
tsl/test/expected/information_view_chunk_count.out
Normal file
@ -0,0 +1,68 @@
|
||||
-- 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.
|
||||
CREATE TABLE sensor_data(
|
||||
time timestamptz not null,
|
||||
sensor_id integer not null,
|
||||
cpu double precision null,
|
||||
temperature double precision null);
|
||||
SELECT from create_hypertable('sensor_data','time');
|
||||
--
|
||||
(1 row)
|
||||
|
||||
INSERT INTO sensor_data
|
||||
SELECT time + (INTERVAL '1 minute' * random()) AS time,
|
||||
sensor_id,
|
||||
random() AS cpu,
|
||||
random() * 100 AS temperature
|
||||
FROM
|
||||
generate_series('2018-03-02 1:00'::TIMESTAMPTZ, '2018-03-28 1:00', '1 hour') AS g1(time),
|
||||
generate_series(1, 100, 1 ) AS g2(sensor_id)
|
||||
ORDER BY time;
|
||||
CREATE materialized VIEW sensor_data_v WITH(timescaledb.continuous) AS
|
||||
SELECT sensor_id, time_bucket(INTERVAL '1 day', time) AS bucket,
|
||||
AVG(temperature) FROM sensor_data
|
||||
GROUP BY sensor_id, bucket;
|
||||
NOTICE: refreshing continuous aggregate "sensor_data_v"
|
||||
INSERT INTO sensor_data
|
||||
SELECT time + (INTERVAL '1 minute' * random()) AS time,
|
||||
sensor_id, random() AS cpu, random()* 100 AS temperature
|
||||
FROM
|
||||
generate_series('2018-03-03 1:00'::TIMESTAMPTZ, '2018-03-31 1:00', '1 hour') AS g1(time),
|
||||
generate_series(1, 100, 1 ) AS g2(sensor_id)
|
||||
ORDER BY time;
|
||||
SELECT count(*) AS num_chunks FROM show_chunks('sensor_data');
|
||||
num_chunks
|
||||
------------
|
||||
5
|
||||
(1 row)
|
||||
|
||||
SELECT drop_chunks('sensor_data','2018-03-28'::timestamp);
|
||||
drop_chunks
|
||||
----------------------------------------
|
||||
_timescaledb_internal._hyper_1_1_chunk
|
||||
_timescaledb_internal._hyper_1_2_chunk
|
||||
_timescaledb_internal._hyper_1_3_chunk
|
||||
(3 rows)
|
||||
|
||||
SELECT count(*) AS num_chunks from timescaledb_information.chunks where hypertable_name = 'sensor_data';
|
||||
num_chunks
|
||||
------------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
SELECT num_chunks from timescaledb_information.hypertables where hypertable_name = 'sensor_data';
|
||||
num_chunks
|
||||
------------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) AS num_chunks FROM show_chunks('sensor_data');
|
||||
num_chunks
|
||||
------------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
DROP TABLE sensor_data CASCADE;
|
||||
NOTICE: drop cascades to 3 other objects
|
||||
NOTICE: drop cascades to table _timescaledb_internal._hyper_2_5_chunk
|
@ -87,6 +87,7 @@ if(CMAKE_BUILD_TYPE MATCHES Debug)
|
||||
dist_triggers.sql
|
||||
dist_backup.sql
|
||||
insert_memory_usage.sql
|
||||
information_view_chunk_count.sql
|
||||
read_only.sql
|
||||
remote_connection_cache.sql
|
||||
remote_connection.sql
|
||||
|
46
tsl/test/sql/information_view_chunk_count.sql
Normal file
46
tsl/test/sql/information_view_chunk_count.sql
Normal file
@ -0,0 +1,46 @@
|
||||
-- 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.
|
||||
|
||||
CREATE TABLE sensor_data(
|
||||
time timestamptz not null,
|
||||
sensor_id integer not null,
|
||||
cpu double precision null,
|
||||
temperature double precision null);
|
||||
|
||||
SELECT from create_hypertable('sensor_data','time');
|
||||
|
||||
INSERT INTO sensor_data
|
||||
SELECT time + (INTERVAL '1 minute' * random()) AS time,
|
||||
sensor_id,
|
||||
random() AS cpu,
|
||||
random() * 100 AS temperature
|
||||
FROM
|
||||
generate_series('2018-03-02 1:00'::TIMESTAMPTZ, '2018-03-28 1:00', '1 hour') AS g1(time),
|
||||
generate_series(1, 100, 1 ) AS g2(sensor_id)
|
||||
ORDER BY time;
|
||||
|
||||
CREATE materialized VIEW sensor_data_v WITH(timescaledb.continuous) AS
|
||||
SELECT sensor_id, time_bucket(INTERVAL '1 day', time) AS bucket,
|
||||
AVG(temperature) FROM sensor_data
|
||||
GROUP BY sensor_id, bucket;
|
||||
|
||||
INSERT INTO sensor_data
|
||||
SELECT time + (INTERVAL '1 minute' * random()) AS time,
|
||||
sensor_id, random() AS cpu, random()* 100 AS temperature
|
||||
FROM
|
||||
generate_series('2018-03-03 1:00'::TIMESTAMPTZ, '2018-03-31 1:00', '1 hour') AS g1(time),
|
||||
generate_series(1, 100, 1 ) AS g2(sensor_id)
|
||||
ORDER BY time;
|
||||
|
||||
SELECT count(*) AS num_chunks FROM show_chunks('sensor_data');
|
||||
|
||||
SELECT drop_chunks('sensor_data','2018-03-28'::timestamp);
|
||||
|
||||
SELECT count(*) AS num_chunks from timescaledb_information.chunks where hypertable_name = 'sensor_data';
|
||||
|
||||
SELECT num_chunks from timescaledb_information.hypertables where hypertable_name = 'sensor_data';
|
||||
|
||||
SELECT count(*) AS num_chunks FROM show_chunks('sensor_data');
|
||||
|
||||
DROP TABLE sensor_data CASCADE;
|
Loading…
x
Reference in New Issue
Block a user