1
0
mirror of https://github.com/timescale/timescaledb.git synced 2025-05-28 09:46:44 +08:00
timescaledb/tsl/test/expected/modify_exclusion-17.out
Aleksander Alekseev 81deb9dd03 Add PG17 test files
Co-authored-by: Sven Klemm <sven@timescale.com>
2024-07-10 21:50:54 +02:00

1990 lines
150 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.
\set PREFIX 'EXPLAIN (ANALYZE,VERBOSE,SUMMARY OFF,TIMING OFF,COSTS OFF)'
\i include/modify_exclusion_load.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.
CREATE TABLE metrics_int2(c1 int,c2 int, c3 int, c4 int, c5 int, time int2 NOT NULL, value float, data text);
CREATE TABLE metrics_int4(c1 int,c2 int, c3 int, c4 int, c5 int, time int4 NOT NULL, value float, data text);
CREATE TABLE metrics_int8(c1 int,c2 int, c3 int, c4 int, c5 int, time int8 NOT NULL, value float, data text);
CREATE TABLE metrics_date(c1 int,c2 int, c3 int, c4 int, c5 int, time date NOT NULL, value float, data text);
CREATE TABLE metrics_timestamp(c1 int,c2 int, c3 int, c4 int, c5 int, time timestamp NOT NULL, value float, data text);
CREATE TABLE metrics_timestamptz(c1 int,c2 int, c3 int, c4 int, c5 int, time timestamptz NOT NULL, value float, data text);
CREATE TABLE metrics_space(c1 int,c2 int, c3 int, c4 int, c5 int, time timestamp NOT NULL, device text, value float, data text);
SELECT table_name FROM create_hypertable('metrics_int2','time',chunk_time_interval:=10);
table_name
--------------
metrics_int2
(1 row)
SELECT table_name FROM create_hypertable('metrics_int4','time',chunk_time_interval:=10);
table_name
--------------
metrics_int4
(1 row)
SELECT table_name FROM create_hypertable('metrics_int8','time',chunk_time_interval:=10);
table_name
--------------
metrics_int8
(1 row)
SELECT table_name FROM create_hypertable('metrics_date','time');
table_name
--------------
metrics_date
(1 row)
SELECT table_name FROM create_hypertable('metrics_timestamp','time');
psql:include/modify_exclusion_load.sql:17: WARNING: column type "timestamp without time zone" used for "time" does not follow best practices
table_name
-------------------
metrics_timestamp
(1 row)
SELECT table_name FROM create_hypertable('metrics_timestamptz','time');
table_name
---------------------
metrics_timestamptz
(1 row)
SELECT table_name FROM create_hypertable('metrics_space','time','device',4);
psql:include/modify_exclusion_load.sql:19: WARNING: column type "timestamp without time zone" used for "time" does not follow best practices
table_name
---------------
metrics_space
(1 row)
CREATE FUNCTION drop_column(text) RETURNS VOID LANGUAGE PLPGSQL AS $$
DECLARE
tbl name;
BEGIN
FOR tbl IN SELECT 'metrics_' || unnest(ARRAY['int2','int4','int8','date','timestamp','timestamptz','space'])
LOOP
EXECUTE format('ALTER TABLE %I DROP COLUMN %I;', tbl, $1);
END LOOP;
END;
$$;
-- create 4 chunks each with different physical layout
SELECT drop_column('c1');
drop_column
-------------
(1 row)
INSERT INTO metrics_int2(time) VALUES (0);
INSERT INTO metrics_int4(time) VALUES (0);
INSERT INTO metrics_int8(time) VALUES (0);
INSERT INTO metrics_date(time) VALUES ('2000-01-01');
INSERT INTO metrics_timestamp(time) VALUES ('2000-01-01');
INSERT INTO metrics_timestamptz(time) VALUES ('2000-01-01');
INSERT INTO metrics_space(time,device) VALUES ('2000-01-01','1'),('2000-01-01','2');
SELECT drop_column('c2');
drop_column
-------------
(1 row)
INSERT INTO metrics_int2(time) VALUES (10);
INSERT INTO metrics_int4(time) VALUES (10);
INSERT INTO metrics_int8(time) VALUES (10);
INSERT INTO metrics_date(time) VALUES ('2001-01-01');
INSERT INTO metrics_timestamp(time) VALUES ('2001-01-01');
INSERT INTO metrics_timestamptz(time) VALUES ('2001-01-01');
INSERT INTO metrics_space(time,device) VALUES ('2001-01-01','1'),('2001-01-01','2');
SELECT drop_column('c3');
drop_column
-------------
(1 row)
INSERT INTO metrics_int2(time) VALUES (20);
INSERT INTO metrics_int4(time) VALUES (20);
INSERT INTO metrics_int8(time) VALUES (20);
INSERT INTO metrics_date(time) VALUES ('2002-01-01');
INSERT INTO metrics_timestamp(time) VALUES ('2002-01-01');
INSERT INTO metrics_timestamptz(time) VALUES ('2002-01-01');
INSERT INTO metrics_space(time,device) VALUES ('2002-01-01','1'),('2002-01-01','2');
SELECT drop_column('c4');
drop_column
-------------
(1 row)
INSERT INTO metrics_int2(time) VALUES (30);
INSERT INTO metrics_int4(time) VALUES (30);
INSERT INTO metrics_int8(time) VALUES (30);
INSERT INTO metrics_date(time) VALUES ('2003-01-01');
INSERT INTO metrics_timestamp(time) VALUES ('2003-01-01');
INSERT INTO metrics_timestamptz(time) VALUES ('2003-01-01');
INSERT INTO metrics_space(time,device) VALUES ('2003-01-01','1'),('2003-01-01','2');
SELECT drop_column('c5');
drop_column
-------------
(1 row)
CREATE TABLE metrics_compressed(time timestamptz NOT NULL, device int, value float);
SELECT table_name FROM create_hypertable('metrics_compressed','time');
table_name
--------------------
metrics_compressed
(1 row)
ALTER TABLE metrics_compressed SET (timescaledb.compress);
psql:include/modify_exclusion_load.sql:73: WARNING: there was some uncertainty picking the default segment by for the hypertable: You do not have any indexes on columns that can be used for segment_by and thus we are not using segment_by for compression. Please make sure you are not missing any indexes
psql:include/modify_exclusion_load.sql:73: NOTICE: default segment by for hypertable "metrics_compressed" is set to ""
psql:include/modify_exclusion_load.sql:73: NOTICE: default order by for hypertable "metrics_compressed" is set to ""time" DESC"
-- create first chunk and compress
INSERT INTO metrics_compressed VALUES ('2000-01-01',1,0.5);
SELECT count(compress_chunk(chunk)) FROM show_chunks('metrics_compressed') chunk;
count
-------
1
(1 row)
-- create more chunks
INSERT INTO metrics_compressed VALUES ('2010-01-01',1,0.5),('2011-01-01',1,0.5),('2012-01-01',1,0.5);
-- immutable constraints
-- should not have ChunkAppend since constraint is immutable and postgres already does the exclusion
-- should only hit 1 chunk and base table
BEGIN;
:PREFIX DELETE FROM metrics_int2 WHERE time = 15;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int2 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_1_9_chunk metrics_int2_1
-> Index Scan using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk metrics_int2_1 (actual rows=0 loops=1)
Output: metrics_int2_1.tableoid, metrics_int2_1.ctid
Index Cond: (metrics_int2_1."time" = 15)
(6 rows)
:PREFIX DELETE FROM metrics_int4 WHERE time = 15;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_10_chunk metrics_int4_1
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk metrics_int4_1 (actual rows=0 loops=1)
Output: metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" = 15)
(6 rows)
:PREFIX DELETE FROM metrics_int8 WHERE time = 15;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int8 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_3_11_chunk metrics_int8_1
-> Index Scan using _hyper_3_11_chunk_metrics_int8_time_idx on _timescaledb_internal._hyper_3_11_chunk metrics_int8_1 (actual rows=0 loops=1)
Output: metrics_int8_1.tableoid, metrics_int8_1.ctid
Index Cond: (metrics_int8_1."time" = 15)
(6 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int2 SET value = 0.5 WHERE time = 15;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int2 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_1_9_chunk metrics_int2_1
-> Result (actual rows=0 loops=1)
Output: '0.5'::double precision, metrics_int2_1.tableoid, metrics_int2_1.ctid
-> Index Scan using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk metrics_int2_1 (actual rows=0 loops=1)
Output: metrics_int2_1.tableoid, metrics_int2_1.ctid
Index Cond: (metrics_int2_1."time" = 15)
(8 rows)
:PREFIX UPDATE metrics_int4 SET value = 0.5 WHERE time = 15;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_10_chunk metrics_int4_1
-> Result (actual rows=0 loops=1)
Output: '0.5'::double precision, metrics_int4_1.tableoid, metrics_int4_1.ctid
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk metrics_int4_1 (actual rows=0 loops=1)
Output: metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" = 15)
(8 rows)
:PREFIX UPDATE metrics_int8 SET value = 0.5 WHERE time = 15;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int8 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_3_11_chunk metrics_int8_1
-> Result (actual rows=0 loops=1)
Output: '0.5'::double precision, metrics_int8_1.tableoid, metrics_int8_1.ctid
-> Index Scan using _hyper_3_11_chunk_metrics_int8_time_idx on _timescaledb_internal._hyper_3_11_chunk metrics_int8_1 (actual rows=0 loops=1)
Output: metrics_int8_1.tableoid, metrics_int8_1.ctid
Index Cond: (metrics_int8_1."time" = 15)
(8 rows)
ROLLBACK;
-- stable constraints
-- should have ChunkAppend since constraint is stable
-- should only hit 1 chunk and base table
BEGIN;
:PREFIX DELETE FROM metrics_int2 WHERE time = length(substring(version(),1,23));
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int2 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_1_1_chunk metrics_int2
Delete on _timescaledb_internal._hyper_1_9_chunk metrics_int2
Delete on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1
Delete on _timescaledb_internal._hyper_1_25_chunk metrics_int2
-> Custom Scan (ChunkAppend) on public.metrics_int2 (actual rows=0 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1 (actual rows=0 loops=1)
Output: metrics_int2_1.tableoid, metrics_int2_1.ctid
Index Cond: (metrics_int2_1."time" = length("substring"(version(), 1, 23)))
(13 rows)
:PREFIX DELETE FROM metrics_int4 WHERE time = length(substring(version(),1,23));
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk metrics_int4
Delete on _timescaledb_internal._hyper_2_10_chunk metrics_int4
Delete on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1
Delete on _timescaledb_internal._hyper_2_26_chunk metrics_int4
-> Custom Scan (ChunkAppend) on public.metrics_int4 (actual rows=0 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1 (actual rows=0 loops=1)
Output: metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" = length("substring"(version(), 1, 23)))
(13 rows)
:PREFIX DELETE FROM metrics_int8 WHERE time = length(substring(version(),1,23));
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int8 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_3_3_chunk metrics_int8
Delete on _timescaledb_internal._hyper_3_11_chunk metrics_int8
Delete on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1
Delete on _timescaledb_internal._hyper_3_27_chunk metrics_int8
-> Custom Scan (ChunkAppend) on public.metrics_int8 (actual rows=0 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_3_19_chunk_metrics_int8_time_idx on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1 (actual rows=0 loops=1)
Output: metrics_int8_1.tableoid, metrics_int8_1.ctid
Index Cond: (metrics_int8_1."time" = length("substring"(version(), 1, 23)))
(13 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int2 SET value = 0.3 WHERE time = length(substring(version(),1,23));
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int2 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_1_1_chunk metrics_int2
Update on _timescaledb_internal._hyper_1_9_chunk metrics_int2
Update on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1
Update on _timescaledb_internal._hyper_1_25_chunk metrics_int2
-> Result (actual rows=0 loops=1)
Output: '0.3'::double precision, metrics_int2.tableoid, metrics_int2.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int2 (actual rows=0 loops=1)
Output: metrics_int2.tableoid, metrics_int2.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1 (actual rows=0 loops=1)
Output: metrics_int2_1.tableoid, metrics_int2_1.ctid
Index Cond: (metrics_int2_1."time" = length("substring"(version(), 1, 23)))
(16 rows)
:PREFIX UPDATE metrics_int4 SET value = 0.3 WHERE time = length(substring(version(),1,23));
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk metrics_int4
Update on _timescaledb_internal._hyper_2_10_chunk metrics_int4
Update on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1
Update on _timescaledb_internal._hyper_2_26_chunk metrics_int4
-> Result (actual rows=0 loops=1)
Output: '0.3'::double precision, metrics_int4.tableoid, metrics_int4.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int4 (actual rows=0 loops=1)
Output: metrics_int4.tableoid, metrics_int4.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1 (actual rows=0 loops=1)
Output: metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" = length("substring"(version(), 1, 23)))
(16 rows)
:PREFIX UPDATE metrics_int8 SET value = 0.3 WHERE time = length(substring(version(),1,23));
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int8 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_3_3_chunk metrics_int8
Update on _timescaledb_internal._hyper_3_11_chunk metrics_int8
Update on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1
Update on _timescaledb_internal._hyper_3_27_chunk metrics_int8
-> Result (actual rows=0 loops=1)
Output: '0.3'::double precision, metrics_int8.tableoid, metrics_int8.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int8 (actual rows=0 loops=1)
Output: metrics_int8.tableoid, metrics_int8.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_3_19_chunk_metrics_int8_time_idx on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1 (actual rows=0 loops=1)
Output: metrics_int8_1.tableoid, metrics_int8_1.ctid
Index Cond: (metrics_int8_1."time" = length("substring"(version(), 1, 23)))
(16 rows)
ROLLBACK;
-- should have ChunkAppend since constraint is stable
-- should only hit 1 chunk and base table, toplevel rows should be 1
BEGIN;
:PREFIX DELETE FROM metrics_int2 WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Delete on public.metrics_int2 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Delete on _timescaledb_internal._hyper_1_1_chunk metrics_int2
Delete on _timescaledb_internal._hyper_1_9_chunk metrics_int2
Delete on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1
Delete on _timescaledb_internal._hyper_1_25_chunk metrics_int2
-> Custom Scan (ChunkAppend) on public.metrics_int2 (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.tableoid, metrics_int2_1.ctid
Index Cond: (metrics_int2_1."time" = length("substring"(version(), 1, 20)))
(15 rows)
:PREFIX DELETE FROM metrics_int4 WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Delete on public.metrics_int4 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Delete on _timescaledb_internal._hyper_2_2_chunk metrics_int4
Delete on _timescaledb_internal._hyper_2_10_chunk metrics_int4
Delete on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1
Delete on _timescaledb_internal._hyper_2_26_chunk metrics_int4
-> Custom Scan (ChunkAppend) on public.metrics_int4 (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" = length("substring"(version(), 1, 20)))
(15 rows)
:PREFIX DELETE FROM metrics_int8 WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Delete on public.metrics_int8 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Delete on _timescaledb_internal._hyper_3_3_chunk metrics_int8
Delete on _timescaledb_internal._hyper_3_11_chunk metrics_int8
Delete on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1
Delete on _timescaledb_internal._hyper_3_27_chunk metrics_int8
-> Custom Scan (ChunkAppend) on public.metrics_int8 (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_3_19_chunk_metrics_int8_time_idx on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1 (actual rows=1 loops=1)
Output: metrics_int8_1.tableoid, metrics_int8_1.ctid
Index Cond: (metrics_int8_1."time" = length("substring"(version(), 1, 20)))
(15 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int2 SET value = 0.4 WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Update on public.metrics_int2 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Update on _timescaledb_internal._hyper_1_1_chunk metrics_int2
Update on _timescaledb_internal._hyper_1_9_chunk metrics_int2
Update on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1
Update on _timescaledb_internal._hyper_1_25_chunk metrics_int2
-> Result (actual rows=1 loops=1)
Output: '0.4'::double precision, metrics_int2.tableoid, metrics_int2.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int2 (actual rows=1 loops=1)
Output: metrics_int2.tableoid, metrics_int2.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.tableoid, metrics_int2_1.ctid
Index Cond: (metrics_int2_1."time" = length("substring"(version(), 1, 20)))
(18 rows)
:PREFIX UPDATE metrics_int4 SET value = 0.4 WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Update on public.metrics_int4 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Update on _timescaledb_internal._hyper_2_2_chunk metrics_int4
Update on _timescaledb_internal._hyper_2_10_chunk metrics_int4
Update on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1
Update on _timescaledb_internal._hyper_2_26_chunk metrics_int4
-> Result (actual rows=1 loops=1)
Output: '0.4'::double precision, metrics_int4.tableoid, metrics_int4.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int4 (actual rows=1 loops=1)
Output: metrics_int4.tableoid, metrics_int4.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" = length("substring"(version(), 1, 20)))
(18 rows)
:PREFIX UPDATE metrics_int8 SET value = 0.4 WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Update on public.metrics_int8 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Update on _timescaledb_internal._hyper_3_3_chunk metrics_int8
Update on _timescaledb_internal._hyper_3_11_chunk metrics_int8
Update on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1
Update on _timescaledb_internal._hyper_3_27_chunk metrics_int8
-> Result (actual rows=1 loops=1)
Output: '0.4'::double precision, metrics_int8.tableoid, metrics_int8.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int8 (actual rows=1 loops=1)
Output: metrics_int8.tableoid, metrics_int8.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_3_19_chunk_metrics_int8_time_idx on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1 (actual rows=1 loops=1)
Output: metrics_int8_1.tableoid, metrics_int8_1.ctid
Index Cond: (metrics_int8_1."time" = length("substring"(version(), 1, 20)))
(18 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int2 SET value = 0.1 * value, data = 'update' WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Update on public.metrics_int2 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Update on _timescaledb_internal._hyper_1_1_chunk metrics_int2
Update on _timescaledb_internal._hyper_1_9_chunk metrics_int2
Update on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1
Update on _timescaledb_internal._hyper_1_25_chunk metrics_int2
-> Result (actual rows=1 loops=1)
Output: ('0.1'::double precision * metrics_int2.value), 'update'::text, metrics_int2.tableoid, metrics_int2.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int2 (actual rows=1 loops=1)
Output: metrics_int2.value, metrics_int2.tableoid, metrics_int2.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.value, metrics_int2_1.tableoid, metrics_int2_1.ctid
Index Cond: (metrics_int2_1."time" = length("substring"(version(), 1, 20)))
(18 rows)
:PREFIX UPDATE metrics_int4 SET value = 0.1 * value, data = 'update' WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Update on public.metrics_int4 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Update on _timescaledb_internal._hyper_2_2_chunk metrics_int4
Update on _timescaledb_internal._hyper_2_10_chunk metrics_int4
Update on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1
Update on _timescaledb_internal._hyper_2_26_chunk metrics_int4
-> Result (actual rows=1 loops=1)
Output: ('0.1'::double precision * metrics_int4.value), 'update'::text, metrics_int4.tableoid, metrics_int4.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int4 (actual rows=1 loops=1)
Output: metrics_int4.value, metrics_int4.tableoid, metrics_int4.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1.value, metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" = length("substring"(version(), 1, 20)))
(18 rows)
:PREFIX UPDATE metrics_int8 SET value = 0.1 * value, data = 'update' WHERE time = length(substring(version(),1,20)) RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), "time"
-> Update on public.metrics_int8 (actual rows=1 loops=1)
Output: 'returning'::text, "time"
Update on _timescaledb_internal._hyper_3_3_chunk metrics_int8
Update on _timescaledb_internal._hyper_3_11_chunk metrics_int8
Update on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1
Update on _timescaledb_internal._hyper_3_27_chunk metrics_int8
-> Result (actual rows=1 loops=1)
Output: ('0.1'::double precision * metrics_int8.value), 'update'::text, metrics_int8.tableoid, metrics_int8.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int8 (actual rows=1 loops=1)
Output: metrics_int8.value, metrics_int8.tableoid, metrics_int8.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_3_19_chunk_metrics_int8_time_idx on _timescaledb_internal._hyper_3_19_chunk metrics_int8_1 (actual rows=1 loops=1)
Output: metrics_int8_1.value, metrics_int8_1.tableoid, metrics_int8_1.ctid
Index Cond: (metrics_int8_1."time" = length("substring"(version(), 1, 20)))
(18 rows)
ROLLBACK;
-- immutable constraints
-- should not have ChunkAppend since constraint is immutable and postgres already does the exclusion
-- should only hit 1 chunk and base table
BEGIN;
:PREFIX DELETE FROM metrics_date WHERE time = '2000-01-01';
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_date (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_4_4_chunk metrics_date_1
-> Index Scan using _hyper_4_4_chunk_metrics_date_time_idx on _timescaledb_internal._hyper_4_4_chunk metrics_date_1 (actual rows=1 loops=1)
Output: metrics_date_1.tableoid, metrics_date_1.ctid
Index Cond: (metrics_date_1."time" = '01-01-2000'::date)
(6 rows)
:PREFIX DELETE FROM metrics_timestamp WHERE time = '2000-01-01';
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_timestamp (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1
-> Index Scan using _hyper_5_5_chunk_metrics_timestamp_time_idx on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1 (actual rows=1 loops=1)
Output: metrics_timestamp_1.tableoid, metrics_timestamp_1.ctid
Index Cond: (metrics_timestamp_1."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone)
(6 rows)
:PREFIX DELETE FROM metrics_timestamptz WHERE time = '2000-01-01';
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_timestamptz (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1
-> Index Scan using _hyper_6_6_chunk_metrics_timestamptz_time_idx on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1 (actual rows=1 loops=1)
Output: metrics_timestamptz_1.tableoid, metrics_timestamptz_1.ctid
Index Cond: (metrics_timestamptz_1."time" = 'Sat Jan 01 00:00:00 2000 PST'::timestamp with time zone)
(6 rows)
:PREFIX DELETE FROM metrics_space WHERE time = '2000-01-01' AND device = '1';
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_space (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
-> Index Scan using _hyper_7_7_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=1 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: ((metrics_space_1.device = '1'::text) AND (metrics_space_1."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone))
(6 rows)
:PREFIX DELETE FROM metrics_space WHERE time = '2000-01-01';
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_space (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
Delete on _timescaledb_internal._hyper_7_8_chunk metrics_space_2
-> Append (actual rows=1 loops=1)
-> Index Scan using _hyper_7_7_chunk_metrics_space_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=0 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: (metrics_space_1."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone)
-> Index Scan using _hyper_7_8_chunk_metrics_space_time_idx on _timescaledb_internal._hyper_7_8_chunk metrics_space_2 (actual rows=1 loops=1)
Output: metrics_space_2.tableoid, metrics_space_2.ctid
Index Cond: (metrics_space_2."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone)
(11 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_date SET value = 0.6 WHERE time = '2000-01-01';
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_date (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_4_4_chunk metrics_date_1
-> Result (actual rows=1 loops=1)
Output: '0.6'::double precision, metrics_date_1.tableoid, metrics_date_1.ctid
-> Index Scan using _hyper_4_4_chunk_metrics_date_time_idx on _timescaledb_internal._hyper_4_4_chunk metrics_date_1 (actual rows=1 loops=1)
Output: metrics_date_1.tableoid, metrics_date_1.ctid
Index Cond: (metrics_date_1."time" = '01-01-2000'::date)
(8 rows)
:PREFIX UPDATE metrics_timestamp SET value = 0.6 WHERE time = '2000-01-01';
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_timestamp (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1
-> Result (actual rows=1 loops=1)
Output: '0.6'::double precision, metrics_timestamp_1.tableoid, metrics_timestamp_1.ctid
-> Index Scan using _hyper_5_5_chunk_metrics_timestamp_time_idx on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1 (actual rows=1 loops=1)
Output: metrics_timestamp_1.tableoid, metrics_timestamp_1.ctid
Index Cond: (metrics_timestamp_1."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone)
(8 rows)
:PREFIX UPDATE metrics_timestamptz SET value = 0.6 WHERE time = '2000-01-01';
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_timestamptz (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1
-> Result (actual rows=1 loops=1)
Output: '0.6'::double precision, metrics_timestamptz_1.tableoid, metrics_timestamptz_1.ctid
-> Index Scan using _hyper_6_6_chunk_metrics_timestamptz_time_idx on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1 (actual rows=1 loops=1)
Output: metrics_timestamptz_1.tableoid, metrics_timestamptz_1.ctid
Index Cond: (metrics_timestamptz_1."time" = 'Sat Jan 01 00:00:00 2000 PST'::timestamp with time zone)
(8 rows)
:PREFIX UPDATE metrics_space SET value = 0.6 WHERE time = '2000-01-01' AND device = '1';
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_space (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
-> Result (actual rows=1 loops=1)
Output: '0.6'::double precision, metrics_space_1.tableoid, metrics_space_1.ctid
-> Index Scan using _hyper_7_7_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=1 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: ((metrics_space_1.device = '1'::text) AND (metrics_space_1."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone))
(8 rows)
:PREFIX UPDATE metrics_space SET value = 0.6 WHERE time = '2000-01-01';
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_space (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
Update on _timescaledb_internal._hyper_7_8_chunk metrics_space_2
-> Result (actual rows=2 loops=1)
Output: '0.6'::double precision, metrics_space.tableoid, metrics_space.ctid
-> Append (actual rows=2 loops=1)
-> Index Scan using _hyper_7_7_chunk_metrics_space_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=1 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: (metrics_space_1."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone)
-> Index Scan using _hyper_7_8_chunk_metrics_space_time_idx on _timescaledb_internal._hyper_7_8_chunk metrics_space_2 (actual rows=1 loops=1)
Output: metrics_space_2.tableoid, metrics_space_2.ctid
Index Cond: (metrics_space_2."time" = 'Sat Jan 01 00:00:00 2000'::timestamp without time zone)
(13 rows)
ROLLBACK;
-- stable constraints
-- should have ChunkAppend since constraint is stable
-- should only hit 1 chunk and base table
BEGIN;
:PREFIX DELETE FROM metrics_date WHERE time = '2000-01-01'::text::date;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_date (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_4_4_chunk metrics_date_1
Delete on _timescaledb_internal._hyper_4_12_chunk metrics_date
Delete on _timescaledb_internal._hyper_4_20_chunk metrics_date
Delete on _timescaledb_internal._hyper_4_28_chunk metrics_date
-> Custom Scan (ChunkAppend) on public.metrics_date (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_4_4_chunk_metrics_date_time_idx on _timescaledb_internal._hyper_4_4_chunk metrics_date_1 (actual rows=1 loops=1)
Output: metrics_date_1.tableoid, metrics_date_1.ctid
Index Cond: (metrics_date_1."time" = ('2000-01-01'::cstring)::date)
(13 rows)
:PREFIX DELETE FROM metrics_timestamp WHERE time = '2000-01-01'::text::timestamp;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_timestamp (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1
Delete on _timescaledb_internal._hyper_5_13_chunk metrics_timestamp
Delete on _timescaledb_internal._hyper_5_21_chunk metrics_timestamp
Delete on _timescaledb_internal._hyper_5_29_chunk metrics_timestamp
-> Custom Scan (ChunkAppend) on public.metrics_timestamp (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_5_5_chunk_metrics_timestamp_time_idx on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1 (actual rows=1 loops=1)
Output: metrics_timestamp_1.tableoid, metrics_timestamp_1.ctid
Index Cond: (metrics_timestamp_1."time" = ('2000-01-01'::cstring)::timestamp without time zone)
(13 rows)
:PREFIX DELETE FROM metrics_timestamptz WHERE time = '2000-01-01'::text::timestamptz;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_timestamptz (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1
Delete on _timescaledb_internal._hyper_6_14_chunk metrics_timestamptz
Delete on _timescaledb_internal._hyper_6_22_chunk metrics_timestamptz
Delete on _timescaledb_internal._hyper_6_30_chunk metrics_timestamptz
-> Custom Scan (ChunkAppend) on public.metrics_timestamptz (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_6_6_chunk_metrics_timestamptz_time_idx on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1 (actual rows=1 loops=1)
Output: metrics_timestamptz_1.tableoid, metrics_timestamptz_1.ctid
Index Cond: (metrics_timestamptz_1."time" = ('2000-01-01'::cstring)::timestamp with time zone)
(13 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_date SET value = 0.9 WHERE time = '2000-01-01'::text::date;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_date (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_4_4_chunk metrics_date_1
Update on _timescaledb_internal._hyper_4_12_chunk metrics_date
Update on _timescaledb_internal._hyper_4_20_chunk metrics_date
Update on _timescaledb_internal._hyper_4_28_chunk metrics_date
-> Result (actual rows=1 loops=1)
Output: '0.9'::double precision, metrics_date.tableoid, metrics_date.ctid
-> Custom Scan (ChunkAppend) on public.metrics_date (actual rows=1 loops=1)
Output: metrics_date.tableoid, metrics_date.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_4_4_chunk_metrics_date_time_idx on _timescaledb_internal._hyper_4_4_chunk metrics_date_1 (actual rows=1 loops=1)
Output: metrics_date_1.tableoid, metrics_date_1.ctid
Index Cond: (metrics_date_1."time" = ('2000-01-01'::cstring)::date)
(16 rows)
:PREFIX UPDATE metrics_timestamp SET value = 0.9 WHERE time = '2000-01-01'::text::timestamp;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_timestamp (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1
Update on _timescaledb_internal._hyper_5_13_chunk metrics_timestamp
Update on _timescaledb_internal._hyper_5_21_chunk metrics_timestamp
Update on _timescaledb_internal._hyper_5_29_chunk metrics_timestamp
-> Result (actual rows=1 loops=1)
Output: '0.9'::double precision, metrics_timestamp.tableoid, metrics_timestamp.ctid
-> Custom Scan (ChunkAppend) on public.metrics_timestamp (actual rows=1 loops=1)
Output: metrics_timestamp.tableoid, metrics_timestamp.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_5_5_chunk_metrics_timestamp_time_idx on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1 (actual rows=1 loops=1)
Output: metrics_timestamp_1.tableoid, metrics_timestamp_1.ctid
Index Cond: (metrics_timestamp_1."time" = ('2000-01-01'::cstring)::timestamp without time zone)
(16 rows)
:PREFIX UPDATE metrics_timestamptz SET value = 0.9 WHERE time = '2000-01-01'::text::timestamptz;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_timestamptz (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1
Update on _timescaledb_internal._hyper_6_14_chunk metrics_timestamptz
Update on _timescaledb_internal._hyper_6_22_chunk metrics_timestamptz
Update on _timescaledb_internal._hyper_6_30_chunk metrics_timestamptz
-> Result (actual rows=1 loops=1)
Output: '0.9'::double precision, metrics_timestamptz.tableoid, metrics_timestamptz.ctid
-> Custom Scan (ChunkAppend) on public.metrics_timestamptz (actual rows=1 loops=1)
Output: metrics_timestamptz.tableoid, metrics_timestamptz.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_6_6_chunk_metrics_timestamptz_time_idx on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1 (actual rows=1 loops=1)
Output: metrics_timestamptz_1.tableoid, metrics_timestamptz_1.ctid
Index Cond: (metrics_timestamptz_1."time" = ('2000-01-01'::cstring)::timestamp with time zone)
(16 rows)
ROLLBACK;
-- space partitioning
-- should have ChunkAppend since constraint is stable
-- should only hit 1 chunk and base table
BEGIN;
:PREFIX DELETE FROM metrics_space WHERE time = '2000-01-01'::text::timestamptz AND device = format('1');
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_space (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
Delete on _timescaledb_internal._hyper_7_8_chunk metrics_space_2
Delete on _timescaledb_internal._hyper_7_15_chunk metrics_space
Delete on _timescaledb_internal._hyper_7_16_chunk metrics_space
Delete on _timescaledb_internal._hyper_7_23_chunk metrics_space
Delete on _timescaledb_internal._hyper_7_24_chunk metrics_space
Delete on _timescaledb_internal._hyper_7_31_chunk metrics_space
Delete on _timescaledb_internal._hyper_7_32_chunk metrics_space
-> Custom Scan (ChunkAppend) on public.metrics_space (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 6
-> Index Scan using _hyper_7_7_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=1 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: ((metrics_space_1.device = format('1'::text)) AND (metrics_space_1."time" = ('2000-01-01'::cstring)::timestamp with time zone))
-> Index Scan using _hyper_7_8_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_8_chunk metrics_space_2 (actual rows=0 loops=1)
Output: metrics_space_2.tableoid, metrics_space_2.ctid
Index Cond: ((metrics_space_2.device = format('1'::text)) AND (metrics_space_2."time" = ('2000-01-01'::cstring)::timestamp with time zone))
(20 rows)
ROLLBACK;
BEGIN;
:PREFIX DELETE FROM metrics_space WHERE device = format('1');
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_space (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
Delete on _timescaledb_internal._hyper_7_8_chunk metrics_space_2
Delete on _timescaledb_internal._hyper_7_15_chunk metrics_space_3
Delete on _timescaledb_internal._hyper_7_16_chunk metrics_space_4
Delete on _timescaledb_internal._hyper_7_23_chunk metrics_space_5
Delete on _timescaledb_internal._hyper_7_24_chunk metrics_space_6
Delete on _timescaledb_internal._hyper_7_31_chunk metrics_space_7
Delete on _timescaledb_internal._hyper_7_32_chunk metrics_space_8
-> Custom Scan (ChunkAppend) on public.metrics_space (actual rows=4 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_7_7_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=1 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: (metrics_space_1.device = format('1'::text))
-> Index Scan using _hyper_7_8_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_8_chunk metrics_space_2 (actual rows=0 loops=1)
Output: metrics_space_2.tableoid, metrics_space_2.ctid
Index Cond: (metrics_space_2.device = format('1'::text))
-> Index Scan using _hyper_7_15_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_15_chunk metrics_space_3 (actual rows=1 loops=1)
Output: metrics_space_3.tableoid, metrics_space_3.ctid
Index Cond: (metrics_space_3.device = format('1'::text))
-> Index Scan using _hyper_7_16_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_16_chunk metrics_space_4 (actual rows=0 loops=1)
Output: metrics_space_4.tableoid, metrics_space_4.ctid
Index Cond: (metrics_space_4.device = format('1'::text))
-> Index Scan using _hyper_7_23_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_23_chunk metrics_space_5 (actual rows=1 loops=1)
Output: metrics_space_5.tableoid, metrics_space_5.ctid
Index Cond: (metrics_space_5.device = format('1'::text))
-> Index Scan using _hyper_7_24_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_24_chunk metrics_space_6 (actual rows=0 loops=1)
Output: metrics_space_6.tableoid, metrics_space_6.ctid
Index Cond: (metrics_space_6.device = format('1'::text))
-> Index Scan using _hyper_7_31_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_31_chunk metrics_space_7 (actual rows=1 loops=1)
Output: metrics_space_7.tableoid, metrics_space_7.ctid
Index Cond: (metrics_space_7.device = format('1'::text))
-> Index Scan using _hyper_7_32_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_32_chunk metrics_space_8 (actual rows=0 loops=1)
Output: metrics_space_8.tableoid, metrics_space_8.ctid
Index Cond: (metrics_space_8.device = format('1'::text))
(38 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_space SET value = 0.1 WHERE time = '2000-01-01'::text::timestamptz AND device = format('1');
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_space (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
Update on _timescaledb_internal._hyper_7_8_chunk metrics_space_2
Update on _timescaledb_internal._hyper_7_15_chunk metrics_space
Update on _timescaledb_internal._hyper_7_16_chunk metrics_space
Update on _timescaledb_internal._hyper_7_23_chunk metrics_space
Update on _timescaledb_internal._hyper_7_24_chunk metrics_space
Update on _timescaledb_internal._hyper_7_31_chunk metrics_space
Update on _timescaledb_internal._hyper_7_32_chunk metrics_space
-> Result (actual rows=1 loops=1)
Output: '0.1'::double precision, metrics_space.tableoid, metrics_space.ctid
-> Custom Scan (ChunkAppend) on public.metrics_space (actual rows=1 loops=1)
Output: metrics_space.tableoid, metrics_space.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 6
-> Index Scan using _hyper_7_7_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=1 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: ((metrics_space_1.device = format('1'::text)) AND (metrics_space_1."time" = ('2000-01-01'::cstring)::timestamp with time zone))
-> Index Scan using _hyper_7_8_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_8_chunk metrics_space_2 (actual rows=0 loops=1)
Output: metrics_space_2.tableoid, metrics_space_2.ctid
Index Cond: ((metrics_space_2.device = format('1'::text)) AND (metrics_space_2."time" = ('2000-01-01'::cstring)::timestamp with time zone))
(23 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_space SET value = 0.1 WHERE device = format('1');
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_space (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_7_7_chunk metrics_space_1
Update on _timescaledb_internal._hyper_7_8_chunk metrics_space_2
Update on _timescaledb_internal._hyper_7_15_chunk metrics_space_3
Update on _timescaledb_internal._hyper_7_16_chunk metrics_space_4
Update on _timescaledb_internal._hyper_7_23_chunk metrics_space_5
Update on _timescaledb_internal._hyper_7_24_chunk metrics_space_6
Update on _timescaledb_internal._hyper_7_31_chunk metrics_space_7
Update on _timescaledb_internal._hyper_7_32_chunk metrics_space_8
-> Result (actual rows=4 loops=1)
Output: '0.1'::double precision, metrics_space.tableoid, metrics_space.ctid
-> Custom Scan (ChunkAppend) on public.metrics_space (actual rows=4 loops=1)
Output: metrics_space.tableoid, metrics_space.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_7_7_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_7_chunk metrics_space_1 (actual rows=1 loops=1)
Output: metrics_space_1.tableoid, metrics_space_1.ctid
Index Cond: (metrics_space_1.device = format('1'::text))
-> Index Scan using _hyper_7_8_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_8_chunk metrics_space_2 (actual rows=0 loops=1)
Output: metrics_space_2.tableoid, metrics_space_2.ctid
Index Cond: (metrics_space_2.device = format('1'::text))
-> Index Scan using _hyper_7_15_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_15_chunk metrics_space_3 (actual rows=1 loops=1)
Output: metrics_space_3.tableoid, metrics_space_3.ctid
Index Cond: (metrics_space_3.device = format('1'::text))
-> Index Scan using _hyper_7_16_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_16_chunk metrics_space_4 (actual rows=0 loops=1)
Output: metrics_space_4.tableoid, metrics_space_4.ctid
Index Cond: (metrics_space_4.device = format('1'::text))
-> Index Scan using _hyper_7_23_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_23_chunk metrics_space_5 (actual rows=1 loops=1)
Output: metrics_space_5.tableoid, metrics_space_5.ctid
Index Cond: (metrics_space_5.device = format('1'::text))
-> Index Scan using _hyper_7_24_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_24_chunk metrics_space_6 (actual rows=0 loops=1)
Output: metrics_space_6.tableoid, metrics_space_6.ctid
Index Cond: (metrics_space_6.device = format('1'::text))
-> Index Scan using _hyper_7_31_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_31_chunk metrics_space_7 (actual rows=1 loops=1)
Output: metrics_space_7.tableoid, metrics_space_7.ctid
Index Cond: (metrics_space_7.device = format('1'::text))
-> Index Scan using _hyper_7_32_chunk_metrics_space_device_time_idx on _timescaledb_internal._hyper_7_32_chunk metrics_space_8 (actual rows=0 loops=1)
Output: metrics_space_8.tableoid, metrics_space_8.ctid
Index Cond: (metrics_space_8.device = format('1'::text))
(41 rows)
ROLLBACK;
-- should have ChunkAppend since constraint is stable
-- should only hit 1 chunk and base table, toplevel rows should be 1
BEGIN;
:PREFIX DELETE FROM metrics_date WHERE time = '2000-01-01'::text::date RETURNING 'returning', time;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), metrics_date_1."time"
-> Delete on public.metrics_date (actual rows=1 loops=1)
Output: 'returning'::text, metrics_date_1."time"
Delete on _timescaledb_internal._hyper_4_4_chunk metrics_date_1
Delete on _timescaledb_internal._hyper_4_12_chunk metrics_date
Delete on _timescaledb_internal._hyper_4_20_chunk metrics_date
Delete on _timescaledb_internal._hyper_4_28_chunk metrics_date
-> Custom Scan (ChunkAppend) on public.metrics_date (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_4_4_chunk_metrics_date_time_idx on _timescaledb_internal._hyper_4_4_chunk metrics_date_1 (actual rows=1 loops=1)
Output: metrics_date_1.tableoid, metrics_date_1.ctid
Index Cond: (metrics_date_1."time" = ('2000-01-01'::cstring)::date)
(15 rows)
:PREFIX DELETE FROM metrics_timestamp WHERE time = '2000-01-01'::text::timestamp RETURNING 'returning', time;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), metrics_timestamp_1."time"
-> Delete on public.metrics_timestamp (actual rows=1 loops=1)
Output: 'returning'::text, metrics_timestamp_1."time"
Delete on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1
Delete on _timescaledb_internal._hyper_5_13_chunk metrics_timestamp
Delete on _timescaledb_internal._hyper_5_21_chunk metrics_timestamp
Delete on _timescaledb_internal._hyper_5_29_chunk metrics_timestamp
-> Custom Scan (ChunkAppend) on public.metrics_timestamp (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_5_5_chunk_metrics_timestamp_time_idx on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1 (actual rows=1 loops=1)
Output: metrics_timestamp_1.tableoid, metrics_timestamp_1.ctid
Index Cond: (metrics_timestamp_1."time" = ('2000-01-01'::cstring)::timestamp without time zone)
(15 rows)
:PREFIX DELETE FROM metrics_timestamptz WHERE time = '2000-01-01'::text::timestamptz RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), metrics_timestamptz_1."time"
-> Delete on public.metrics_timestamptz (actual rows=1 loops=1)
Output: 'returning'::text, metrics_timestamptz_1."time"
Delete on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1
Delete on _timescaledb_internal._hyper_6_14_chunk metrics_timestamptz
Delete on _timescaledb_internal._hyper_6_22_chunk metrics_timestamptz
Delete on _timescaledb_internal._hyper_6_30_chunk metrics_timestamptz
-> Custom Scan (ChunkAppend) on public.metrics_timestamptz (actual rows=1 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_6_6_chunk_metrics_timestamptz_time_idx on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1 (actual rows=1 loops=1)
Output: metrics_timestamptz_1.tableoid, metrics_timestamptz_1.ctid
Index Cond: (metrics_timestamptz_1."time" = ('2000-01-01'::cstring)::timestamp with time zone)
(15 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_date SET value = 0.2 WHERE time = '2000-01-01'::text::date RETURNING 'returning', time;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), metrics_date_1."time"
-> Update on public.metrics_date (actual rows=1 loops=1)
Output: 'returning'::text, metrics_date_1."time"
Update on _timescaledb_internal._hyper_4_4_chunk metrics_date_1
Update on _timescaledb_internal._hyper_4_12_chunk metrics_date
Update on _timescaledb_internal._hyper_4_20_chunk metrics_date
Update on _timescaledb_internal._hyper_4_28_chunk metrics_date
-> Result (actual rows=1 loops=1)
Output: '0.2'::double precision, metrics_date.tableoid, metrics_date.ctid
-> Custom Scan (ChunkAppend) on public.metrics_date (actual rows=1 loops=1)
Output: metrics_date.tableoid, metrics_date.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_4_4_chunk_metrics_date_time_idx on _timescaledb_internal._hyper_4_4_chunk metrics_date_1 (actual rows=1 loops=1)
Output: metrics_date_1.tableoid, metrics_date_1.ctid
Index Cond: (metrics_date_1."time" = ('2000-01-01'::cstring)::date)
(18 rows)
:PREFIX UPDATE metrics_timestamp SET value = 0.2 WHERE time = '2000-01-01'::text::timestamp RETURNING 'returning', time;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), metrics_timestamp_1."time"
-> Update on public.metrics_timestamp (actual rows=1 loops=1)
Output: 'returning'::text, metrics_timestamp_1."time"
Update on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1
Update on _timescaledb_internal._hyper_5_13_chunk metrics_timestamp
Update on _timescaledb_internal._hyper_5_21_chunk metrics_timestamp
Update on _timescaledb_internal._hyper_5_29_chunk metrics_timestamp
-> Result (actual rows=1 loops=1)
Output: '0.2'::double precision, metrics_timestamp.tableoid, metrics_timestamp.ctid
-> Custom Scan (ChunkAppend) on public.metrics_timestamp (actual rows=1 loops=1)
Output: metrics_timestamp.tableoid, metrics_timestamp.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_5_5_chunk_metrics_timestamp_time_idx on _timescaledb_internal._hyper_5_5_chunk metrics_timestamp_1 (actual rows=1 loops=1)
Output: metrics_timestamp_1.tableoid, metrics_timestamp_1.ctid
Index Cond: (metrics_timestamp_1."time" = ('2000-01-01'::cstring)::timestamp without time zone)
(18 rows)
:PREFIX UPDATE metrics_timestamptz SET value = 0.2 WHERE time = '2000-01-01'::text::timestamptz RETURNING 'returning', time;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=1 loops=1)
Output: ('returning'::text), metrics_timestamptz_1."time"
-> Update on public.metrics_timestamptz (actual rows=1 loops=1)
Output: 'returning'::text, metrics_timestamptz_1."time"
Update on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1
Update on _timescaledb_internal._hyper_6_14_chunk metrics_timestamptz
Update on _timescaledb_internal._hyper_6_22_chunk metrics_timestamptz
Update on _timescaledb_internal._hyper_6_30_chunk metrics_timestamptz
-> Result (actual rows=1 loops=1)
Output: '0.2'::double precision, metrics_timestamptz.tableoid, metrics_timestamptz.ctid
-> Custom Scan (ChunkAppend) on public.metrics_timestamptz (actual rows=1 loops=1)
Output: metrics_timestamptz.tableoid, metrics_timestamptz.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 3
-> Index Scan using _hyper_6_6_chunk_metrics_timestamptz_time_idx on _timescaledb_internal._hyper_6_6_chunk metrics_timestamptz_1 (actual rows=1 loops=1)
Output: metrics_timestamptz_1.tableoid, metrics_timestamptz_1.ctid
Index Cond: (metrics_timestamptz_1."time" = ('2000-01-01'::cstring)::timestamp with time zone)
(18 rows)
ROLLBACK;
-- subselects
-- no chunk exclusion for subqueries joins atm
BEGIN;
:PREFIX DELETE FROM metrics_int4 WHERE time IN (SELECT time FROM metrics_int2) AND time < length(version());
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1
Delete on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2
Delete on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3
Delete on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4
-> Hash Join (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int4.tableoid, metrics_int4.ctid, metrics_int2.tableoid
Inner Unique: true
Hash Cond: (metrics_int4."time" = metrics_int2."time")
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1."time", metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" < length(version()))
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2 (actual rows=1 loops=1)
Output: metrics_int4_2."time", metrics_int4_2.tableoid, metrics_int4_2.ctid
Index Cond: (metrics_int4_2."time" < length(version()))
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3 (actual rows=1 loops=1)
Output: metrics_int4_3."time", metrics_int4_3.tableoid, metrics_int4_3.ctid
Index Cond: (metrics_int4_3."time" < length(version()))
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4 (actual rows=1 loops=1)
Output: metrics_int4_4."time", metrics_int4_4.tableoid, metrics_int4_4.ctid
Index Cond: (metrics_int4_4."time" < length(version()))
-> Hash (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Buckets: 1024 Batches: 1
-> HashAggregate (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Group Key: metrics_int2."time"
Batches: 1
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_1_1_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.ctid, metrics_int2_1."time", metrics_int2_1.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_9_chunk metrics_int2_2 (actual rows=1 loops=1)
Output: metrics_int2_2.ctid, metrics_int2_2."time", metrics_int2_2.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_17_chunk metrics_int2_3 (actual rows=1 loops=1)
Output: metrics_int2_3.ctid, metrics_int2_3."time", metrics_int2_3.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_25_chunk metrics_int2_4 (actual rows=1 loops=1)
Output: metrics_int2_4.ctid, metrics_int2_4."time", metrics_int2_4.tableoid
(39 rows)
ROLLBACK;
BEGIN;
:PREFIX DELETE FROM metrics_int4 WHERE time IN (SELECT time FROM metrics_int2 WHERE time < length(version()));
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1
Delete on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2
Delete on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3
Delete on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4
-> Hash Join (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int4.tableoid, metrics_int4.ctid, metrics_int2.tableoid
Inner Unique: true
Hash Cond: (metrics_int4."time" = metrics_int2."time")
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1."time", metrics_int4_1.tableoid, metrics_int4_1.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2 (actual rows=1 loops=1)
Output: metrics_int4_2."time", metrics_int4_2.tableoid, metrics_int4_2.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3 (actual rows=1 loops=1)
Output: metrics_int4_3."time", metrics_int4_3.tableoid, metrics_int4_3.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4 (actual rows=1 loops=1)
Output: metrics_int4_4."time", metrics_int4_4.tableoid, metrics_int4_4.ctid
-> Hash (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Buckets: 1024 Batches: 1
-> HashAggregate (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Group Key: metrics_int2."time"
Batches: 1
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.ctid, metrics_int2_1."time", metrics_int2_1.tableoid
Index Cond: (metrics_int2_1."time" < length(version()))
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk metrics_int2_2 (actual rows=1 loops=1)
Output: metrics_int2_2.ctid, metrics_int2_2."time", metrics_int2_2.tableoid
Index Cond: (metrics_int2_2."time" < length(version()))
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_3 (actual rows=1 loops=1)
Output: metrics_int2_3.ctid, metrics_int2_3."time", metrics_int2_3.tableoid
Index Cond: (metrics_int2_3."time" < length(version()))
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk metrics_int2_4 (actual rows=1 loops=1)
Output: metrics_int2_4.ctid, metrics_int2_4."time", metrics_int2_4.tableoid
Index Cond: (metrics_int2_4."time" < length(version()))
(39 rows)
ROLLBACK;
BEGIN;
:PREFIX DELETE FROM metrics_int4 WHERE time IN (SELECT time FROM metrics_int2 WHERE time < length(version())) AND time < length(version());
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1
Delete on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2
Delete on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3
Delete on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4
-> Hash Join (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int4.tableoid, metrics_int4.ctid, metrics_int2.tableoid
Inner Unique: true
Hash Cond: (metrics_int4."time" = metrics_int2."time")
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1."time", metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" < length(version()))
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2 (actual rows=1 loops=1)
Output: metrics_int4_2."time", metrics_int4_2.tableoid, metrics_int4_2.ctid
Index Cond: (metrics_int4_2."time" < length(version()))
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3 (actual rows=1 loops=1)
Output: metrics_int4_3."time", metrics_int4_3.tableoid, metrics_int4_3.ctid
Index Cond: (metrics_int4_3."time" < length(version()))
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4 (actual rows=1 loops=1)
Output: metrics_int4_4."time", metrics_int4_4.tableoid, metrics_int4_4.ctid
Index Cond: (metrics_int4_4."time" < length(version()))
-> Hash (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Buckets: 1024 Batches: 1
-> HashAggregate (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Group Key: metrics_int2."time"
Batches: 1
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.ctid, metrics_int2_1."time", metrics_int2_1.tableoid
Index Cond: (metrics_int2_1."time" < length(version()))
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk metrics_int2_2 (actual rows=1 loops=1)
Output: metrics_int2_2.ctid, metrics_int2_2."time", metrics_int2_2.tableoid
Index Cond: (metrics_int2_2."time" < length(version()))
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_3 (actual rows=1 loops=1)
Output: metrics_int2_3.ctid, metrics_int2_3."time", metrics_int2_3.tableoid
Index Cond: (metrics_int2_3."time" < length(version()))
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk metrics_int2_4 (actual rows=1 loops=1)
Output: metrics_int2_4.ctid, metrics_int2_4."time", metrics_int2_4.tableoid
Index Cond: (metrics_int2_4."time" < length(version()))
(43 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int4 SET value = 0.1 WHERE time IN (SELECT time FROM metrics_int2) AND time < length(version());
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1
Update on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2
Update on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3
Update on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4
-> Hash Join (actual rows=4 loops=1)
Output: '0.1'::double precision, metrics_int2.ctid, metrics_int4.tableoid, metrics_int4.ctid, metrics_int2.tableoid
Inner Unique: true
Hash Cond: (metrics_int4."time" = metrics_int2."time")
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1."time", metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" < length(version()))
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2 (actual rows=1 loops=1)
Output: metrics_int4_2."time", metrics_int4_2.tableoid, metrics_int4_2.ctid
Index Cond: (metrics_int4_2."time" < length(version()))
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3 (actual rows=1 loops=1)
Output: metrics_int4_3."time", metrics_int4_3.tableoid, metrics_int4_3.ctid
Index Cond: (metrics_int4_3."time" < length(version()))
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4 (actual rows=1 loops=1)
Output: metrics_int4_4."time", metrics_int4_4.tableoid, metrics_int4_4.ctid
Index Cond: (metrics_int4_4."time" < length(version()))
-> Hash (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Buckets: 1024 Batches: 1
-> HashAggregate (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Group Key: metrics_int2."time"
Batches: 1
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_1_1_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.ctid, metrics_int2_1."time", metrics_int2_1.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_9_chunk metrics_int2_2 (actual rows=1 loops=1)
Output: metrics_int2_2.ctid, metrics_int2_2."time", metrics_int2_2.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_17_chunk metrics_int2_3 (actual rows=1 loops=1)
Output: metrics_int2_3.ctid, metrics_int2_3."time", metrics_int2_3.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_25_chunk metrics_int2_4 (actual rows=1 loops=1)
Output: metrics_int2_4.ctid, metrics_int2_4."time", metrics_int2_4.tableoid
(39 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int4 SET value = 0.1 WHERE time IN (SELECT time FROM metrics_int2 WHERE time < length(version()));
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1
Update on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2
Update on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3
Update on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4
-> Hash Join (actual rows=4 loops=1)
Output: '0.1'::double precision, metrics_int2.ctid, metrics_int4.tableoid, metrics_int4.ctid, metrics_int2.tableoid
Inner Unique: true
Hash Cond: (metrics_int4."time" = metrics_int2."time")
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1."time", metrics_int4_1.tableoid, metrics_int4_1.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2 (actual rows=1 loops=1)
Output: metrics_int4_2."time", metrics_int4_2.tableoid, metrics_int4_2.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3 (actual rows=1 loops=1)
Output: metrics_int4_3."time", metrics_int4_3.tableoid, metrics_int4_3.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4 (actual rows=1 loops=1)
Output: metrics_int4_4."time", metrics_int4_4.tableoid, metrics_int4_4.ctid
-> Hash (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Buckets: 1024 Batches: 1
-> HashAggregate (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Group Key: metrics_int2."time"
Batches: 1
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.ctid, metrics_int2_1."time", metrics_int2_1.tableoid
Index Cond: (metrics_int2_1."time" < length(version()))
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk metrics_int2_2 (actual rows=1 loops=1)
Output: metrics_int2_2.ctid, metrics_int2_2."time", metrics_int2_2.tableoid
Index Cond: (metrics_int2_2."time" < length(version()))
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_3 (actual rows=1 loops=1)
Output: metrics_int2_3.ctid, metrics_int2_3."time", metrics_int2_3.tableoid
Index Cond: (metrics_int2_3."time" < length(version()))
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk metrics_int2_4 (actual rows=1 loops=1)
Output: metrics_int2_4.ctid, metrics_int2_4."time", metrics_int2_4.tableoid
Index Cond: (metrics_int2_4."time" < length(version()))
(39 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int4 SET value = 0.1 WHERE time IN (SELECT time FROM metrics_int2 WHERE time < length(version())) AND time < length(version());
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1
Update on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2
Update on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3
Update on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4
-> Hash Join (actual rows=4 loops=1)
Output: '0.1'::double precision, metrics_int2.ctid, metrics_int4.tableoid, metrics_int4.ctid, metrics_int2.tableoid
Inner Unique: true
Hash Cond: (metrics_int4."time" = metrics_int2."time")
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk metrics_int4_1 (actual rows=1 loops=1)
Output: metrics_int4_1."time", metrics_int4_1.tableoid, metrics_int4_1.ctid
Index Cond: (metrics_int4_1."time" < length(version()))
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk metrics_int4_2 (actual rows=1 loops=1)
Output: metrics_int4_2."time", metrics_int4_2.tableoid, metrics_int4_2.ctid
Index Cond: (metrics_int4_2."time" < length(version()))
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk metrics_int4_3 (actual rows=1 loops=1)
Output: metrics_int4_3."time", metrics_int4_3.tableoid, metrics_int4_3.ctid
Index Cond: (metrics_int4_3."time" < length(version()))
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk metrics_int4_4 (actual rows=1 loops=1)
Output: metrics_int4_4."time", metrics_int4_4.tableoid, metrics_int4_4.ctid
Index Cond: (metrics_int4_4."time" < length(version()))
-> Hash (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Buckets: 1024 Batches: 1
-> HashAggregate (actual rows=4 loops=1)
Output: metrics_int2.ctid, metrics_int2."time", metrics_int2.tableoid
Group Key: metrics_int2."time"
Batches: 1
-> Append (actual rows=4 loops=1)
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk metrics_int2_1 (actual rows=1 loops=1)
Output: metrics_int2_1.ctid, metrics_int2_1."time", metrics_int2_1.tableoid
Index Cond: (metrics_int2_1."time" < length(version()))
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk metrics_int2_2 (actual rows=1 loops=1)
Output: metrics_int2_2.ctid, metrics_int2_2."time", metrics_int2_2.tableoid
Index Cond: (metrics_int2_2."time" < length(version()))
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk metrics_int2_3 (actual rows=1 loops=1)
Output: metrics_int2_3.ctid, metrics_int2_3."time", metrics_int2_3.tableoid
Index Cond: (metrics_int2_3."time" < length(version()))
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk metrics_int2_4 (actual rows=1 loops=1)
Output: metrics_int2_4.ctid, metrics_int2_4."time", metrics_int2_4.tableoid
Index Cond: (metrics_int2_4."time" < length(version()))
(43 rows)
ROLLBACK;
-- join
-- no chunk exclusion for subqueries joins atm
BEGIN;
:PREFIX DELETE FROM metrics_int4 m4 USING metrics_int2 m2;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 m4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk m4_1
Delete on _timescaledb_internal._hyper_2_10_chunk m4_2
Delete on _timescaledb_internal._hyper_2_18_chunk m4_3
Delete on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Nested Loop (actual rows=16 loops=1)
Output: m2.ctid, m4.tableoid, m4.ctid, m2.tableoid
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.ctid, m2_1.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.ctid, m2_2.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.ctid, m2_3.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.ctid, m2_4.tableoid
-> Materialize (actual rows=4 loops=4)
Output: m4.tableoid, m4.ctid
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
(28 rows)
ROLLBACK;
BEGIN;
:PREFIX DELETE FROM metrics_int4 m4 USING metrics_int2 m2 WHERE m4.time = m2.time;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 m4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk m4_1
Delete on _timescaledb_internal._hyper_2_10_chunk m4_2
Delete on _timescaledb_internal._hyper_2_18_chunk m4_3
Delete on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Merge Join (actual rows=4 loops=1)
Output: m2.ctid, m4.tableoid, m4.ctid, m2.tableoid
Merge Cond: (m4."time" = m2."time")
-> Merge Append (actual rows=4 loops=1)
Sort Key: m4."time"
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1."time", m4_1.tableoid, m4_1.ctid
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2."time", m4_2.tableoid, m4_2.ctid
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3."time", m4_3.tableoid, m4_3.ctid
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4."time", m4_4.tableoid, m4_4.ctid
-> Materialize (actual rows=4 loops=1)
Output: m2.ctid, m2."time", m2.tableoid
-> Merge Append (actual rows=4 loops=1)
Sort Key: m2."time"
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.ctid, m2_1."time", m2_1.tableoid
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.ctid, m2_2."time", m2_2.tableoid
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.ctid, m2_3."time", m2_3.tableoid
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.ctid, m2_4."time", m2_4.tableoid
(31 rows)
ROLLBACK;
BEGIN;
:PREFIX DELETE FROM metrics_int4 m4 USING metrics_int2 m2 WHERE m4.time = m2.time AND m4.time < length(version());
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 m4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk m4_1
Delete on _timescaledb_internal._hyper_2_10_chunk m4_2
Delete on _timescaledb_internal._hyper_2_18_chunk m4_3
Delete on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Merge Join (actual rows=4 loops=1)
Output: m2.ctid, m4.tableoid, m4.ctid, m2.tableoid
Merge Cond: (m4."time" = m2."time")
-> Merge Append (actual rows=4 loops=1)
Sort Key: m4."time"
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1."time", m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2."time", m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3."time", m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4."time", m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
-> Materialize (actual rows=4 loops=1)
Output: m2.ctid, m2."time", m2.tableoid
-> Merge Append (actual rows=4 loops=1)
Sort Key: m2."time"
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.ctid, m2_1."time", m2_1.tableoid
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.ctid, m2_2."time", m2_2.tableoid
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.ctid, m2_3."time", m2_3.tableoid
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.ctid, m2_4."time", m2_4.tableoid
(35 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int4 m4 SET value = 0.15 FROM metrics_int2 m2;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 m4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk m4_1
Update on _timescaledb_internal._hyper_2_10_chunk m4_2
Update on _timescaledb_internal._hyper_2_18_chunk m4_3
Update on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Nested Loop (actual rows=16 loops=1)
Output: '0.15'::double precision, m2.ctid, m4.tableoid, m4.ctid, m2.tableoid
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.ctid, m2_1.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.ctid, m2_2.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.ctid, m2_3.tableoid
-> Seq Scan on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.ctid, m2_4.tableoid
-> Materialize (actual rows=4 loops=4)
Output: m4.tableoid, m4.ctid
-> Append (actual rows=4 loops=1)
-> Seq Scan on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
-> Seq Scan on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
(28 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int4 m4 SET value = 0.15 FROM metrics_int2 m2 WHERE m4.time = m2.time;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 m4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk m4_1
Update on _timescaledb_internal._hyper_2_10_chunk m4_2
Update on _timescaledb_internal._hyper_2_18_chunk m4_3
Update on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Merge Join (actual rows=4 loops=1)
Output: '0.15'::double precision, m2.ctid, m4.tableoid, m4.ctid, m2.tableoid
Merge Cond: (m4."time" = m2."time")
-> Merge Append (actual rows=4 loops=1)
Sort Key: m4."time"
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1."time", m4_1.tableoid, m4_1.ctid
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2."time", m4_2.tableoid, m4_2.ctid
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3."time", m4_3.tableoid, m4_3.ctid
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4."time", m4_4.tableoid, m4_4.ctid
-> Materialize (actual rows=4 loops=1)
Output: m2.ctid, m2."time", m2.tableoid
-> Merge Append (actual rows=4 loops=1)
Sort Key: m2."time"
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.ctid, m2_1."time", m2_1.tableoid
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.ctid, m2_2."time", m2_2.tableoid
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.ctid, m2_3."time", m2_3.tableoid
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.ctid, m2_4."time", m2_4.tableoid
(31 rows)
ROLLBACK;
BEGIN;
:PREFIX UPDATE metrics_int4 m4 SET value = 0.15 FROM metrics_int2 m2 WHERE m4.time = m2.time AND m4.time < length(version());
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 m4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk m4_1
Update on _timescaledb_internal._hyper_2_10_chunk m4_2
Update on _timescaledb_internal._hyper_2_18_chunk m4_3
Update on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Merge Join (actual rows=4 loops=1)
Output: '0.15'::double precision, m2.ctid, m4.tableoid, m4.ctid, m2.tableoid
Merge Cond: (m4."time" = m2."time")
-> Merge Append (actual rows=4 loops=1)
Sort Key: m4."time"
-> Index Scan Backward using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1."time", m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan Backward using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2."time", m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan Backward using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3."time", m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan Backward using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4."time", m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
-> Materialize (actual rows=4 loops=1)
Output: m2.ctid, m2."time", m2.tableoid
-> Merge Append (actual rows=4 loops=1)
Sort Key: m2."time"
-> Index Scan Backward using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.ctid, m2_1."time", m2_1.tableoid
-> Index Scan Backward using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.ctid, m2_2."time", m2_2.tableoid
-> Index Scan Backward using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.ctid, m2_3."time", m2_3.tableoid
-> Index Scan Backward using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.ctid, m2_4."time", m2_4.tableoid
(35 rows)
ROLLBACK;
-- cte
-- should all have chunkappend nodes
BEGIN;
:PREFIX WITH d AS (DELETE FROM metrics_int4 m4 WHERE m4.time < length(version()) RETURNING time)
SELECT * FROM d;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
CTE Scan on d (actual rows=4 loops=1)
Output: d."time"
CTE d
-> Custom Scan (HypertableModify) (actual rows=4 loops=1)
Output: m4_1."time"
-> Delete on public.metrics_int4 m4 (actual rows=4 loops=1)
Output: m4_1."time"
Delete on _timescaledb_internal._hyper_2_2_chunk m4_1
Delete on _timescaledb_internal._hyper_2_10_chunk m4_2
Delete on _timescaledb_internal._hyper_2_18_chunk m4_3
Delete on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Custom Scan (ChunkAppend) on public.metrics_int4 m4 (actual rows=4 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
(27 rows)
ROLLBACK;
BEGIN;
:PREFIX WITH d AS (DELETE FROM metrics_int4 m4 WHERE m4.time < length(version()))
DELETE FROM metrics_int2 m2 WHERE m2.time < length(version());
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
CTE d
-> Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_int4 m4 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_2_2_chunk m4_1
Delete on _timescaledb_internal._hyper_2_10_chunk m4_2
Delete on _timescaledb_internal._hyper_2_18_chunk m4_3
Delete on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Custom Scan (ChunkAppend) on public.metrics_int4 m4 (actual rows=4 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
-> Delete on public.metrics_int2 m2 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_1_1_chunk m2_1
Delete on _timescaledb_internal._hyper_1_9_chunk m2_2
Delete on _timescaledb_internal._hyper_1_17_chunk m2_3
Delete on _timescaledb_internal._hyper_1_25_chunk m2_4
-> Custom Scan (ChunkAppend) on public.metrics_int2 m2 (actual rows=4 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.tableoid, m2_1.ctid
Index Cond: (m2_1."time" < length(version()))
-> Index Scan using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.tableoid, m2_2.ctid
Index Cond: (m2_2."time" < length(version()))
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.tableoid, m2_3.ctid
Index Cond: (m2_3."time" < length(version()))
-> Index Scan using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.tableoid, m2_4.ctid
Index Cond: (m2_4."time" < length(version()))
(45 rows)
ROLLBACK;
BEGIN;
:PREFIX WITH u AS (UPDATE metrics_int4 m4 SET data = 'cte update' WHERE m4.time < length(version()) RETURNING time)
SELECT * FROM u;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
CTE Scan on u (actual rows=4 loops=1)
Output: u."time"
CTE u
-> Custom Scan (HypertableModify) (actual rows=4 loops=1)
Output: m4_1."time"
-> Update on public.metrics_int4 m4 (actual rows=4 loops=1)
Output: m4_1."time"
Update on _timescaledb_internal._hyper_2_2_chunk m4_1
Update on _timescaledb_internal._hyper_2_10_chunk m4_2
Update on _timescaledb_internal._hyper_2_18_chunk m4_3
Update on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Result (actual rows=4 loops=1)
Output: 'cte update'::text, m4.tableoid, m4.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int4 m4 (actual rows=4 loops=1)
Output: m4.tableoid, m4.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
(30 rows)
ROLLBACK;
BEGIN;
:PREFIX WITH u AS (UPDATE metrics_int4 m4 SET data = 'cte update 1' WHERE m4.time < length(version()))
UPDATE metrics_int2 m2 SET data = 'cte update 2' WHERE m2.time < length(version());
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
CTE u
-> Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_int4 m4 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_2_2_chunk m4_1
Update on _timescaledb_internal._hyper_2_10_chunk m4_2
Update on _timescaledb_internal._hyper_2_18_chunk m4_3
Update on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Result (actual rows=4 loops=1)
Output: 'cte update 1'::text, m4.tableoid, m4.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int4 m4 (actual rows=4 loops=1)
Output: m4.tableoid, m4.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
-> Update on public.metrics_int2 m2 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_1_1_chunk m2_1
Update on _timescaledb_internal._hyper_1_9_chunk m2_2
Update on _timescaledb_internal._hyper_1_17_chunk m2_3
Update on _timescaledb_internal._hyper_1_25_chunk m2_4
-> Result (actual rows=4 loops=1)
Output: 'cte update 2'::text, m2.tableoid, m2.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int2 m2 (actual rows=4 loops=1)
Output: m2.tableoid, m2.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.tableoid, m2_1.ctid
Index Cond: (m2_1."time" < length(version()))
-> Index Scan using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.tableoid, m2_2.ctid
Index Cond: (m2_2."time" < length(version()))
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.tableoid, m2_3.ctid
Index Cond: (m2_3."time" < length(version()))
-> Index Scan using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.tableoid, m2_4.ctid
Index Cond: (m2_4."time" < length(version()))
(51 rows)
ROLLBACK;
BEGIN;
:PREFIX WITH d AS (DELETE FROM metrics_int4 m4 WHERE m4.time < length(version()) RETURNING time)
UPDATE metrics_int2 m2 SET data = 'cte update' WHERE m2.time < length(version());
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
CTE d
-> Custom Scan (HypertableModify) (actual rows=4 loops=1)
Output: m4_1."time"
-> Delete on public.metrics_int4 m4 (actual rows=4 loops=1)
Output: m4_1."time"
Delete on _timescaledb_internal._hyper_2_2_chunk m4_1
Delete on _timescaledb_internal._hyper_2_10_chunk m4_2
Delete on _timescaledb_internal._hyper_2_18_chunk m4_3
Delete on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Custom Scan (ChunkAppend) on public.metrics_int4 m4 (actual rows=4 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
-> Update on public.metrics_int2 m2 (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_1_1_chunk m2_1
Update on _timescaledb_internal._hyper_1_9_chunk m2_2
Update on _timescaledb_internal._hyper_1_17_chunk m2_3
Update on _timescaledb_internal._hyper_1_25_chunk m2_4
-> Result (actual rows=4 loops=1)
Output: 'cte update'::text, m2.tableoid, m2.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int2 m2 (actual rows=4 loops=1)
Output: m2.tableoid, m2.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.tableoid, m2_1.ctid
Index Cond: (m2_1."time" < length(version()))
-> Index Scan using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.tableoid, m2_2.ctid
Index Cond: (m2_2."time" < length(version()))
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.tableoid, m2_3.ctid
Index Cond: (m2_3."time" < length(version()))
-> Index Scan using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.tableoid, m2_4.ctid
Index Cond: (m2_4."time" < length(version()))
(50 rows)
ROLLBACK;
BEGIN;
:PREFIX WITH u AS (UPDATE metrics_int4 m4 SET data = 'cte update' WHERE m4.time < length(version()) RETURNING time)
DELETE FROM metrics_int2 m2 WHERE m2.time < length(version());
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
CTE u
-> Custom Scan (HypertableModify) (actual rows=4 loops=1)
Output: m4_1."time"
-> Update on public.metrics_int4 m4 (actual rows=4 loops=1)
Output: m4_1."time"
Update on _timescaledb_internal._hyper_2_2_chunk m4_1
Update on _timescaledb_internal._hyper_2_10_chunk m4_2
Update on _timescaledb_internal._hyper_2_18_chunk m4_3
Update on _timescaledb_internal._hyper_2_26_chunk m4_4
-> Result (actual rows=4 loops=1)
Output: 'cte update'::text, m4.tableoid, m4.ctid
-> Custom Scan (ChunkAppend) on public.metrics_int4 m4 (actual rows=4 loops=1)
Output: m4.tableoid, m4.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_2_2_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_2_chunk m4_1 (actual rows=1 loops=1)
Output: m4_1.tableoid, m4_1.ctid
Index Cond: (m4_1."time" < length(version()))
-> Index Scan using _hyper_2_10_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_10_chunk m4_2 (actual rows=1 loops=1)
Output: m4_2.tableoid, m4_2.ctid
Index Cond: (m4_2."time" < length(version()))
-> Index Scan using _hyper_2_18_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_18_chunk m4_3 (actual rows=1 loops=1)
Output: m4_3.tableoid, m4_3.ctid
Index Cond: (m4_3."time" < length(version()))
-> Index Scan using _hyper_2_26_chunk_metrics_int4_time_idx on _timescaledb_internal._hyper_2_26_chunk m4_4 (actual rows=1 loops=1)
Output: m4_4.tableoid, m4_4.ctid
Index Cond: (m4_4."time" < length(version()))
-> Delete on public.metrics_int2 m2 (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_1_1_chunk m2_1
Delete on _timescaledb_internal._hyper_1_9_chunk m2_2
Delete on _timescaledb_internal._hyper_1_17_chunk m2_3
Delete on _timescaledb_internal._hyper_1_25_chunk m2_4
-> Custom Scan (ChunkAppend) on public.metrics_int2 m2 (actual rows=4 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 0
-> Index Scan using _hyper_1_1_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_1_chunk m2_1 (actual rows=1 loops=1)
Output: m2_1.tableoid, m2_1.ctid
Index Cond: (m2_1."time" < length(version()))
-> Index Scan using _hyper_1_9_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_9_chunk m2_2 (actual rows=1 loops=1)
Output: m2_2.tableoid, m2_2.ctid
Index Cond: (m2_2."time" < length(version()))
-> Index Scan using _hyper_1_17_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_17_chunk m2_3 (actual rows=1 loops=1)
Output: m2_3.tableoid, m2_3.ctid
Index Cond: (m2_3."time" < length(version()))
-> Index Scan using _hyper_1_25_chunk_metrics_int2_time_idx on _timescaledb_internal._hyper_1_25_chunk m2_4 (actual rows=1 loops=1)
Output: m2_4.tableoid, m2_4.ctid
Index Cond: (m2_4."time" < length(version()))
(50 rows)
ROLLBACK;
-- test interaction with compression
-- with chunk exclusion for compressed chunks operations that would
-- error because they hit compressed chunks before can succeed now
-- if those chunks get excluded
-- delete from uncompressed chunks with non-immutable constraints
BEGIN;
:PREFIX DELETE FROM metrics_compressed WHERE time > '2005-01-01'::text::timestamptz;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Delete on public.metrics_compressed (actual rows=0 loops=1)
Delete on _timescaledb_internal._hyper_8_33_chunk metrics_compressed
Delete on _timescaledb_internal._hyper_8_35_chunk metrics_compressed_1
Delete on _timescaledb_internal._hyper_8_36_chunk metrics_compressed_2
Delete on _timescaledb_internal._hyper_8_37_chunk metrics_compressed_3
-> Custom Scan (ChunkAppend) on public.metrics_compressed (actual rows=3 loops=1)
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 1
-> Index Scan using _hyper_8_35_chunk_metrics_compressed_time_idx on _timescaledb_internal._hyper_8_35_chunk metrics_compressed_1 (actual rows=1 loops=1)
Output: metrics_compressed_1.tableoid, metrics_compressed_1.ctid
Index Cond: (metrics_compressed_1."time" > ('2005-01-01'::cstring)::timestamp with time zone)
-> Index Scan using _hyper_8_36_chunk_metrics_compressed_time_idx on _timescaledb_internal._hyper_8_36_chunk metrics_compressed_2 (actual rows=1 loops=1)
Output: metrics_compressed_2.tableoid, metrics_compressed_2.ctid
Index Cond: (metrics_compressed_2."time" > ('2005-01-01'::cstring)::timestamp with time zone)
-> Index Scan using _hyper_8_37_chunk_metrics_compressed_time_idx on _timescaledb_internal._hyper_8_37_chunk metrics_compressed_3 (actual rows=1 loops=1)
Output: metrics_compressed_3.tableoid, metrics_compressed_3.ctid
Index Cond: (metrics_compressed_3."time" > ('2005-01-01'::cstring)::timestamp with time zone)
(19 rows)
ROLLBACK;
-- update uncompressed chunks with non-immutable constraints
BEGIN;
:PREFIX UPDATE metrics_compressed SET value = 2 * value WHERE time > '2005-01-01'::text::timestamptz;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (HypertableModify) (actual rows=0 loops=1)
-> Update on public.metrics_compressed (actual rows=0 loops=1)
Update on _timescaledb_internal._hyper_8_33_chunk metrics_compressed
Update on _timescaledb_internal._hyper_8_35_chunk metrics_compressed_1
Update on _timescaledb_internal._hyper_8_36_chunk metrics_compressed_2
Update on _timescaledb_internal._hyper_8_37_chunk metrics_compressed_3
-> Result (actual rows=3 loops=1)
Output: ('2'::double precision * metrics_compressed.value), metrics_compressed.tableoid, metrics_compressed.ctid
-> Custom Scan (ChunkAppend) on public.metrics_compressed (actual rows=3 loops=1)
Output: metrics_compressed.value, metrics_compressed.tableoid, metrics_compressed.ctid
Startup Exclusion: true
Runtime Exclusion: false
Chunks excluded during startup: 1
-> Index Scan using _hyper_8_35_chunk_metrics_compressed_time_idx on _timescaledb_internal._hyper_8_35_chunk metrics_compressed_1 (actual rows=1 loops=1)
Output: metrics_compressed_1.value, metrics_compressed_1.tableoid, metrics_compressed_1.ctid
Index Cond: (metrics_compressed_1."time" > ('2005-01-01'::cstring)::timestamp with time zone)
-> Index Scan using _hyper_8_36_chunk_metrics_compressed_time_idx on _timescaledb_internal._hyper_8_36_chunk metrics_compressed_2 (actual rows=1 loops=1)
Output: metrics_compressed_2.value, metrics_compressed_2.tableoid, metrics_compressed_2.ctid
Index Cond: (metrics_compressed_2."time" > ('2005-01-01'::cstring)::timestamp with time zone)
-> Index Scan using _hyper_8_37_chunk_metrics_compressed_time_idx on _timescaledb_internal._hyper_8_37_chunk metrics_compressed_3 (actual rows=1 loops=1)
Output: metrics_compressed_3.value, metrics_compressed_3.tableoid, metrics_compressed_3.ctid
Index Cond: (metrics_compressed_3."time" > ('2005-01-01'::cstring)::timestamp with time zone)
(22 rows)
ROLLBACK;