timescale / timescaledb

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.
https://www.timescale.com/
Other
16.86k stars 854 forks source link

[Bug]: get_baserel_parampathinfo assertion failure #3968

Closed svenklemm closed 2 years ago

svenklemm commented 2 years ago

TimescaleDB version affected

master (0dd4329)

PostgreSQL version used

14.1

What operating system did you use?

Archlinux 2021.12.01 x64

What installation method did you use?

Source

What platform did you run on?

On prem/Self-hosted

Relevant log output and stack trace

#0  0x00007fd3beda9d22 in raise () from /usr/lib/libc.so.6
#1  0x00007fd3bed93862 in abort () from /usr/lib/libc.so.6
#2  0x0000555a050127a5 in ExceptionalCondition (conditionName=0x555a051bdc18 "bms_is_subset(baserel->lateral_relids, required_outer)", errorType=0x555a051bd866 "FailedAssertion", fileName=0x555a051bd8ff "relnode.c", lineNumber=1304)
    at assert.c:69
#3  0x0000555a04d4bded in get_baserel_parampathinfo (root=0x555a06c8eda0, baserel=0x555a070f09a8, required_outer=0x0) at relnode.c:1304
#4  0x0000555a04d3cdae in create_foreignscan_path (root=0x555a06c8eda0, rel=0x555a070f09a8, target=0x0, rows=1258291, startup_cost=100, total_cost=130844.10000000001, pathkeys=0x0, required_outer=0x0, fdw_outerpath=0x0, fdw_private=0x0)
    at pathnode.c:2223
#5  0x00007fd3b584bd3c in get_foreign_paths (root=0x555a06c8eda0, baserel=0x555a070f09a8, foreigntableid=11620091) at /home/sven/projects/timescaledb/tsl/src/fdw/fdw.c:111
#6  0x00007fd3b594f341 in set_foreign_pathlist (root=0x555a06c8eda0, rel=0x555a070f09a8, rte=0x555a070ea8e0) at /home/sven/projects/timescaledb/src/import/allpaths.c:45
#7  0x00007fd3b594f72b in set_rel_pathlist (root=0x555a06c8eda0, rel=0x555a070f09a8, rti=7, rte=0x555a070ea8e0) at /home/sven/projects/timescaledb/src/import/allpaths.c:218
#8  0x00007fd3b594f600 in ts_set_append_rel_pathlist (root=0x555a06c8eda0, rel=0x555a070bc740, rti=6, rte=0x555a07271aa8) at /home/sven/projects/timescaledb/src/import/allpaths.c:176
#9  0x00007fd3b5926d87 in reenable_inheritance (root=0x555a06c8eda0, rel=0x555a070bc740, rti=6, rte=0x555a07271aa8) at /home/sven/projects/timescaledb/src/planner.c:757
#10 0x00007fd3b592729d in timescaledb_set_rel_pathlist (root=0x555a06c8eda0, rel=0x555a070bc740, rti=6, rte=0x555a07271aa8) at /home/sven/projects/timescaledb/src/planner.c:883
#11 0x0000555a04cc5d14 in set_rel_pathlist (root=0x555a06c8eda0, rel=0x555a070bc740, rti=6, rte=0x555a07271aa8) at allpaths.c:541
#12 0x0000555a04cc5879 in set_base_rel_pathlists (root=0x555a06c8eda0) at allpaths.c:353
#13 0x0000555a04cc558a in make_one_rel (root=0x555a06c8eda0, joinlist=0x555a070bd710) at allpaths.c:223
#14 0x0000555a04d05019 in query_planner (root=0x555a06c8eda0, qp_callback=0x555a04d0ad52 <standard_qp_callback>, qp_extra=0x7ffe930650e0) at planmain.c:276
#15 0x0000555a04d07811 in grouping_planner (root=0x555a06c8eda0, tuple_fraction=63) at planner.c:1442
#16 0x0000555a04d06eba in subquery_planner (glob=0x555a06f28350, parse=0x555a06ed5e00, parent_root=0x0, hasRecursion=false, tuple_fraction=0) at planner.c:1019
#17 0x0000555a04d05721 in standard_planner (parse=0x555a06ed5e00,
    query_string=0x555a073e5f10 "select  \n  subq_2.c4 as c0, \n  pg_catalog.pg_client_encoding() as c1, \n  subq_2.c4 as c2, \n  subq_4.c1 as c3, \n  subq_4.c0 as c4, \n  subq_2.c4 as c5, \n  subq_2.c0 as c6, \n  subq_4.c0 as c7, \n  pg_catalog.uuid_gt(\n    cast(pg_catalog.gen_random_uuid() as uuid),\n    cast(cast(null as uuid) as uuid)) as c8, \n  subq_2.c4 as c9, \n  subq_2.c6 as c10, \n  subq_4.c1 as c11, \n  (select device from public.dist_chunk_copy limit 1 offset 2)\n     as c12, \n  subq_2.c6 as c13, \n  subq_4.c1 as c14, \n  cast(nullif(subq_4.c2,\n    subq_4.c2) as int4) as c15, \n  subq_4.c0 as c16, \n  subq_2.c0 as c17, \n  (select v0 from public.metrics_dist limit 1 offset 1)\n     as c18, \n  \n    pg_catalog.bit_and(\n      cast((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 3)\n         as int2)) over (partition by subq_4.c2 order by subq_4.c2) as c19, \n  subq_4.c1 as c20, \n  subq_2.c2 as c21, \n  pg_catalog.pg_control_checkpoint() as c22, \n  (select pg_catalog.stddev_pop(val) from public.distinct_on_hypertable)\n     as c23, \n  cast(coalesce(subq_2.c4,\n    subq_2.c4) as timestamptz) as c24, \n  subq_2.c1 as c25, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(null as int2) as int2)) over (partition by subq_4.c0,subq_4.c2 order by subq_4.c1) as c26, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(nullif(case when cast(null as macaddr) < cast(null as macaddr) then case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             else case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             end\n          ,\n        pg_catalog.float4(\n          cast(case when cast(null as uuid) < cast(null as uuid) then cast(null as jsonb) else cast(null as jsonb) end\n             as jsonb))) as float4) as float4)) over (partition by subq_4.c1 order by subq_2.c0) as c27, \n  subq_4.c2 as c28, \n  subq_4.c1 as c29, \n  subq_2.c1 as c30\nfrom \n  (select  \n        subq_1.c2 as c0, \n        public.timescaledb_post_restore() as c1, \n        subq_1.c2 as c2, \n        subq_1.c1 as c3, \n        (select time from public.conditions_dist1 limit 1 offset 6)\n           as c4, \n        subq_1.c1 as c5, \n        pg_catalog.getpgusername() as c6\n      from \n        (select  \n              subq_0.c6 as c0, \n              subq_0.c7 as c1, \n              subq_0.c8 as c2\n            from \n              public.sensors as sample_0 tablesample system (4.5) ,\n              lateral (select  \n                    sample_0.sensor_id as c0, \n                    ref_0.time as c1, \n                    sample_0.name as c2, \n                    ref_0.device_id as c3, \n                    sample_0.name as c4, \n                    ref_0.v1 as c5, \n                    sample_0.sensor_id as c6, \n                    sample_0.sensor_id as c7, \n                    sample_0.sensor_id as c8, \n                    ref_0.v1 as c9, \n                    ref_0.device_id as c10, \n                    sample_0.sensor_id as c11\n                  from \n                    public.metrics_compressed as ref_0\n                  where true\n                  limit 148) as subq_0\n            where subq_0.c0 is NULL\n            limit 157) as subq_1\n      where subq_1.c0 is not NULL\n      limit 170) as subq_2,\n  lateral (select  \n        subq_3.c6 as c0, \n        (select id from public.distinct_on_hypertable limit 1 offset 3)\n           as c1, \n        subq_3.c1 as c2\n      from \n        (select  \n                (select sensor_id from public.sensors limit 1 offset 4)\n                   as c0, \n                ref_1.time as c1, \n                subq_2.c6 as c2, \n                subq_2.c1 as c3, \n                ref_1.value as c4, \n                subq_2.c0 as c5, \n                subq_2.c2 as c6, \n                ref_1.device_id as c7, \n                subq_2.c2 as c8, \n                ref_1.time as c9, \n                ref_1.device_id as c10, \n                19 as c11, \n                (select device_id from public.metrics limit 1 offset 3)\n                   as c12, \n                subq_2.c4 as c13\n              from \n                public.metrics_int_dist as ref_1\n              where true) as subq_3\n          right join public.devices as sample_1 tablesample bernoulli (1.3) \n          on ((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 5)\n                 <= (select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 6)\n                )\n      where sample_1.name < sample_1.name) as subq_4\nwhere 82 is NULL\nlimit 63", cursorOptions=2048, boundParams=0x0) at planner.c:400
#18 0x00007fd3b5926204 in timescaledb_planner (parse=0x555a06ed5e00,
    query_string=0x555a073e5f10 "select  \n  subq_2.c4 as c0, \n  pg_catalog.pg_client_encoding() as c1, \n  subq_2.c4 as c2, \n  subq_4.c1 as c3, \n  subq_4.c0 as c4, \n  subq_2.c4 as c5, \n  subq_2.c0 as c6, \n  subq_4.c0 as c7, \n  pg_catalog.uuid_gt(\n    cast(pg_catalog.gen_random_uuid() as uuid),\n    cast(cast(null as uuid) as uuid)) as c8, \n  subq_2.c4 as c9, \n  subq_2.c6 as c10, \n  subq_4.c1 as c11, \n  (select device from public.dist_chunk_copy limit 1 offset 2)\n     as c12, \n  subq_2.c6 as c13, \n  subq_4.c1 as c14, \n  cast(nullif(subq_4.c2,\n    subq_4.c2) as int4) as c15, \n  subq_4.c0 as c16, \n  subq_2.c0 as c17, \n  (select v0 from public.metrics_dist limit 1 offset 1)\n     as c18, \n  \n    pg_catalog.bit_and(\n      cast((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 3)\n         as int2)) over (partition by subq_4.c2 order by subq_4.c2) as c19, \n  subq_4.c1 as c20, \n  subq_2.c2 as c21, \n  pg_catalog.pg_control_checkpoint() as c22, \n  (select pg_catalog.stddev_pop(val) from public.distinct_on_hypertable)\n     as c23, \n  cast(coalesce(subq_2.c4,\n    subq_2.c4) as timestamptz) as c24, \n  subq_2.c1 as c25, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(null as int2) as int2)) over (partition by subq_4.c0,subq_4.c2 order by subq_4.c1) as c26, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(nullif(case when cast(null as macaddr) < cast(null as macaddr) then case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             else case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             end\n          ,\n        pg_catalog.float4(\n          cast(case when cast(null as uuid) < cast(null as uuid) then cast(null as jsonb) else cast(null as jsonb) end\n             as jsonb))) as float4) as float4)) over (partition by subq_4.c1 order by subq_2.c0) as c27, \n  subq_4.c2 as c28, \n  subq_4.c1 as c29, \n  subq_2.c1 as c30\nfrom \n  (select  \n        subq_1.c2 as c0, \n        public.timescaledb_post_restore() as c1, \n        subq_1.c2 as c2, \n        subq_1.c1 as c3, \n        (select time from public.conditions_dist1 limit 1 offset 6)\n           as c4, \n        subq_1.c1 as c5, \n        pg_catalog.getpgusername() as c6\n      from \n        (select  \n              subq_0.c6 as c0, \n              subq_0.c7 as c1, \n              subq_0.c8 as c2\n            from \n              public.sensors as sample_0 tablesample system (4.5) ,\n              lateral (select  \n                    sample_0.sensor_id as c0, \n                    ref_0.time as c1, \n                    sample_0.name as c2, \n                    ref_0.device_id as c3, \n                    sample_0.name as c4, \n                    ref_0.v1 as c5, \n                    sample_0.sensor_id as c6, \n                    sample_0.sensor_id as c7, \n                    sample_0.sensor_id as c8, \n                    ref_0.v1 as c9, \n                    ref_0.device_id as c10, \n                    sample_0.sensor_id as c11\n                  from \n                    public.metrics_compressed as ref_0\n                  where true\n                  limit 148) as subq_0\n            where subq_0.c0 is NULL\n            limit 157) as subq_1\n      where subq_1.c0 is not NULL\n      limit 170) as subq_2,\n  lateral (select  \n        subq_3.c6 as c0, \n        (select id from public.distinct_on_hypertable limit 1 offset 3)\n           as c1, \n        subq_3.c1 as c2\n      from \n        (select  \n                (select sensor_id from public.sensors limit 1 offset 4)\n                   as c0, \n                ref_1.time as c1, \n                subq_2.c6 as c2, \n                subq_2.c1 as c3, \n                ref_1.value as c4, \n                subq_2.c0 as c5, \n                subq_2.c2 as c6, \n                ref_1.device_id as c7, \n                subq_2.c2 as c8, \n                ref_1.time as c9, \n                ref_1.device_id as c10, \n                19 as c11, \n                (select device_id from public.metrics limit 1 offset 3)\n                   as c12, \n                subq_2.c4 as c13\n              from \n                public.metrics_int_dist as ref_1\n              where true) as subq_3\n          right join public.devices as sample_1 tablesample bernoulli (1.3) \n          on ((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 5)\n                 <= (select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 6)\n                )\n      where sample_1.name < sample_1.name) as subq_4\nwhere 82 is NULL\nlimit 63", cursor_opts=2048, bound_params=0x0) at /home/sven/projects/timescaledb/src/planner.c:416
#19 0x0000555a04d0544e in planner (parse=0x555a06ed5e00,
    query_string=0x555a073e5f10 "select  \n  subq_2.c4 as c0, \n  pg_catalog.pg_client_encoding() as c1, \n  subq_2.c4 as c2, \n  subq_4.c1 as c3, \n  subq_4.c0 as c4, \n  subq_2.c4 as c5, \n  subq_2.c0 as c6, \n  subq_4.c0 as c7, \n  pg_catalog.uuid_gt(\n    cast(pg_catalog.gen_random_uuid() as uuid),\n    cast(cast(null as uuid) as uuid)) as c8, \n  subq_2.c4 as c9, \n  subq_2.c6 as c10, \n  subq_4.c1 as c11, \n  (select device from public.dist_chunk_copy limit 1 offset 2)\n     as c12, \n  subq_2.c6 as c13, \n  subq_4.c1 as c14, \n  cast(nullif(subq_4.c2,\n    subq_4.c2) as int4) as c15, \n  subq_4.c0 as c16, \n  subq_2.c0 as c17, \n  (select v0 from public.metrics_dist limit 1 offset 1)\n     as c18, \n  \n    pg_catalog.bit_and(\n      cast((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 3)\n         as int2)) over (partition by subq_4.c2 order by subq_4.c2) as c19, \n  subq_4.c1 as c20, \n  subq_2.c2 as c21, \n  pg_catalog.pg_control_checkpoint() as c22, \n  (select pg_catalog.stddev_pop(val) from public.distinct_on_hypertable)\n     as c23, \n  cast(coalesce(subq_2.c4,\n    subq_2.c4) as timestamptz) as c24, \n  subq_2.c1 as c25, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(null as int2) as int2)) over (partition by subq_4.c0,subq_4.c2 order by subq_4.c1) as c26, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(nullif(case when cast(null as macaddr) < cast(null as macaddr) then case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             else case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             end\n          ,\n        pg_catalog.float4(\n          cast(case when cast(null as uuid) < cast(null as uuid) then cast(null as jsonb) else cast(null as jsonb) end\n             as jsonb))) as float4) as float4)) over (partition by subq_4.c1 order by subq_2.c0) as c27, \n  subq_4.c2 as c28, \n  subq_4.c1 as c29, \n  subq_2.c1 as c30\nfrom \n  (select  \n        subq_1.c2 as c0, \n        public.timescaledb_post_restore() as c1, \n        subq_1.c2 as c2, \n        subq_1.c1 as c3, \n        (select time from public.conditions_dist1 limit 1 offset 6)\n           as c4, \n        subq_1.c1 as c5, \n        pg_catalog.getpgusername() as c6\n      from \n        (select  \n              subq_0.c6 as c0, \n              subq_0.c7 as c1, \n              subq_0.c8 as c2\n            from \n              public.sensors as sample_0 tablesample system (4.5) ,\n              lateral (select  \n                    sample_0.sensor_id as c0, \n                    ref_0.time as c1, \n                    sample_0.name as c2, \n                    ref_0.device_id as c3, \n                    sample_0.name as c4, \n
          ref_0.v1 as c5, \n                    sample_0.sensor_id as c6, \n                    sample_0.sensor_id as c7, \n                    sample_0.sensor_id as c8, \n                    ref_0.v1 as c9, \n                    ref_0.device_id as c10, \n                    sample_0.sensor_id as c11\n                  from \n                    public.metrics_compressed as ref_0\n                  where true\n                  limit 148) as subq_0\n            where subq_0.c0 is NULL\n            limit 157) as subq_1\n      where subq_1.c0 is not NULL\n      limit 170) as subq_2,\n  lateral (select  \n        subq_3.c6 as c0, \n        (select id from public.distinct_on_hypertable limit 1 offset 3)\n           as c1, \n        subq_3.c1 as c2\n      from \n        (select  \n                (select sensor_id from public.sensors limit 1 offset 4)\n                   as c0, \n                ref_1.time as c1, \n                subq_2.c6 as c2, \n                subq_2.c1 as c3, \n                ref_1.value as c4, \n                subq_2.c0 as c5, \n                subq_2.c2 as c6, \n                ref_1.device_id as c7, \n                subq_2.c2 as c8, \n                ref_1.time as c9, \n                ref_1.device_id as c10, \n                19 as c11, \n                (select device_id from public.metrics limit 1 offset 3)\n                   as c12, \n                subq_2.c4 as c13\n              from \n                public.metrics_int_dist as ref_1\n              where true) as subq_3\n          right join public.devices as sample_1 tablesample bernoulli (1.3) \n          on ((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 5)\n                 <= (select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 6)\n                )\n      where sample_1.name < sample_1.name) as subq_4\nwhere 82 is NULL\nlimit 63", cursorOptions=2048, boundParams=0x0) at planner.c:269
#20 0x0000555a04e541bb in pg_plan_query (querytree=0x555a06ed5e00,
    query_string=0x555a073e5f10 "select  \n  subq_2.c4 as c0, \n  pg_catalog.pg_client_encoding() as c1, \n  subq_2.c4 as c2, \n  subq_4.c1 as c3, \n  subq_4.c0 as c4, \n  subq_2.c4 as c5, \n  subq_2.c0 as c6, \n  subq_4.c0 as c7, \n  pg_catalog.uuid_gt(\n    cast(pg_catalog.gen_random_uuid() as uuid),\n    cast(cast(null as uuid) as uuid)) as c8, \n  subq_2.c4 as c9, \n  subq_2.c6 as c10, \n  subq_4.c1 as c11, \n  (select device from public.dist_chunk_copy limit 1 offset 2)\n     as c12, \n  subq_2.c6 as c13, \n  subq_4.c1 as c14, \n  cast(nullif(subq_4.c2,\n    subq_4.c2) as int4) as c15, \n  subq_4.c0 as c16, \n  subq_2.c0 as c17, \n  (select v0 from public.metrics_dist limit 1 offset 1)\n     as c18, \n  \n    pg_catalog.bit_and(\n      cast((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 3)\n         as int2)) over (partition by subq_4.c2 order by subq_4.c2) as c19, \n  subq_4.c1 as c20, \n  subq_2.c2 as c21, \n  pg_catalog.pg_control_checkpoint() as c22, \n  (select pg_catalog.stddev_pop(val) from public.distinct_on_hypertable)\n     as c23, \n  cast(coalesce(subq_2.c4,\n    subq_2.c4) as timestamptz) as c24, \n  subq_2.c1 as c25, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(null as int2) as int2)) over (partition by subq_4.c0,subq_4.c2 order by subq_4.c1) as c26, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(nullif(case when cast(null as macaddr) < cast(null as macaddr) then case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             else case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             end\n          ,\n        pg_catalog.float4(\n          cast(case when cast(null as uuid) < cast(null as uuid) then cast(null as jsonb) else cast(null as jsonb) end\n             as jsonb))) as float4) as float4)) over (partition by subq_4.c1 order by subq_2.c0) as c27, \n  subq_4.c2 as c28, \n  subq_4.c1 as c29, \n  subq_2.c1 as c30\nfrom \n  (select  \n        subq_1.c2 as c0, \n        public.timescaledb_post_restore() as c1, \n        subq_1.c2 as c2, \n        subq_1.c1 as c3, \n        (select time from public.conditions_dist1 limit 1 offset 6)\n           as c4, \n        subq_1.c1 as c5, \n        pg_catalog.getpgusername() as c6\n      from \n        (select  \n              subq_0.c6 as c0, \n              subq_0.c7 as c1, \n              subq_0.c8 as c2\n            from \n              public.sensors as sample_0 tablesample system (4.5) ,\n              lateral (select  \n                    sample_0.sensor_id as c0, \n                    ref_0.time as c1, \n                    sample_0.name as c2, \n                    ref_0.device_id as c3, \n                    sample_0.name as c4, \n                    ref_0.v1 as c5, \n                    sample_0.sensor_id as c6, \n                    sample_0.sensor_id as c7, \n                    sample_0.sensor_id as c8, \n                    ref_0.v1 as c9, \n                    ref_0.device_id as c10, \n                    sample_0.sensor_id as c11\n                  from \n                    public.metrics_compressed as ref_0\n                  where true\n                  limit 148) as subq_0\n            where subq_0.c0 is NULL\n            limit 157) as subq_1\n      where subq_1.c0 is not NULL\n      limit 170) as subq_2,\n  lateral (select  \n        subq_3.c6 as c0, \n        (select id from public.distinct_on_hypertable limit 1 offset 3)\n           as c1, \n        subq_3.c1 as c2\n      from \n        (select  \n                (select sensor_id from public.sensors limit 1 offset 4)\n                   as c0, \n                ref_1.time as c1, \n                subq_2.c6 as c2, \n                subq_2.c1 as c3, \n                ref_1.value as c4, \n                subq_2.c0 as c5, \n                subq_2.c2 as c6, \n                ref_1.device_id as c7, \n                subq_2.c2 as c8, \n                ref_1.time as c9, \n                ref_1.device_id as c10, \n                19 as c11, \n                (select device_id from public.metrics limit 1 offset 3)\n                   as c12, \n                subq_2.c4 as c13\n              from \n                public.metrics_int_dist as ref_1\n              where true) as subq_3\n          right join public.devices as sample_1 tablesample bernoulli (1.3) \n          on ((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 5)\n                 <= (select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 6)\n                )\n      where sample_1.name < sample_1.name) as subq_4\nwhere 82 is NULL\nlimit 63", cursorOptions=2048, boundParams=0x0) at postgres.c:847
#21 0x0000555a04e5430b in pg_plan_queries (querytrees=0x555a06f212a0,
    query_string=0x555a073e5f10 "select  \n  subq_2.c4 as c0, \n  pg_catalog.pg_client_encoding() as c1, \n  subq_2.c4 as c2, \n  subq_4.c1 as c3, \n  subq_4.c0 as c4, \n  subq_2.c4 as c5, \n  subq_2.c0 as c6, \n  subq_4.c0 as c7, \n  pg_catalog.uuid_gt(\n    cast(pg_catalog.gen_random_uuid() as uuid),\n    cast(cast(null as uuid) as uuid)) as c8, \n  subq_2.c4 as c9, \n  subq_2.c6 as c10, \n  subq_4.c1 as c11, \n  (select device from public.dist_chunk_copy limit 1 offset 2)\n     as c12, \n  subq_2.c6 as c13, \n  subq_4.c1 as c14, \n  cast(nullif(subq_4.c2,\n    subq_4.c2) as int4) as c15, \n  subq_4.c0 as c16, \n  subq_2.c0 as c17, \n  (select v0 from public.metrics_dist limit 1 offset 1)\n     as c18, \n  \n    pg_catalog.bit_and(\n      cast((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 3)\n         as int2)) over (partition by subq_4.c2 order by subq_4.c2) as c19, \n  subq_4.c1 as c20, \n  subq_2.c2 as c21, \n  pg_catalog.pg_control_checkpoint() as c22, \n  (select pg_catalog.stddev_pop(val) from public.distinct_on_hypertable)\n     as c23, \n  cast(coalesce(subq_2.c4,\n    subq_2.c4) as timestamptz) as c24, \n  subq_2.c1 as c25, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(null as int2) as int2)) over (partition by subq_4.c0,subq_4.c2 order by subq_4.c1) as c26, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(nullif(case when cast(null as macaddr) < cast(null as macaddr) then case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             else case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             end\n          ,\n        pg_catalog.float4(\n          cast(case when cast(null as uuid) < cast(null as uuid) then cast(null as jsonb) else cast(null as jsonb) end\n             as jsonb))) as float4) as float4)) over (partition by subq_4.c1 order by subq_2.c0) as c27, \n  subq_4.c2 as c28, \n  subq_4.c1 as c29, \n  subq_2.c1 as c30\nfrom \n  (select  \n        subq_1.c2 as c0, \n        public.timescaledb_post_restore() as c1, \n        subq_1.c2 as c2, \n        subq_1.c1 as c3, \n        (select time from public.conditions_dist1 limit 1 offset 6)\n           as c4, \n        subq_1.c1 as c5, \n        pg_catalog.getpgusername() as c6\n      from \n        (select  \n              subq_0.c6 as c0, \n              subq_0.c7 as c1, \n              subq_0.c8 as c2\n            from \n              public.sensors as sample_0 tablesample system (4.5) ,\n              lateral (select  \n                    sample_0.sensor_id as c0, \n                    ref_0.time as c1, \n                    sample_0.name as c2, \n                    ref_0.device_id as c3, \n                    sample_0.name as c4, \n                    ref_0.v1 as c5, \n                    sample_0.sensor_id as c6, \n                    sample_0.sensor_id as c7, \n                    sample_0.sensor_id as c8, \n                    ref_0.v1 as c9, \n                    ref_0.device_id as c10, \n                    sample_0.sensor_id as c11\n                  from \n                    public.metrics_compressed as ref_0\n                  where true\n                  limit 148) as subq_0\n            where subq_0.c0 is NULL\n            limit 157) as subq_1\n      where subq_1.c0 is not NULL\n      limit 170) as subq_2,\n  lateral (select  \n        subq_3.c6 as c0, \n        (select id from public.distinct_on_hypertable limit 1 offset 3)\n           as c1, \n        subq_3.c1 as c2\n      from \n        (select  \n                (select sensor_id from public.sensors limit 1 offset 4)\n                   as c0, \n                ref_1.time as c1, \n                subq_2.c6 as c2, \n                subq_2.c1 as c3, \n                ref_1.value as c4, \n                subq_2.c0 as c5, \n                subq_2.c2 as c6, \n                ref_1.device_id as c7, \n                subq_2.c2 as c8, \n                ref_1.time as c9, \n                ref_1.device_id as c10, \n                19 as c11, \n                (select device_id from public.metrics limit 1 offset 3)\n                   as c12, \n                subq_2.c4 as c13\n              from \n                public.metrics_int_dist as ref_1\n              where true) as subq_3\n          right join public.devices as sample_1 tablesample bernoulli (1.3) \n          on ((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 5)\n                 <= (select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 6)\n                )\n      where sample_1.name < sample_1.name) as subq_4\nwhere 82 is NULL\nlimit 63", cursorOptions=2048, boundParams=0x0) at postgres.c:939
#22 0x0000555a04e546fa in exec_simple_query (
    query_string=0x555a073e5f10 "select  \n  subq_2.c4 as c0, \n  pg_catalog.pg_client_encoding() as c1, \n  subq_2.c4 as c2, \n  subq_4.c1 as c3, \n  subq_4.c0 as c4, \n  subq_2.c4 as c5, \n  subq_2.c0 as c6, \n  subq_4.c0 as c7, \n  pg_catalog.uuid_gt(\n    cast(pg_catalog.gen_random_uuid() as uuid),\n    cast(cast(null as uuid) as uuid)) as c8, \n  subq_2.c4 as c9, \n  subq_2.c6 as c10, \n  subq_4.c1 as c11, \n  (select device from public.dist_chunk_copy limit 1 offset 2)\n     as c12, \n  subq_2.c6 as c13, \n  subq_4.c1 as c14, \n  cast(nullif(subq_4.c2,\n    subq_4.c2) as int4) as c15, \n  subq_4.c0 as c16, \n  subq_2.c0 as c17, \n  (select v0 from public.metrics_dist limit 1 offset 1)\n     as c18, \n  \n    pg_catalog.bit_and(\n      cast((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 3)\n         as int2)) over (partition by subq_4.c2 order by subq_4.c2) as c19, \n  subq_4.c1 as c20, \n  subq_2.c2 as c21, \n  pg_catalog.pg_control_checkpoint() as c22, \n  (select pg_catalog.stddev_pop(val) from public.distinct_on_hypertable)\n     as c23, \n  cast(coalesce(subq_2.c4,\n    subq_2.c4) as timestamptz) as c24, \n  subq_2.c1 as c25, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(null as int2) as int2)) over (partition by subq_4.c0,subq_4.c2 order by subq_4.c1) as c26, \n  \n    pg_catalog.stddev_samp(\n      cast(cast(nullif(case when cast(null as macaddr) < cast(null as macaddr) then case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             else case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end\n             end\n          ,\n        pg_catalog.float4(\n          cast(case when cast(null as uuid) < cast(null as uuid) then cast(null as jsonb) else cast(null as jsonb) end\n             as jsonb))) as float4) as float4)) over (partition by subq_4.c1 order by subq_2.c0) as c27, \n  subq_4.c2 as c28, \n  subq_4.c1 as c29, \n  subq_2.c1 as c30\nfrom \n  (select  \n        subq_1.c2 as c0, \n        public.timescaledb_post_restore() as c1, \n        subq_1.c2 as c2, \n        subq_1.c1 as c3, \n        (select time from public.conditions_dist1 limit 1 offset 6)\n           as c4, \n        subq_1.c1 as c5, \n        pg_catalog.getpgusername() as c6\n      from \n        (select  \n              subq_0.c6 as c0, \n              subq_0.c7 as c1, \n              subq_0.c8 as c2\n            from \n              public.sensors as sample_0 tablesample system (4.5) ,\n              lateral (select  \n                    sample_0.sensor_id as c0, \n                    ref_0.time as c1, \n                    sample_0.name as c2, \n                    ref_0.device_id as c3, \n                    sample_0.name as c4, \n                    ref_0.v1 as c5, \n                    sample_0.sensor_id as c6, \n                    sample_0.sensor_id as c7, \n                    sample_0.sensor_id as c8, \n                    ref_0.v1 as c9, \n                    ref_0.device_id as c10, \n                    sample_0.sensor_id as c11\n                  from \n                    public.metrics_compressed as ref_0\n                  where true\n                  limit 148) as subq_0\n            where subq_0.c0 is NULL\n            limit 157) as subq_1\n      where subq_1.c0 is not NULL\n      limit 170) as subq_2,\n  lateral (select  \n        subq_3.c6 as c0, \n        (select id from public.distinct_on_hypertable limit 1 offset 3)\n           as c1, \n        subq_3.c1 as c2\n      from \n        (select  \n                (select sensor_id from public.sensors limit 1 offset 4)\n                   as c0, \n                ref_1.time as c1, \n                subq_2.c6 as c2, \n                subq_2.c1 as c3, \n                ref_1.value as c4, \n                subq_2.c0 as c5, \n                subq_2.c2 as c6, \n                ref_1.device_id as c7, \n                subq_2.c2 as c8, \n                ref_1.time as c9, \n                ref_1.device_id as c10, \n                19 as c11, \n                (select device_id from public.metrics limit 1 offset 3)\n                   as c12, \n                subq_2.c4 as c13\n              from \n                public.metrics_int_dist as ref_1\n              where true) as subq_3\n          right join public.devices as sample_1 tablesample bernoulli (1.3) \n          on ((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 5)\n                 <= (select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 6)\n                )\n      where sample_1.name < sample_1.name) as subq_4\nwhere 82 is NULL\nlimit 63") at postgres.c:1133
#23 0x0000555a04e596e5 in PostgresMain (argc=1, argv=0x7ffe93065800, dbname=0x555a06cbf320 "smith", username=0x555a06cbf300 "sven") at postgres.c:4486
#24 0x0000555a04d7ffff in BackendRun (port=0x555a06cb8e80) at postmaster.c:4530
#25 0x0000555a04d7f866 in BackendStartup (port=0x555a06cb8e80) at postmaster.c:4252
#26 0x0000555a04d7b5ef in ServerLoop () at postmaster.c:1745
#27 0x0000555a04d7ad64 in PostmasterMain (argc=3, argv=0x555a06c88650) at postmaster.c:1417
#28 0x0000555a04c6c989 in main (argc=3, argv=0x555a06c88650) at main.c:209

Query to reproduce

select
  subq_2.c4 as c0,
  pg_catalog.pg_client_encoding() as c1,
  subq_2.c4 as c2,
  subq_4.c1 as c3,
  subq_4.c0 as c4,
  subq_2.c4 as c5,
  subq_2.c0 as c6,
  subq_4.c0 as c7,
  pg_catalog.uuid_gt(
    cast(pg_catalog.gen_random_uuid() as uuid),
    cast(cast(null as uuid) as uuid)) as c8,
  subq_2.c4 as c9,
  subq_2.c6 as c10,
  subq_4.c1 as c11,
  (select device from public.dist_chunk_copy limit 1 offset 2)
     as c12,
  subq_2.c6 as c13,
  subq_4.c1 as c14,
  cast(nullif(subq_4.c2,
    subq_4.c2) as int4) as c15,
  subq_4.c0 as c16,
  subq_2.c0 as c17,
  (select v0 from public.metrics_dist limit 1 offset 1)
     as c18,

    pg_catalog.bit_and(
      cast((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 3)
         as int2)) over (partition by subq_4.c2 order by subq_4.c2) as c19,
  subq_4.c1 as c20,
  subq_2.c2 as c21,
  pg_catalog.pg_control_checkpoint() as c22,
  (select pg_catalog.stddev_pop(val) from public.distinct_on_hypertable)
     as c23,
  cast(coalesce(subq_2.c4,
    subq_2.c4) as timestamptz) as c24,
  subq_2.c1 as c25,

    pg_catalog.stddev_samp(
      cast(cast(null as int2) as int2)) over (partition by subq_4.c0,subq_4.c2 order by subq_4.c1) as c26,

    pg_catalog.stddev_samp(
      cast(cast(nullif(case when cast(null as macaddr) < cast(null as macaddr) then case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end
             else case when cast(null as bpchar) !~ cast(null as text) then cast(null as float4) else cast(null as float4) end
             end
          ,
        pg_catalog.float4(
          cast(case when cast(null as uuid) < cast(null as uuid) then cast(null as jsonb) else cast(null as jsonb) end
             as jsonb))) as float4) as float4)) over (partition by subq_4.c1 order by subq_2.c0) as c27,
  subq_4.c2 as c28,
  subq_4.c1 as c29,
  subq_2.c1 as c30
from
  (select
        subq_1.c2 as c0,
        public.timescaledb_post_restore() as c1,
        subq_1.c2 as c2,
        subq_1.c1 as c3,
        (select time from public.conditions_dist1 limit 1 offset 6)
           as c4,
        subq_1.c1 as c5,
        pg_catalog.getpgusername() as c6
      from
        (select
              subq_0.c6 as c0,
              subq_0.c7 as c1,
              subq_0.c8 as c2
            from
              public.sensors as sample_0 tablesample system (4.5) ,
              lateral (select
                    sample_0.sensor_id as c0,
                    ref_0.time as c1,
                    sample_0.name as c2,
                    ref_0.device_id as c3,
                    sample_0.name as c4,
                    ref_0.v1 as c5,
                    sample_0.sensor_id as c6,
                    sample_0.sensor_id as c7,
                    sample_0.sensor_id as c8,
                    ref_0.v1 as c9,
                    ref_0.device_id as c10,
                    sample_0.sensor_id as c11
                  from
                    public.metrics_compressed as ref_0
                  where true
                  limit 148) as subq_0
            where subq_0.c0 is NULL
            limit 157) as subq_1
      where subq_1.c0 is not NULL
      limit 170) as subq_2,
  lateral (select
        subq_3.c6 as c0,
        (select id from public.distinct_on_hypertable limit 1 offset 3)
           as c1,
        subq_3.c1 as c2
      from
        (select
                (select sensor_id from public.sensors limit 1 offset 4)
                   as c0,
                ref_1.time as c1,
                subq_2.c6 as c2,
                subq_2.c1 as c3,
                ref_1.value as c4,
                subq_2.c0 as c5,
                subq_2.c2 as c6,
                ref_1.device_id as c7,
                subq_2.c2 as c8,
                ref_1.time as c9,
                ref_1.device_id as c10,
                19 as c11,
                (select device_id from public.metrics limit 1 offset 3)
                   as c12,
                subq_2.c4 as c13
              from
                public.metrics_int_dist as ref_1
              where true) as subq_3
          right join public.devices as sample_1 tablesample bernoulli (1.3)
          on ((select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 5)
                 <= (select desired_num_replicas from timescaledb_experimental.chunk_replication_status limit 1 offset 6)
                )
      where sample_1.name < sample_1.name) as subq_4
where 82 is NULL
limit 63
svenklemm commented 2 years ago

Fixed by #3948