timescaledb icon indicating copy to clipboard operation
timescaledb copied to clipboard

[Bug]: cagg with time_bucket_ng is not using indexes

Open michael-sayapin opened this issue 1 year ago • 8 comments

What type of bug is this?

Performance issue

What subsystems and features are affected?

Continuous aggregate

What happened?

It seems that time_bucket_ng is not able to use neither partial nor direct indexes on the underlying hypertable.

Here's the original table

rc=# \d+ controller_log
                                                 Table "public.controller_log"
           Column            |           Type           | Collation | Nullable | Default | Storage | Stats target | Description 
-----------------------------+--------------------------+-----------+----------+---------+---------+--------------+-------------
 created                     | timestamp with time zone |           | not null |         | plain   |              | 
 user_value                  | double precision         |           |          |         | plain   |              | 
 real_value                  | double precision         |           |          |         | plain   |              | 
 control_group_controller_id | integer                  |           | not null |         | plain   |              | 
 point_id                    | integer                  |           | not null |         | plain   |              | 
 real_state_id               | integer                  |           |          |         | plain   |              | 
 user_state_id               | integer                  |           |          |         | plain   |              | 
Indexes:
    "controller_log_control_group_controller_id_point_id_idx" btree (control_group_controller_id, point_id)
    "controller_log_created_idx" brin (created)
    "unique_cgc_point_per_ms" UNIQUE, btree (created DESC, control_group_controller_id, point_id)
Triggers:
    ts_cagg_invalidation_trigger AFTER INSERT OR DELETE OR UPDATE ON controller_log FOR EACH ROW EXECUTE FUNCTION _timescaledb_internal.continuous_agg_invalidation_trigger('54')
    ts_insert_blocker BEFORE INSERT ON controller_log FOR EACH ROW EXECUTE FUNCTION _timescaledb_internal.insert_blocker()
Child tables: _timescaledb_internal._hyper_54_1008_chunk,
              _timescaledb_internal._hyper_54_1015_chunk,
              _timescaledb_internal._hyper_54_1024_chunk,
              ...
              _timescaledb_internal._hyper_54_972_chunk
Access method: heap

TimescaleDB version affected

2.7.2

PostgreSQL version used

13.7

What operating system did you use?

Ubuntu 20.04

What installation method did you use?

Docker, Other

What platform did you run on?

On prem/Self-hosted

Relevant log output and stack trace

No response

How can we reproduce the bug?

With:

CREATE MATERIALIZED VIEW controller_log_over_1d (
    created,
    control_group_controller_id,
    point_id,
    ...
)
WITH (timescaledb.continuous, timescaledb.materialized_only = false) AS
SELECT
    timescaledb_experimental.time_bucket_ng('1d', created, 'Asia/Shanghai') AS created,
    control_group_controller_id,
    point_id,
    ...
FROM
    controller_log
GROUP BY 1, 2, 3
WITH NO DATA
# explain select * from controller_log_over_1d where created > '2022-07-26';
                                                                                                                                                           QUERY PLAN                                                                                                                                                            
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 GroupAggregate  (cost=42193695.57..51094694.67 rows=8000000 width=128)
   Group Key: (timescaledb_experimental.time_bucket_ng('1 day'::interval, controller_log.created, 'Asia/Shanghai'::text)), controller_log.control_group_controller_id, controller_log.point_id
   ->  Sort  (cost=42193695.57..42623745.52 rows=172019982 width=48)
         Sort Key: (timescaledb_experimental.time_bucket_ng('1 day'::interval, controller_log.created, 'Asia/Shanghai'::text)), controller_log.control_group_controller_id, controller_log.point_id
         ->  Custom Scan (ChunkAppend) on controller_log  (cost=0.00..15563696.69 rows=172019982 width=48)
               Chunks excluded during startup: 0
               ->  Seq Scan on _hyper_54_594_chunk  (cost=0.00..498.77 rows=5641 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
               ->  Seq Scan on _hyper_54_595_chunk  (cost=0.00..12199.33 rows=140109 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
               ->  Seq Scan on _hyper_54_596_chunk  (cost=0.00..2.02 rows=1 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
               ->  Seq Scan on _hyper_54_597_chunk  (cost=0.00..2.02 rows=1 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
               ->  Index Scan using _hyper_54_598_chunk_unique_cgc_point_per_ms on _hyper_54_598_chunk  (cost=0.13..2.35 rows=1 width=40)
                     Index Cond: (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone))
                     Filter: (timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone)
               ->  Seq Scan on _hyper_54_599_chunk  (cost=0.00..2.02 rows=1 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
               ->  Seq Scan on _hyper_54_605_chunk  (cost=0.00..44580.32 rows=512701 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
               ->  Seq Scan on _hyper_54_615_chunk  (cost=0.00..55081.89 rows=633598 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
               ...
               ...
               ...
               ->  Seq Scan on _hyper_54_1934_chunk  (cost=0.00..32150.16 rows=362299 width=40)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone)))
(459 rows)

With:

CREATE MATERIALIZED VIEW controller_log_over_1d (
    created,
    control_group_controller_id,
    point_id,
    ...
)
WITH (timescaledb.continuous, timescaledb.materialized_only = false) AS
SELECT
    time_bucket('1d', created) AS created,
    control_group_controller_id,
    point_id,
    ...
FROM
    controller_log
GROUP BY 1, 2, 3
WITH NO DATA
# explain select * from controller_log_over_1d where created > '2022-07-26';
                                                                                                                                                                   QUERY PLAN                                                                                                                                        
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 GroupAggregate  (cost=71461.37..91545.26 rows=37365 width=128)
   Group Key: (time_bucket('1 day'::interval, controller_log.created)), controller_log.control_group_controller_id, controller_log.point_id
   ->  Sort  (cost=71461.37..72395.51 rows=373654 width=48)
         Sort Key: (time_bucket('1 day'::interval, controller_log.created)), controller_log.control_group_controller_id, controller_log.point_id
         ->  Custom Scan (ChunkAppend) on controller_log  (cost=0.00..36877.19 rows=373654 width=48)
               Chunks excluded during startup: 0
               ->  Seq Scan on _hyper_54_1934_chunk  (cost=0.00..35943.05 rows=373654 width=40)
                     Filter: ((created > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, created) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(235)), '-infinity'::timestamp with time zone)))
(8 rows)

michael-sayapin avatar Jul 26 '22 12:07 michael-sayapin

Perhaps it's worth noting that chunk size of controller_log is 1d.

michael-sayapin avatar Jul 26 '22 12:07 michael-sayapin

@michael-sayapin Thank you for taking the time to report this, but we would need more information in order to proceed. Firstly, a complete set of steps to reproduce the issue independently. Also, provide any proof where you saw time_bucket to use index for the same scenario, or your reasoning why it should be using in the scenario. We are looking forward

RafiaSabih avatar Jul 27 '22 09:07 RafiaSabih

Sure, I can prepare a fuller example, but you can see from the listings above, when the view is created with timescaledb_experimental.time_bucket_ng explain shows Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, created, 'Asia/Shanghai'::text) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(234)), '-infinity'::timestamp with time zone))), and when the view is created with time_bucket, the explain is showing Filter: ((created > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, created) > '2022-07-26 00:00:00+00'::timestamp with time zone) AND (created >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(235)), '-infinity'::timestamp with time zone))), which will use the index of created plus will exclude chunks based on created (time_bucket_ng scans all chunks).

michael-sayapin avatar Jul 27 '22 14:07 michael-sayapin

# CREATE TABLE test(t TIMESTAMPTZ, value INTEGER);
CREATE TABLE

# SELECT create_hypertable('test', 't', chunk_time_interval => INTERVAL '1h');
create_hypertable
--------------------
(30,public,test,t)
(1 row)

# INSERT INTO test SELECT t, floor(sqrt(random() * 400)) FROM generate_series(now() - interval '7d', now(), interval '15s') d(t);
INSERT 0 40321

# SELECT COUNT(*) FROM show_chunks('test');
count
-------
169
(1 row)

# \d+ test
                                            Table "public.test"
 Column |           Type           | Collation | Nullable | Default | Storage | Stats target | Description
--------+--------------------------+-----------+----------+---------+---------+--------------+-------------
 t      | timestamp with time zone |           | not null |         | plain   |              |
 value  | integer                  |           |          |         | plain   |              |
Indexes:
    "test_t_idx" btree (t DESC)

# CREATE MATERIALIZED VIEW test_over_1d_using_time_bucket_ng (t, value)
# WITH (timescaledb.continuous, timescaledb.materialized_only = false) AS
# SELECT timescaledb_experimental.time_bucket_ng('1d', t, 'Asia/Shanghai') AS t, AVG(value)
# FROM test
# GROUP BY 1
# WITH NO DATA;
CREATE MATERIALIZED VIEW

# CREATE MATERIALIZED VIEW test_over_1d_using_time_bucket (t, value)
# WITH (timescaledb.continuous, timescaledb.materialized_only = false) AS
# SELECT time_bucket('1d', t) AS t, AVG(value)
# FROM test
# GROUP BY 1
# WITH NO DATA;
CREATE MATERIALIZED VIEW

# EXPLAIN ANALYZE SELECT * FROM test_over_1d_using_time_bucket_ng WHERE t > '2022-07-30';
                                                                                                                                                     QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Append  (cost=0.00..1350.05 rows=201 width=40) (actual time=15.982..16.008 rows=0 loops=1)
   ->  HashAggregate  (cost=0.00..0.01 rows=1 width=40) (actual time=0.002..0.003 rows=0 loops=1)
         Group Key: t
         Batches: 1  Memory Usage: 24kB
         ->  Result  (cost=0.00..0.00 rows=0 width=0) (actual time=0.001..0.001 rows=0 loops=1)
               One-Time Filter: false
   ->  HashAggregate  (cost=1344.02..1347.02 rows=200 width=40) (actual time=15.978..16.003 rows=0 loops=1)
         Group Key: timescaledb_experimental.time_bucket_ng('1 day'::interval, test.t, 'Asia/Shanghai'::text)
         Batches: 1  Memory Usage: 40kB
         ->  Custom Scan (ChunkAppend) on test  (cost=0.00..1276.82 rows=13440 width=12) (actual time=15.976..16.001 rows=0 loops=1)
               Chunks excluded during startup: 0
               ->  Seq Scan on _hyper_30_1_chunk  (cost=0.00..3.83 rows=42 width=12) (actual time=0.174..0.174 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 126
               ->  Seq Scan on _hyper_30_2_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_3_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_4_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_5_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_6_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_7_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_8_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.110..0.110 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_9_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_10_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_11_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_12_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_13_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_14_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_15_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_16_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_17_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_18_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_19_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_20_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_21_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_22_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_23_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_24_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_25_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.100..0.100 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_26_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_27_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_28_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_29_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_30_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_31_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_32_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_33_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_34_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_35_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_36_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_37_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.098..0.098 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_38_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_39_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.098..0.098 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_40_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_41_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_42_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_43_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.099..0.099 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_44_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_45_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_46_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.098..0.098 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_47_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_48_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_49_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_50_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_51_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_52_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_53_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_54_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_55_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_56_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_57_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_58_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_59_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_60_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_61_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_62_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_63_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_64_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_65_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_66_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_67_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_68_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_69_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_70_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_71_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_72_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_73_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_74_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_75_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_76_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_77_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_78_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.099..0.099 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_79_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.098..0.098 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_80_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_81_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_82_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_83_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_84_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.098 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_85_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_86_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_87_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_88_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_89_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_90_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_91_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_92_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_93_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_94_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_95_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_96_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_97_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_98_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_99_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_100_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_101_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_102_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_103_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_104_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_105_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_106_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_107_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_108_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_109_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_110_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_111_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_112_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_113_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_114_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.105..0.105 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_115_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_116_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_117_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_118_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_119_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_120_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_121_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_122_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_123_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_124_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_125_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_126_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_127_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_128_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_129_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_130_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_131_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_132_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_133_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_134_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_135_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_136_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_137_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_138_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_139_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_140_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.091..0.091 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_141_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_142_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_143_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_144_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.101..0.101 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_145_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_146_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_147_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_148_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_149_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_150_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_151_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.097..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_152_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_153_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.096 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_154_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_155_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.094 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_156_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_157_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_158_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_159_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.094..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_160_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_161_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_162_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.096..0.097 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_163_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.095..0.095 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_164_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_165_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.091..0.091 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_166_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_167_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.093..0.093 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_168_chunk  (cost=0.00..7.40 rows=80 width=12) (actual time=0.092..0.092 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_169_chunk  (cost=0.00..3.59 rows=38 width=12) (actual time=0.044..0.044 rows=0 loops=1)
                     Filter: ((timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(31)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 115
 Planning Time: 19.660 ms
 Execution Time: 17.672 ms
(520 rows)


# EXPLAIN ANALYZE SELECT * FROM test_over_1d_using_time_bucket WHERE t > '2022-07-30';
                                                                                                                                                          QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Append  (cost=0.00..61.79 rows=201 width=40) (actual time=0.355..0.360 rows=0 loops=1)
   ->  HashAggregate  (cost=0.00..0.01 rows=1 width=40) (actual time=0.005..0.006 rows=0 loops=1)
         Group Key: t
         Batches: 1  Memory Usage: 24kB
         ->  Result  (cost=0.00..0.00 rows=0 width=0) (actual time=0.002..0.002 rows=0 loops=1)
               One-Time Filter: false
   ->  HashAggregate  (cost=55.76..58.76 rows=200 width=40) (actual time=0.349..0.351 rows=0 loops=1)
         Group Key: time_bucket('1 day'::interval, test.t)
         Batches: 1  Memory Usage: 40kB
         ->  Custom Scan (ChunkAppend) on test  (cost=0.00..53.17 rows=518 width=12) (actual time=0.346..0.349 rows=0 loops=1)
               Chunks excluded during startup: 0
               ->  Seq Scan on _hyper_30_164_chunk  (cost=0.00..8.00 rows=80 width=12) (actual time=0.062..0.062 rows=0 loops=1)
                     Filter: ((t > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, t) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(32)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_166_chunk  (cost=0.00..8.00 rows=80 width=12) (actual time=0.055..0.055 rows=0 loops=1)
                     Filter: ((t > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, t) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(32)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_163_chunk  (cost=0.00..8.00 rows=80 width=12) (actual time=0.050..0.050 rows=0 loops=1)
                     Filter: ((t > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, t) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(32)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_165_chunk  (cost=0.00..8.00 rows=80 width=12) (actual time=0.050..0.050 rows=0 loops=1)
                     Filter: ((t > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, t) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(32)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_168_chunk  (cost=0.00..8.00 rows=80 width=12) (actual time=0.050..0.050 rows=0 loops=1)
                     Filter: ((t > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, t) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(32)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_167_chunk  (cost=0.00..8.00 rows=80 width=12) (actual time=0.053..0.053 rows=0 loops=1)
                     Filter: ((t > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, t) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(32)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 240
               ->  Seq Scan on _hyper_30_169_chunk  (cost=0.00..3.88 rows=38 width=12) (actual time=0.024..0.024 rows=0 loops=1)
                     Filter: ((t > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (time_bucket('1 day'::interval, t) > '2022-07-30 00:00:00+00'::timestamp with time zone) AND (t >= COALESCE(_timescaledb_internal.to_timestamp(_timescaledb_internal.cagg_watermark(32)), '-infinity'::timestamp with time zone)))
                     Rows Removed by Filter: 115
 Planning Time: 3.528 ms
 Execution Time: 0.812 ms
(34 rows)

michael-sayapin avatar Jul 30 '22 06:07 michael-sayapin

Even with an index on timescaledb_experimental.time_bucket_ng('1 day'::interval, t, 'Asia/Shanghai'::text) ng-based cagg is still scanning all the chunks @RafiaSabih

michael-sayapin avatar Jul 30 '22 06:07 michael-sayapin

Any ideas?

I think it's not cagg per se, but time_bucket_ng with TZ set is not excluding chunks from scanning. With WITH NO DATA cagg and materialized_only => false it just manifests a normal query. You can reproduce it without a cagg, just selecting from the hypertable.

michael-sayapin avatar Aug 05 '22 08:08 michael-sayapin

@RafiaSabih any ideas? It's totally blocking us from using time_bucket_ng.

michael-sayapin avatar Aug 22 '22 09:08 michael-sayapin

It appears the optimization is missing in the real-time aggregation portion. You can verify this by testing with timescaledb.materialized_only = true.

mfundul avatar Aug 22 '22 15:08 mfundul

@mirandaauhl the time_bucket_ng function is not supported for time bucket chunk exclusion.

And now the time_bucket_ng is DEPRECATED so I strong recommend you to upgrade to 2.8.1 and use time_bucket instead because since 2.8.0 time_bucket function supports bucketing by month, year and timezone.

fabriziomello avatar Oct 18 '22 22:10 fabriziomello

time_bucket in 2.8+ is also affected by this.

michael-sayapin avatar Nov 15 '22 03:11 michael-sayapin

Any news on this one @mfundul @RafiaSabih ?

michael-sayapin avatar Dec 08 '22 08:12 michael-sayapin

@michael-sayapin there are an ongoing PR to improve it - https://github.com/timescale/timescaledb/pull/4854

fabriziomello avatar Jan 03 '23 19:01 fabriziomello