I attached a query (and its query plan) that caused the crash: "dsa_allocate could not find 13 free pages" on one of the worker nodes. I anonymised the query text a bit. Interestingly, this time only one (same one) of the nodes is crashing. Since this is a production environment, I cannot get the stack trace. Once turned off parallel execution for this node. The whole query finished just fine. So the parallel query plan is from one of the nodes not crashed, hopefully the same plan would have been executed on the crashed node. In theory, every worker node has the same bits, and very similar data.
===
psql (10.4)
\dx
List of installed extensions
Name | Version | Schema | Description
----------------+---------+------------+-----------------------------------
citus | 7.4-3 | pg_catalog | Citus distributed database
hll | 2.10 | public | type for storing hyperloglog data
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
===
psql (10.4)
\dx
List of installed extensions
Name | Version | Schema | Description
----------------+---------+------------+-----------------------------------
citus | 7.4-3 | pg_catalog | Citus distributed database
hll | 2.10 | public | type for storing hyperloglog data
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
On Sat, Aug 25, 2018 at 7:46 AM Sand Stone <sand.m.stone@xxxxxxxxx> wrote:
>Can you still see the problem with Citus 7.4?
Hi, Thomas. I actually went back to the cluster with Citus7.4 and
PG10.4. And modified the parallel param. So far, I haven't seen any
server crash.
The main difference between crashes observed and no crash, is the set
of Linux TCP time out parameters (to release the ports faster).
Unfortunately, I cannot "undo" the Linux params and run the stress
tests anymore, as this is a multi-million $ cluster and people are
doing more useful things on it. I will keep an eye on any parallel
execution issue.
On Wed, Aug 15, 2018 at 3:43 PM Thomas Munro
<thomas.munro@xxxxxxxxxxxxxxxx> wrote:
>
> On Thu, Aug 16, 2018 at 8:32 AM, Sand Stone <sand.m.stone@xxxxxxxxx> wrote:
> > Just as a follow up. I tried the parallel execution again (in a stress
> > test environment). Now the crash seems gone. I will keep an eye on
> > this for the next few weeks.
>
> Thanks for the report. That's great news, but it'd be good to
> understand why it was happening.
>
> > My theory is that the Citus cluster created and shut down a lot of TCP
> > connections between coordinator and workers. If running on untuned
> > Linux machines, the TCP ports might run out.
>
> I'm not sure how that's relevant, unless perhaps it causes executor
> nodes to be invoked in a strange sequence that commit fd7c0fa7 didn't
> fix? I wonder if there could be something different about the control
> flow with custom scans, or something about the way Citus worker nodes
> invoke plan fragments, or some error path that I failed to consider...
> It's a clue that all of your worker nodes reliably crashed at the same
> time on the same/similar queries (presumably distributed query
> fragments for different shards), making it seem more like a
> common-or-garden bug rather than some kind of timing-based heisenbug.
> If you ever manage to reproduce it, an explain plan and a back trace
> would be very useful.
>
> > Of course, I am using "newer" PG10 bits and Citus7.5 this time.
>
> Hmm. There weren't any relevant commits to REL_10_STABLE that I can
> think of. And (with the proviso that I know next to nothing about
> Citus) I just cloned https://github.com/citusdata/citus.git and
> skimmed through "git diff origin/release-7.4..origin/release-7.5", and
> nothing is jumping out at me. Can you still see the problem with
> Citus 7.4?
>
> --
> Thomas Munro
> http://www.enterprisedb.com
explain(analyze, verbose) select atimecol as atimecol, count(1) as count, sum(avg) as sum from ( select partitionid, atimecol as atimecol, avg(sum/count) as avg from atable where atimecol >= '7/31/2018' and atimecol <= '8/28/2018' and aText = 'Foo' and (jsoncol ->> 'X') = '-' and id=12345 and acol = 2 and btimecol='7/31/2018' and btimecol<'8/29/2018' group by partitionid, atimecol ) as subquery group by atimecol; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HashAggregate (cost=0.00..0.00 rows=0 width=0) (actual time=535.553..535.553 rows=0 loops=1) Output: remote_scan.atimecol, COALESCE((pg_catalog.sum(remote_scan.count))::bigint, '0'::bigint), sum(remote_scan.sum) Group Key: remote_scan.atimecol -> Custom Scan (Citus Real-Time) (cost=0.00..0.00 rows=0 width=0) (actual time=535.551..535.551 rows=0 loops=1) Output: remote_scan.atimecol, remote_scan.count, remote_scan.sum Task Count: 40 Tasks Shown: One of 40 -> Task Node: host=192.168.1.10 port=8432 dbname=measures -> GroupAggregate (cost=155839.44..155847.88 rows=200 width=24) (actual time=255.514..255.514 rows=0 loops=1) Output: subquery.atimecol, count(1), sum(subquery.avg) Group Key: subquery.atimecol -> Sort (cost=155839.44..155841.05 rows=644 width=16) (actual time=255.513..255.513 rows=0 loops=1) Output: subquery.atimecol, subquery.avg Sort Key: subquery.atimecol Sort Method: quicksort Memory: 25kB -> Subquery Scan on subquery (cost=155720.69..155809.39 rows=644 width=16) (actual time=255.509..255.509 rows=0 loops=1) Output: subquery.atimecol, subquery.avg -> Finalize GroupAggregate (cost=155720.69..155802.95 rows=644 width=24) (actual time=255.508..255.508 rows=0 loops=1) Output: atable.deviceid, atable.atimecol, avg((atable.sum / (atable.count)::double precision)) Group Key: atable.deviceid, atable.atimecol -> Gather Merge (cost=155720.69..155790.79 rows=548 width=48) (actual time=255.507..255.507 rows=0 loops=1) Output: atable.deviceid, atable.atimecol, (PARTIAL avg((atable.sum / (atable.count)::double precision))) Workers Planned: 2 Workers Launched: 2 -> Partial GroupAggregate (cost=154720.67..154727.52 rows=274 width=48) (actual time=245.145..245.145 rows=0 loops=3) Output: atable.deviceid, atable.atimecol, PARTIAL avg((atable.sum / (atable.count)::double precision)) Group Key: atable.deviceid, atable.atimecol Worker 0: actual time=241.308..241.308 rows=0 loops=1 Worker 1: actual time=241.314..241.314 rows=0 loops=1 -> Sort (cost=154720.67..154721.35 rows=274 width=28) (actual time=245.143..245.143 rows=0 loops=3) Output: atable.deviceid, atable.atimecol, atable.sum, atable.count Sort Key: atable.deviceid, atable.atimecol Sort Method: quicksort Memory: 25kB Worker 0: actual time=241.307..241.307 rows=0 loops=1 Worker 1: actual time=241.312..241.312 rows=0 loops=1 -> Append (cost=107.53..154709.57 rows=274 width=28) (actual time=245.042..245.042 rows=0 loops=3) Worker 0: actual time=241.159..241.159 rows=0 loops=1 Worker 1: actual time=241.167..241.167 rows=0 loops=1 -> Parallel Bitmap Heap Scan on public.atable_07_31_2018_115891 atable (cost=107.53..5400.41 rows=9 width=28) (actual time=14.439..14.439 rows=0 loops=3) Output: atable.deviceid, atable.atimecol, atable.sum, atable.count Recheck Cond: ((atable.id = 12345) AND (atable.acol = 2) AND (atable.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone ) AND (atable.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable.aText = 'Foo'::text)) Filter: ((atable.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone) AN D ((atable.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2901 Heap Blocks: exact=1532 Worker 0: actual time=10.554..10.554 rows=0 loops=1 Worker 1: actual time=10.561..10.561 rows=0 loops=1 -> Bitmap Index Scan on atable_07_31_2018_bar_pidx_115891 (cost=0.00..107.52 rows=4491 width=0) (actual time=1.733..1.733 rows=8704 loops=1) Index Cond: ((atable.id = 12345) AND (atable.acol = 2) AND (atable.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Index Scan using atable_08_01_2018_bar_pidx_116051 on public.atable_08_01_2018_116051 atable_1 (cost=0.56..5966.67 rows=15 width=28) (actual tim e=19.664..19.664 rows=0 loops=3) Output: atable_1.deviceid, atable_1.atimecol, atable_1.sum, atable_1.count Index Cond: ((atable_1.id = 12345) AND (atable_1.acol = 2) AND (atable_1.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_1.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Filter: ((atable_1.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_1.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_1.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3310 Worker 0: actual time=20.063..20.063 rows=0 loops=1 Worker 1: actual time=19.530..19.530 rows=0 loops=1 -> Parallel Index Scan using atable_08_02_2018_bar_ux_pidx_116171 on public.atable_08_02_2018_116171 atable_2 (cost=0.42..2.85 rows=1 width=28) (actual ti me=0.010..0.010 rows=0 loops=3) Output: atable_2.deviceid, atable_2.atimecol, atable_2.sum, atable_2.count Index Cond: ((atable_2.id = 12345) AND (atable_2.acol = 2) AND (atable_2.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_2.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Filter: ((atable_2.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_2.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_2.jsoncol ->> 'X'::text) = '-'::text)) Worker 0: actual time=0.001..0.001 rows=0 loops=1 Worker 1: actual time=0.002..0.002 rows=0 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_03_2018_116371 atable_3 (cost=147.04..7399.29 rows=13 width=28) (actual time=21.362..21.362 rows=0 loops=3) Output: atable_3.deviceid, atable_3.atimecol, atable_3.sum, atable_3.count Recheck Cond: ((atable_3.id = 12345) AND (atable_3.acol = 2) AND (atable_3.atimecol >= '2018-07-31 00:00:00+00'::timestamp with tim e zone) AND (atable_3.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_3.aText = 'Foo'::text)) Filter: ((atable_3.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_3.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_3.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3810 Heap Blocks: exact=1632 Worker 0: actual time=20.975..20.975 rows=0 loops=1 Worker 1: actual time=21.505..21.505 rows=0 loops=1 -> Bitmap Index Scan on atable_08_03_2018_bar_pidx_116371 (cost=0.00..147.03 rows=6165 width=0) (actual time=2.469..2.469 rows=11429 loops=1) Index Cond: ((atable_3.id = 12345) AND (atable_3.acol = 2) AND (atable_3.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_3.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_04_2018_116531 atable_4 (cost=97.73..4901.29 rows=8 width=28) (actual time=14.063..14.063 rows=0 loops=3) Output: atable_4.deviceid, atable_4.atimecol, atable_4.sum, atable_4.count Recheck Cond: ((atable_4.id = 12345) AND (atable_4.acol = 2) AND (atable_4.atimecol >= '2018-07-31 00:00:00+00'::timestamp with tim e zone) AND (atable_4.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_4.aText = 'Foo'::text)) Filter: ((atable_4.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_4.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_4.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2669 Heap Blocks: exact=1180 Worker 0: actual time=14.063..14.063 rows=0 loops=1 Worker 1: actual time=14.061..14.061 rows=0 loops=1 -> Bitmap Index Scan on atable_08_04_2018_bar_pidx_116531 (cost=0.00..97.72 rows=4078 width=0) (actual time=1.684..1.684 rows=8006 loops=1) Index Cond: ((atable_4.id = 12345) AND (atable_4.acol = 2) AND (atable_4.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_4.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.684..1.684 rows=8006 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_05_2018_116691 atable_5 (cost=91.55..4597.87 rows=8 width=28) (actual time=12.461..12.461 rows=0 loops=3) Output: atable_5.deviceid, atable_5.atimecol, atable_5.sum, atable_5.count Recheck Cond: ((atable_5.id = 12345) AND (atable_5.acol = 2) AND (atable_5.atimecol >= '2018-07-31 00:00:00+00'::timestamp with tim e zone) AND (atable_5.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_5.aText = 'Foo'::text)) Filter: ((atable_5.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_5.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_5.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2455 Heap Blocks: exact=745 Worker 0: actual time=12.467..12.467 rows=0 loops=1 Worker 1: actual time=12.458..12.458 rows=0 loops=1 -> Bitmap Index Scan on atable_08_05_2018_bar_pidx_116691 (cost=0.00..91.54 rows=3826 width=0) (actual time=1.629..1.629 rows=7365 loops=1) Index Cond: ((atable_5.id = 12345) AND (atable_5.acol = 2) AND (atable_5.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_5.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.629..1.629 rows=7365 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_06_2018_116851 atable_6 (cost=90.44..4510.33 rows=8 width=28) (actual time=13.344..13.344 rows=0 loops=3) Output: atable_6.deviceid, atable_6.atimecol, atable_6.sum, atable_6.count Recheck Cond: ((atable_6.id = 12345) AND (atable_6.acol = 2) AND (atable_6.atimecol >= '2018-07-31 00:00:00+00'::timestamp with tim e zone) AND (atable_6.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_6.aText = 'Foo'::text)) Filter: ((atable_6.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_6.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_6.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2503 Heap Blocks: exact=1287 Worker 0: actual time=13.341..13.341 rows=0 loops=1 Worker 1: actual time=13.347..13.347 rows=0 loops=1 -> Bitmap Index Scan on atable_08_06_2018_bar_pidx_116851 (cost=0.00..90.43 rows=3752 width=0) (actual time=1.456..1.456 rows=7509 loops=1) Index Cond: ((atable_6.id = 12345) AND (atable_6.acol = 2) AND (atable_6.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_6.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 1: actual time=1.456..1.456 rows=7509 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_07_2018_117011 atable_7 (cost=104.48..5245.02 rows=9 width=28) (actual time=19.819..19.819 rows=0 loops=3) Output: atable_7.deviceid, atable_7.atimecol, atable_7.sum, atable_7.count Recheck Cond: ((atable_7.id = 12345) AND (atable_7.acol = 2) AND (atable_7.atimecol >= '2018-07-31 00:00:00+00'::timestamp with tim e zone) AND (atable_7.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_7.aText = 'Foo'::text)) Filter: ((atable_7.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_7.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_7.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2950 Heap Blocks: exact=1971 Worker 0: actual time=19.818..19.818 rows=0 loops=1 Worker 1: actual time=19.818..19.818 rows=0 loops=1 -> Bitmap Index Scan on atable_08_07_2018_bar_pidx_117011 (cost=0.00..104.47 rows=4368 width=0) (actual time=2.383..2.383 rows=8851 loops=1) Index Cond: ((atable_7.id = 12345) AND (atable_7.acol = 2) AND (atable_7.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_7.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_08_2018_117171 atable_8 (cost=98.11..4930.63 rows=9 width=28) (actual time=10.521..10.521 rows=0 loops=3) Output: atable_8.deviceid, atable_8.atimecol, atable_8.sum, atable_8.count Recheck Cond: ((atable_8.id = 12345) AND (atable_8.acol = 2) AND (atable_8.atimecol >= '2018-07-31 00:00:00+00'::timestamp with tim e zone) AND (atable_8.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_8.aText = 'Foo'::text)) Filter: ((atable_8.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_8.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_8.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2725 Heap Blocks: exact=853 Worker 0: actual time=10.520..10.520 rows=0 loops=1 Worker 1: actual time=10.524..10.524 rows=0 loops=1 -> Bitmap Index Scan on atable_08_08_2018_bar_pidx_117171 (cost=0.00..98.10 rows=4103 width=0) (actual time=1.301..1.301 rows=8174 loops=1) Index Cond: ((atable_8.id = 12345) AND (atable_8.acol = 2) AND (atable_8.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_8.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 1: actual time=1.301..1.301 rows=8174 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_09_2018_117251 atable_9 (cost=100.23..4999.86 rows=9 width=28) (actual time=4.913..4.913 rows=0 loops=3) Output: atable_9.deviceid, atable_9.atimecol, atable_9.sum, atable_9.count Recheck Cond: ((atable_9.id = 12345) AND (atable_9.acol = 2) AND (atable_9.atimecol >= '2018-07-31 00:00:00+00'::timestamp with tim e zone) AND (atable_9.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_9.aText = 'Foo'::text)) Filter: ((atable_9.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_9.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zone ) AND ((atable_9.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2759 Heap Blocks: exact=286 Worker 0: actual time=4.912..4.912 rows=0 loops=1 Worker 1: actual time=4.911..4.911 rows=0 loops=1 -> Bitmap Index Scan on atable_08_09_2018_bar_pidx_117251 (cost=0.00..100.23 rows=4165 width=0) (actual time=1.164..1.164 rows=8277 loops=1) Index Cond: ((atable_9.id = 12345) AND (atable_9.acol = 2) AND (atable_9.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_9.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.164..1.164 rows=8277 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_10_2018_117451 atable_10 (cost=101.21..5081.85 rows=9 width=28) (actual time=5.534..5.534 rows=0 loops=3) Output: atable_10.deviceid, atable_10.atimecol, atable_10.sum, atable_10.count Recheck Cond: ((atable_10.id = 12345) AND (atable_10.acol = 2) AND (atable_10.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_10.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_10.aText = 'Foo'::text)) Filter: ((atable_10.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_10.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_10.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2841 Heap Blocks: exact=307 Worker 0: actual time=5.533..5.533 rows=0 loops=1 Worker 1: actual time=5.538..5.538 rows=0 loops=1 -> Bitmap Index Scan on atable_08_10_2018_bar_pidx_117451 (cost=0.00..101.20 rows=4230 width=0) (actual time=1.121..1.121 rows=8524 loops=1) Index Cond: ((atable_10.id = 12345) AND (atable_10.acol = 2) AND (atable_10.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_10.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.121..1.121 rows=8524 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_11_2018_117611 atable_11 (cost=107.59..5395.58 rows=9 width=28) (actual time=5.418..5.418 rows=0 loops=3) Output: atable_11.deviceid, atable_11.atimecol, atable_11.sum, atable_11.count Recheck Cond: ((atable_11.id = 12345) AND (atable_11.acol = 2) AND (atable_11.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_11.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_11.aText = 'Foo'::text)) Filter: ((atable_11.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_11.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_11.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2953 Heap Blocks: exact=312 Worker 0: actual time=5.423..5.423 rows=0 loops=1 Worker 1: actual time=5.412..5.412 rows=0 loops=1 -> Bitmap Index Scan on atable_08_11_2018_bar_pidx_117611 (cost=0.00..107.58 rows=4495 width=0) (actual time=1.221..1.221 rows=8858 loops=1) Index Cond: ((atable_11.id = 12345) AND (atable_11.acol = 2) AND (atable_11.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_11.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.221..1.221 rows=8858 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_12_2018_117811 atable_12 (cost=94.89..4769.68 rows=8 width=28) (actual time=5.192..5.192 rows=0 loops=3) Output: atable_12.deviceid, atable_12.atimecol, atable_12.sum, atable_12.count Recheck Cond: ((atable_12.id = 12345) AND (atable_12.acol = 2) AND (atable_12.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_12.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_12.aText = 'Foo'::text)) Filter: ((atable_12.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_12.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_12.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2642 Heap Blocks: exact=353 Worker 0: actual time=5.193..5.193 rows=0 loops=1 Worker 1: actual time=5.196..5.196 rows=0 loops=1 -> Bitmap Index Scan on atable_08_12_2018_bar_pidx_117811 (cost=0.00..94.89 rows=3969 width=0) (actual time=0.957..0.957 rows=7927 loops=1) Index Cond: ((atable_12.id = 12345) AND (atable_12.acol = 2) AND (atable_12.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_12.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 1: actual time=0.957..0.957 rows=7927 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_13_2018_117931 atable_13 (cost=105.37..5308.48 rows=9 width=28) (actual time=4.916..4.916 rows=0 loops=3) Output: atable_13.deviceid, atable_13.atimecol, atable_13.sum, atable_13.count Recheck Cond: ((atable_13.id = 12345) AND (atable_13.acol = 2) AND (atable_13.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_13.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_13.aText = 'Foo'::text)) Filter: ((atable_13.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_13.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_13.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2942 Heap Blocks: exact=293 Worker 0: actual time=4.916..4.916 rows=0 loops=1 Worker 1: actual time=4.916..4.916 rows=0 loops=1 -> Bitmap Index Scan on atable_08_13_2018_bar_pidx_117931 (cost=0.00..105.36 rows=4427 width=0) (actual time=1.094..1.094 rows=8827 loops=1) Index Cond: ((atable_13.id = 12345) AND (atable_13.acol = 2) AND (atable_13.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_13.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_14_2018_118091 atable_14 (cost=124.84..6280.54 rows=11 width=28) (actual time=6.525..6.525 rows=0 loops=3) Output: atable_14.deviceid, atable_14.atimecol, atable_14.sum, atable_14.count Recheck Cond: ((atable_14.id = 12345) AND (atable_14.acol = 2) AND (atable_14.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_14.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_14.aText = 'Foo'::text)) Filter: ((atable_14.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_14.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_14.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3573 Heap Blocks: exact=294 Worker 0: actual time=6.522..6.522 rows=0 loops=1 Worker 1: actual time=6.524..6.524 rows=0 loops=1 -> Bitmap Index Scan on atable_08_14_2018_bar_pidx_118091 (cost=0.00..124.83 rows=5245 width=0) (actual time=1.288..1.288 rows=10720 loops=1) Index Cond: ((atable_14.id = 12345) AND (atable_14.acol = 2) AND (atable_14.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_14.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_15_2018_118251 atable_15 (cost=133.90..6723.57 rows=12 width=28) (actual time=6.582..6.582 rows=0 loops=3) Output: atable_15.deviceid, atable_15.atimecol, atable_15.sum, atable_15.count Recheck Cond: ((atable_15.id = 12345) AND (atable_15.acol = 2) AND (atable_15.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_15.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_15.aText = 'Foo'::text)) Filter: ((atable_15.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_15.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_15.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3746 Heap Blocks: exact=397 Worker 0: actual time=6.579..6.579 rows=0 loops=1 Worker 1: actual time=6.585..6.585 rows=0 loops=1 -> Bitmap Index Scan on atable_08_15_2018_bar_pidx_118251 (cost=0.00..133.89 rows=5609 width=0) (actual time=1.477..1.477 rows=11238 loops=1) Index Cond: ((atable_15.id = 12345) AND (atable_15.acol = 2) AND (atable_15.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_15.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.477..1.477 rows=11238 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_16_2018_118411 atable_16 (cost=101.89..5133.13 rows=9 width=28) (actual time=4.779..4.779 rows=0 loops=3) Output: atable_16.deviceid, atable_16.atimecol, atable_16.sum, atable_16.count Recheck Cond: ((atable_16.id = 12345) AND (atable_16.acol = 2) AND (atable_16.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_16.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_16.aText = 'Foo'::text)) Filter: ((atable_16.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_16.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_16.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2814 Heap Blocks: exact=314 Worker 0: actual time=4.783..4.783 rows=0 loops=1 Worker 1: actual time=4.776..4.776 rows=0 loops=1 -> Bitmap Index Scan on atable_08_16_2018_bar_pidx_118411 (cost=0.00..101.88 rows=4275 width=0) (actual time=0.966..0.966 rows=8443 loops=1) Index Cond: ((atable_16.id = 12345) AND (atable_16.acol = 2) AND (atable_16.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_16.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=0.966..0.966 rows=8443 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_17_2018_118571 atable_17 (cost=113.86..5711.06 rows=10 width=28) (actual time=6.262..6.262 rows=0 loops=3) Output: atable_17.deviceid, atable_17.atimecol, atable_17.sum, atable_17.count Recheck Cond: ((atable_17.id = 12345) AND (atable_17.acol = 2) AND (atable_17.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_17.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_17.aText = 'Foo'::text)) Filter: ((atable_17.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_17.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_17.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3220 Heap Blocks: exact=343 Worker 0: actual time=6.263..6.263 rows=0 loops=1 Worker 1: actual time=6.262..6.262 rows=0 loops=1 -> Bitmap Index Scan on atable_08_17_2018_bar_pidx_118571 (cost=0.00..113.85 rows=4753 width=0) (actual time=1.126..1.126 rows=9659 loops=1) Index Cond: ((atable_17.id = 12345) AND (atable_17.acol = 2) AND (atable_17.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_17.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_18_2018_118731 atable_18 (cost=101.72..5124.76 rows=9 width=28) (actual time=7.255..7.255 rows=0 loops=3) Output: atable_18.deviceid, atable_18.atimecol, atable_18.sum, atable_18.count Recheck Cond: ((atable_18.id = 12345) AND (atable_18.acol = 2) AND (atable_18.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_18.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_18.aText = 'Foo'::text)) Filter: ((atable_18.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_18.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_18.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2841 Heap Blocks: exact=319 Worker 0: actual time=7.255..7.255 rows=0 loops=1 Worker 1: actual time=7.254..7.254 rows=0 loops=1 -> Bitmap Index Scan on atable_08_18_2018_bar_pidx_118731 (cost=0.00..101.72 rows=4264 width=0) (actual time=1.235..1.235 rows=8524 loops=1) Index Cond: ((atable_18.id = 12345) AND (atable_18.acol = 2) AND (atable_18.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_18.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_19_2018_118891 atable_19 (cost=85.13..4277.95 rows=8 width=28) (actual time=5.071..5.071 rows=0 loops=3) Output: atable_19.deviceid, atable_19.atimecol, atable_19.sum, atable_19.count Recheck Cond: ((atable_19.id = 12345) AND (atable_19.acol = 2) AND (atable_19.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_19.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_19.aText = 'Foo'::text)) Filter: ((atable_19.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_19.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_19.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2404 Heap Blocks: exact=275 Worker 0: actual time=5.067..5.067 rows=0 loops=1 Worker 1: actual time=5.074..5.074 rows=0 loops=1 -> Bitmap Index Scan on atable_08_19_2018_bar_pidx_118891 (cost=0.00..85.12 rows=3558 width=0) (actual time=1.438..1.438 rows=7211 loops=1) Index Cond: ((atable_19.id = 12345) AND (atable_19.acol = 2) AND (atable_19.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_19.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_20_2018_119051 atable_20 (cost=100.58..4562.99 rows=8 width=28) (actual time=5.374..5.374 rows=0 loops=3) Output: atable_20.deviceid, atable_20.atimecol, atable_20.sum, atable_20.count Recheck Cond: ((atable_20.id = 12345) AND (atable_20.acol = 2) AND (atable_20.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_20.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_20.aText = 'Foo'::text)) Filter: ((atable_20.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_20.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_20.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2534 Heap Blocks: exact=286 Worker 0: actual time=5.375..5.375 rows=0 loops=1 Worker 1: actual time=5.373..5.373 rows=0 loops=1 -> Bitmap Index Scan on atable_08_20_2018_bar_ux_pidx_119051 (cost=0.00..100.57 rows=3788 width=0) (actual time=1.414..1.414 rows=7602 loops=1) Index Cond: ((atable_20.id = 12345) AND (atable_20.acol = 2) AND (atable_20.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_20.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.414..1.414 rows=7602 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_21_2018_119211 atable_21 (cost=147.83..6724.24 rows=12 width=28) (actual time=7.524..7.524 rows=0 loops=3) Output: atable_21.deviceid, atable_21.atimecol, atable_21.sum, atable_21.count Recheck Cond: ((atable_21.id = 12345) AND (atable_21.acol = 2) AND (atable_21.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_21.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_21.aText = 'Foo'::text)) Filter: ((atable_21.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_21.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_21.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3847 Heap Blocks: exact=434 Worker 0: actual time=7.521..7.521 rows=0 loops=1 Worker 1: actual time=7.525..7.525 rows=0 loops=1 -> Bitmap Index Scan on atable_08_21_2018_bar_ux_pidx_119211 (cost=0.00..147.82 rows=5578 width=0) (actual time=1.937..1.937 rows=11540 loops=1) Index Cond: ((atable_21.id = 12345) AND (atable_21.acol = 2) AND (atable_21.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_21.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_22_2018_119371 atable_22 (cost=142.13..6436.41 rows=11 width=28) (actual time=6.397..6.397 rows=0 loops=3) Output: atable_22.deviceid, atable_22.atimecol, atable_22.sum, atable_22.count Recheck Cond: ((atable_22.id = 12345) AND (atable_22.acol = 2) AND (atable_22.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_22.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_22.aText = 'Foo'::text)) Filter: ((atable_22.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_22.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_22.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3397 Heap Blocks: exact=398 Worker 0: actual time=6.400..6.400 rows=0 loops=1 Worker 1: actual time=6.398..6.398 rows=0 loops=1 -> Bitmap Index Scan on atable_08_22_2018_bar_ux_pidx_119371 (cost=0.00..142.12 rows=5358 width=0) (actual time=1.799..1.799 rows=10191 loops=1) Index Cond: ((atable_22.id = 12345) AND (atable_22.acol = 2) AND (atable_22.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_22.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.799..1.799 rows=10191 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_23_2018_119531 atable_23 (cost=116.21..5237.07 rows=9 width=28) (actual time=4.834..4.834 rows=0 loops=3) Output: atable_23.deviceid, atable_23.atimecol, atable_23.sum, atable_23.count Recheck Cond: ((atable_23.id = 12345) AND (atable_23.acol = 2) AND (atable_23.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_23.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_23.aText = 'Foo'::text)) Filter: ((atable_23.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_23.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_23.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2905 Heap Blocks: exact=329 Worker 0: actual time=4.825..4.825 rows=0 loops=1 Worker 1: actual time=4.826..4.826 rows=0 loops=1 -> Bitmap Index Scan on atable_08_23_2018_bar_ux_pidx_119531 (cost=0.00..116.21 rows=4350 width=0) (actual time=1.125..1.125 rows=8716 loops=1) Index Cond: ((atable_23.id = 12345) AND (atable_23.acol = 2) AND (atable_23.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_23.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_24_2018_119691 atable_24 (cost=117.14..5315.90 rows=9 width=28) (actual time=9.153..9.153 rows=0 loops=3) Output: atable_24.deviceid, atable_24.atimecol, atable_24.sum, atable_24.count Recheck Cond: ((atable_24.id = 12345) AND (atable_24.acol = 2) AND (atable_24.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_24.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_24.aText = 'Foo'::text)) Filter: ((atable_24.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_24.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_24.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2987 Heap Blocks: exact=843 Worker 0: actual time=9.164..9.164 rows=0 loops=1 Worker 1: actual time=9.156..9.156 rows=0 loops=1 -> Bitmap Index Scan on atable_08_24_2018_bar_ux_pidx_119691 (cost=0.00..117.13 rows=4412 width=0) (actual time=1.773..1.773 rows=8961 loops=1) Index Cond: ((atable_24.id = 12345) AND (atable_24.acol = 2) AND (atable_24.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_24.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=1.773..1.773 rows=8961 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_25_2018_119851 atable_25 (cost=139.90..6354.12 rows=11 width=28) (actual time=5.723..5.723 rows=0 loops=3) Output: atable_25.deviceid, atable_25.atimecol, atable_25.sum, atable_25.count Recheck Cond: ((atable_25.id = 12345) AND (atable_25.acol = 2) AND (atable_25.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_25.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_25.aText = 'Foo'::text)) Filter: ((atable_25.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_25.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_25.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3346 Heap Blocks: exact=372 Worker 0: actual time=5.723..5.723 rows=0 loops=1 Worker 1: actual time=5.725..5.725 rows=0 loops=1 -> Bitmap Index Scan on atable_08_25_2018_bar_ux_pidx_119851 (cost=0.00..139.89 rows=5289 width=0) (actual time=1.282..1.282 rows=10037 loops=1) Index Cond: ((atable_25.id = 12345) AND (atable_25.acol = 2) AND (atable_25.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_25.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_26_2018_120011 atable_26 (cost=108.27..4887.59 rows=8 width=28) (actual time=4.662..4.662 rows=0 loops=3) Output: atable_26.deviceid, atable_26.atimecol, atable_26.sum, atable_26.count Recheck Cond: ((atable_26.id = 12345) AND (atable_26.acol = 2) AND (atable_26.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_26.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_26.aText = 'Foo'::text)) Filter: ((atable_26.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_26.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_26.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 2645 Heap Blocks: exact=301 Worker 0: actual time=4.664..4.664 rows=0 loops=1 Worker 1: actual time=4.654..4.654 rows=0 loops=1 -> Bitmap Index Scan on atable_08_26_2018_bar_ux_pidx_120011 (cost=0.00..108.27 rows=4061 width=0) (actual time=1.043..1.043 rows=7934 loops=1) Index Cond: ((atable_26.id = 12345) AND (atable_26.acol = 2) AND (atable_26.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_26.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) -> Parallel Bitmap Heap Scan on public.atable_08_27_2018_120171 atable_27 (cost=147.65..5934.25 rows=10 width=28) (actual time=5.573..5.573 rows=0 loops=3) Output: atable_27.deviceid, atable_27.atimecol, atable_27.sum, atable_27.count Recheck Cond: ((atable_27.id = 12345) AND (atable_27.acol = 2) AND (atable_27.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_27.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_27.aText = 'Foo'::text)) Filter: ((atable_27.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_27.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_27.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 3070 Heap Blocks: exact=336 Worker 0: actual time=5.564..5.564 rows=0 loops=1 Worker 1: actual time=5.584..5.584 rows=0 loops=1 -> Bitmap Index Scan on atable_08_27_2018_bar_ux_pidx_120171 (cost=0.00..147.65 rows=4926 width=0) (actual time=1.656..1.656 rows=9211 loops=1) Index Cond: ((atable_27.id = 12345) AND (atable_27.acol = 2) AND (atable_27.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_27.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 1: actual time=1.656..1.656 rows=9211 loops=1 -> Parallel Bitmap Heap Scan on public.atable_08_28_2018_120331 atable_28 (cost=187.61..7496.18 rows=13 width=28) (actual time=7.649..7.649 rows=0 loops=3) Output: atable_28.deviceid, atable_28.atimecol, atable_28.sum, atable_28.count Recheck Cond: ((atable_28.id = 12345) AND (atable_28.acol = 2) AND (atable_28.atimecol >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_28.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone) AND (atable_28.aText = 'Foo'::text)) Filter: ((atable_28.procdatetime >= '2018-07-31 00:00:00+00'::timestamp with time zone) AND (atable_28.procdatetime < '2018-08-29 00:00:00+00'::timestamp with time zo ne) AND ((atable_28.jsoncol ->> 'X'::text) = '-'::text)) Rows Removed by Filter: 4018 Heap Blocks: exact=530 Worker 0: actual time=7.651..7.651 rows=0 loops=1 Worker 1: actual time=7.650..7.650 rows=0 loops=1 -> Bitmap Index Scan on atable_08_28_2018_bar_ux_pidx_120331 (cost=0.00..187.61 rows=6230 width=0) (actual time=2.161..2.161 rows=12055 loops=1) Index Cond: ((atable_28.id = 12345) AND (atable_28.acol = 2) AND (atable_28.atimecol >= '2018-07-31 00:00:00+00'::timestamp w ith time zone) AND (atable_28.atimecol <= '2018-08-28 00:00:00+00'::timestamp with time zone)) Worker 0: actual time=2.161..2.161 rows=12055 loops=1 Planning time: 83.668 ms Execution time: 301.567 ms Planning time: 6.734 ms Execution time: 535.688 ms (341 rows) Time: 944.180 ms