BUG #14948: cost overflow

From: jasc(at)gmx(dot)net
To: pgsql-bugs(at)postgresql(dot)org
Cc: jasc(at)gmx(dot)net
Subject: BUG #14948: cost overflow
Date: 2017-12-05 10:59:24
Message-ID: 20171205105924.27108.93509@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 14948
Logged by: Jan Schulz
Email address: jasc(at)gmx(dot)net
PostgreSQL version: 10.1
Operating system: Linux (Ubuntu 16.04 LTS + HWE)
Description:

Hello,

I was asked on twitter to post this issue to the bugs list.

We have a server which reports negative costs in a query plan:

GroupAggregate
(cost=-25142102027752040829944596389028691968.00..-25142102027752040829944596389028691968.00
rows=1600000000 width=254)

On one system it looks funny, on other systems it looks normal (see query
plans for the same query on different systems/environments).

The background for this is a server getting killed by OOM killer and we are
currently debugging this: we have work_mem set to 2GB and since a few days
we have crashes with these settings which we haven't yet pin to a root cause
-> this might be related to these crashes or it might be a result of this
crashes, but it looks funny in any case.

Thanks,

Jan

Full EXPLAIN (ANALYSE BUFFERS) on the funny looking system:

GroupAggregate
(cost=-25142102027752040829944596389028691968.00..-25142102027752040829944596389028691968.00
rows=1600000000 width=254) (actual time=1.640..1.640 rows=0 loops=1)
Group Key: "*SELECT* 1".sendid_fk, "*SELECT* 1".campaign_fk,
('-1'::smallint), (('-1'::smallint)::integer)
Buffers: shared hit=11
-> Sort
(cost=-25142102027752040829944596389028691968.00..-25142102027752040829944596389028691968.00
rows=16812456500 width=120) (actual time=1.638..1.638 rows=0 loops=1)
Sort Key: "*SELECT* 1".sendid_fk, "*SELECT* 1".campaign_fk,
('-1'::smallint), (('-1'::smallint)::integer)
Sort Method: quicksort Memory: 25kB
Buffers: shared hit=11
-> Append
(cost=329985.38..-25142102027752040829944596389028691968.00 rows=16812456500
width=120) (actual time=1.621..1.621 rows=0 loops=1)
Buffers: shared hit=11
-> Subquery Scan on "*SELECT* 1" (cost=329985.38..462708.80
rows=3537400 width=120) (actual time=0.077..0.077 rows=0 loops=1)
Buffers: shared hit=6
-> Merge Right Join (cost=329985.38..418491.30
rows=3537400 width=118) (actual time=0.076..0.076 rows=0 loops=1)
Merge Cond: (cm.campaign_name =
ev.campaign_name)
Buffers: shared hit=6
-> Index Scan using campaign__campaign_name on
campaign cm (cost=0.15..67.80 rows=1310 width=34) (actual time=0.015..0.015
rows=1 loops=1)
Buffers: shared hit=2
-> Sort (cost=329985.23..331335.38 rows=540061
width=74) (actual time=0.058..0.058 rows=0 loops=1)
Sort Key: ev.campaign_name
Sort Method: quicksort Memory: 25kB
Buffers: shared hit=4
-> Merge Right Join
(cost=270456.49..278563.96 rows=540061 width=74) (actual time=0.049..0.049
rows=0 loops=1)
Merge Cond: (et.event_type_name =
ev.event_type)
Buffers: shared hit=4
-> Sort (cost=90.93..94.20 rows=1310
width=32) (actual time=0.025..0.025 rows=1 loops=1)
Sort Key: et.event_type_name
Sort Method: quicksort Memory:
25kB
Buffers: shared hit=1
-> Seq Scan on event_type et
(cost=0.00..23.10 rows=1310 width=32) (actual time=0.006..0.007 rows=5
loops=1)
Buffers: shared hit=1
-> Sort (cost=270365.57..270571.70
rows=82452 width=74) (actual time=0.023..0.023 rows=0 loops=1)
Sort Key: ev.event_type
Sort Method: quicksort Memory:
25kB
Buffers: shared hit=3
-> Hash Left Join
(cost=40461.31..263632.84 rows=82452 width=74) (actual time=0.014..0.014
rows=0 loops=1)
Hash Cond:
(ev.click_subscriber_key = csu.subscriber_name)
Buffers: shared hit=3
-> Hash Left Join
(cost=21328.11..243458.68 rows=82452 width=102) (actual time=0.013..0.013
rows=0 loops=1)
Hash Cond:
(ev.open_subscriber_key = osu.subscriber_name)
Buffers: shared
hit=3
-> Hash Left Join
(cost=2194.91..223284.53 rows=82452 width=130) (actual time=0.012..0.012
rows=0 loops=1)
Hash Cond:
(ev.sendid = si.sendid_name)
Buffers:
shared hit=3
-> Bitmap
Heap Scan on event ev (cost=2155.44..222204.65 rows=82452 width=160)
(actual time=0.012..0.012 rows=0 loops=1)
Recheck
Cond: (event_day_fk = 20171120)
Buffers:
shared hit=3
->
Bitmap Index Scan on event__event_day_fk (cost=0.00..2134.82 rows=82452
width=0) (actual time=0.009..0.009 rows=0 loops=1)

Index Cond: (event_day_fk = 20171120)

Buffers: shared hit=3
-> Hash
(cost=23.10..23.10 rows=1310 width=34) (never executed)
-> Seq
Scan on sendid si (cost=0.00..23.10 rows=1310 width=34) (never executed)
-> Hash
(cost=11259.20..11259.20 rows=629920 width=36) (never executed)
-> Seq Scan
on subscriber osu (cost=0.00..11259.20 rows=629920 width=36) (never
executed)
-> Hash
(cost=11259.20..11259.20 rows=629920 width=36) (never executed)
-> Seq Scan on
subscriber csu (cost=0.00..11259.20 rows=629920 width=36) (never
executed)
-> Merge Left Join
(cost=-25142102027752040829944596389028691968.00..-25142102027752040829944596389028691968.00
rows=16808919100 width=120) (actual time=1.543..1.543 rows=0 loops=1)
Merge Cond: (t.customer_fk = cu.customer_id)
Buffers: shared hit=5
-> Sort
(cost=-25142102027752040829944596389028691968.00..-25142102027752040829944596389028691968.00
rows=16808919100 width=82) (actual time=1.543..1.543 rows=0 loops=1)
Sort Key: t.customer_fk
Sort Method: quicksort Memory: 25kB
Buffers: shared hit=5
-> Nested Loop
(cost=-2021924571963149.75..-25142102027752040829944596389028691968.00
rows=16808919100 width=82) (actual time=1.537..1.537 rows=0 loops=1)
Join Filter: (si_1.sendid_name =
ev_1.sendid)
Buffers: shared hit=5
-> HashAggregate
(cost=239661.55..242267.55 rows=260600 width=34) (actual time=1.536..1.536
rows=0 loops=1)
Group Key: ev_1.sendid,
cm_1.campaign_id
Buffers: shared hit=5
-> Merge Join
(cost=228900.82..236989.10 rows=534491 width=34) (actual time=0.016..0.016
rows=0 loops=1)
Merge Cond: (cm_1.campaign_name
= ev_1.campaign_name)
Buffers: shared hit=5
-> Index Scan using
campaign__campaign_name on campaign cm_1 (cost=0.15..67.80 rows=1303
width=34) (actual time=0.007..0.007 rows=1 loops=1)
Filter: (campaign_id IS
NOT NULL)
Buffers: shared hit=2
-> Sort
(cost=228900.67..229105.77 rows=82040 width=64) (actual time=0.008..0.008
rows=0 loops=1)
Sort Key:
ev_1.campaign_name
Sort Method: quicksort
Memory: 25kB
Buffers: shared hit=3
-> Bitmap Heap Scan on
event ev_1 (cost=2155.34..222204.55 rows=82040 width=64) (actual
time=0.002..0.002 rows=0 loops=1)
Recheck Cond:
(event_day_fk = 20171120)
Filter: (sendid IS
NOT NULL)
Buffers: shared
hit=3
-> Bitmap Index
Scan on event__event_day_fk (cost=0.00..2134.82 rows=82452 width=0) (actual
time=0.002..0.002 rows=0 loops=1)
Index Cond:
(event_day_fk = 20171120)
Buffers:
shared hit=3
-> Nested Loop
(cost=-2021924572202811.25..-96477751449547350295223172333568.00
rows=84496365 width=144) (never executed)
Join Filter: (ad.ad_group_name =
si_1.sendid_name)
-> Seq Scan on sendid si_1
(cost=0.00..23.10 rows=1303 width=34) (never executed)
Filter: (sendid_id IS NOT
NULL)
-> Nested Loop
(cost=-2021924572202811.25..-74042786991210548153116786688.00 rows=84929134
width=110) (never executed)
Join Filter: (t.ad_fk =
ad.ad_id)
-> Index Scan using
ad__ad_group_name on ad (cost=0.42..1415932.35 rows=2157 width=40) (never
executed)
Filter: (channel_name =
'Email'::text)
-> Nested Loop Left Join
(cost=-2021924572202811.75..-34326744084937666832891904.00 rows=16977262428
width=86) (never executed)
-> Merge Left Join
(cost=767470.10..256025144.48 rows=16977262428 width=92) (never executed)
Merge Cond:
(t.touchpoint_id = rp.touchpoint_fk)
-> Merge Left Join
(cost=595487.90..1108803.95 rows=34168763 width=68) (never executed)
Merge Cond:
(t.touchpoint_id = ap.touchpoint_fk)
-> Sort
(cost=509005.69..509397.99 rows=156921 width=44) (never executed)
Sort
Key: t.touchpoint_id
->
Append (cost=0.00..495463.66 rows=156921 width=44) (never executed)
->
Seq Scan on touchpoint t (cost=0.00..0.00 rows=1 width=44) (never
executed)

Filter: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_0 t_1 (cost=353.49..33026.70 rows=10460
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_0__day_fk (cost=0.00..350.88
rows=10460 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_1 t_2 (cost=353.31..32951.98 rows=10436
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_1__day_fk (cost=0.00..350.70
rows=10436 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_2 t_3 (cost=353.51..33033.17 rows=10462
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_2__day_fk (cost=0.00..350.89
rows=10462 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_3 t_4 (cost=353.21..32910.10 rows=10423
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_3__day_fk (cost=0.00..350.60
rows=10423 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_4 t_5 (cost=353.62..33075.49 rows=10476
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_4__day_fk (cost=0.00..351.00
rows=10476 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_5 t_6 (cost=358.10..33273.80 rows=10538
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_5__day_fk (cost=0.00..355.46
rows=10538 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_6 t_7 (cost=353.21..32913.40 rows=10424
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_6__day_fk (cost=0.00..350.61
rows=10424 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_7 t_8 (cost=353.48..33023.38 rows=10459
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_7__day_fk (cost=0.00..350.87
rows=10459 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_8 t_9 (cost=353.53..33042.77 rows=10465
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_8__day_fk (cost=0.00..350.92
rows=10465 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_9 t_10 (cost=353.66..33094.94 rows=10482
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_9__day_fk (cost=0.00..351.04
rows=10482 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_10 t_11 (cost=353.35..32968.57 rows=10442
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_10__day_fk (cost=0.00..350.74
rows=10442 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_11 t_12 (cost=353.66..33094.59 rows=10482
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_11__day_fk (cost=0.00..351.04
rows=10482 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_12 t_13 (cost=357.94..33211.98 rows=10518
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_12__day_fk (cost=0.00..355.31
rows=10518 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_13 t_14 (cost=352.93..32799.96 rows=10388
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_13__day_fk (cost=0.00..350.34
rows=10388 width=0) (never executed)

Index Cond: (day_fk = 20171120)
->
Bitmap Heap Scan on touchpoint_14 t_15 (cost=353.53..33042.83 rows=10465
width=44) (never executed)

Recheck Cond: (day_fk = 20171120)

-> Bitmap Index Scan on touchpoint_14__day_fk (cost=0.00..350.92
rows=10465 width=0) (never executed)

Index Cond: (day_fk = 20171120)
-> Sort
(cost=86482.21..86591.08 rows=43549 width=32) (never executed)
Sort
Key: ap.touchpoint_fk
->
Append (cost=0.00..83126.68 rows=43549 width=32) (never executed)
->
Seq Scan on acquisition_performance ap (cost=0.00..0.00 rows=1 width=32)
(never executed)

Filter: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_0 ap_1 (cost=50.91..5537.62
rows=2901 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_0__performance_attribution_model_fk
(cost=0.00..50.18 rows=2901 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_1 ap_2 (cost=50.95..5548.79
rows=2907 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_1__performance_attribution_model_fk
(cost=0.00..50.23 rows=2907 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_2 ap_3 (cost=50.95..5547.08
rows=2906 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_2__performance_attribution_model_fk
(cost=0.00..50.22 rows=2906 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_3 ap_4 (cost=50.87..5528.44
rows=2896 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_3__performance_attribution_model_fk
(cost=0.00..50.14 rows=2896 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_4 ap_5 (cost=50.91..5537.32
rows=2901 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_4__performance_attribution_model_fk
(cost=0.00..50.18 rows=2901 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_5 ap_6 (cost=50.95..5546.79
rows=2906 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_5__performance_attribution_model_fk
(cost=0.00..50.22 rows=2906 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_6 ap_7 (cost=50.92..5539.61
rows=2902 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_6__performance_attribution_model_fk
(cost=0.00..50.19 rows=2902 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_7 ap_8 (cost=50.88..5530.15
rows=2897 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_7__performance_attribution_model_fk
(cost=0.00..50.15 rows=2897 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_8 ap_9 (cost=50.88..5530.15
rows=2897 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_8__performance_attribution_model_fk
(cost=0.00..50.15 rows=2897 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_9 ap_10 (cost=50.95..5547.08
rows=2906 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_9__performance_attribution_model_fk
(cost=0.00..50.22 rows=2906 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_10 ap_11 (cost=50.88..5530.73
rows=2897 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_10__performance_attribution_model_fk
(cost=0.00..50.15 rows=2897 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_11 ap_12 (cost=50.99..5555.96
rows=2911 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_11__performance_attribution_model_fk
(cost=0.00..50.26 rows=2911 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_12 ap_13 (cost=50.99..5558.25
rows=2912 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_12__performance_attribution_model_fk
(cost=0.00..50.27 rows=2912 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_13 ap_14 (cost=50.92..5539.91
rows=2902 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_13__performance_attribution_model_fk
(cost=0.00..50.19 rows=2902 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on acquisition_performance_14 ap_15 (cost=50.95..5548.79
rows=2907 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)

-> Bitmap Index Scan on
acquisition_performance_14__performance_attribution_model_fk
(cost=0.00..50.23 rows=2907 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
-> Sort
(cost=171982.20..172230.63 rows=99373 width=32) (never executed)
Sort Key:
rp.touchpoint_fk
-> Append
(cost=0.00..163733.96 rows=99373 width=32) (never executed)
-> Seq
Scan on reactivation_performance rp (cost=0.00..0.00 rows=1 width=32)
(never executed)

Filter: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_0 rp_1 (cost=111.52..10860.88
rows=6592 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_0__performance_attribution_model_fk
(cost=0.00..109.87 rows=6592 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_1 rp_2 (cost=111.11..10775.38
rows=6540 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_1__performance_attribution_model_fk
(cost=0.00..109.48 rows=6540 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_2 rp_3 (cost=111.49..10855.79
rows=6589 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_2__performance_attribution_model_fk
(cost=0.00..109.84 rows=6589 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_3 rp_4 (cost=111.30..10814.83
rows=6564 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_3__performance_attribution_model_fk
(cost=0.00..109.66 rows=6564 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_4 rp_5 (cost=111.62..10883.29
rows=6606 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_4__performance_attribution_model_fk
(cost=0.00..109.97 rows=6606 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_5 rp_6 (cost=119.65..11740.46
rows=7126 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_5__performance_attribution_model_fk
(cost=0.00..117.87 rows=7126 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_6 rp_7 (cost=110.50..10646.17
rows=6461 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_6__performance_attribution_model_fk
(cost=0.00..108.88 rows=6461 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_7 rp_8 (cost=111.42..10841.49
rows=6580 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_7__performance_attribution_model_fk
(cost=0.00..109.78 rows=6580 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_8 rp_9 (cost=111.04..10761.08
rows=6531 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_8__performance_attribution_model_fk
(cost=0.00..109.41 rows=6531 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_9 rp_10 (cost=116.87..11151.48
rows=6767 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_9__performance_attribution_model_fk
(cost=0.00..115.18 rows=6767 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_10 rp_11
(cost=110.49..10644.25 rows=6460 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_10__performance_attribution_model_fk
(cost=0.00..108.88 rows=6460 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_11 rp_12
(cost=117.28..11238.07 rows=6820 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_11__performance_attribution_model_fk
(cost=0.00..115.58 rows=6820 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_12 rp_13
(cost=117.45..11273.68 rows=6842 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_12__performance_attribution_model_fk
(cost=0.00..115.74 rows=6842 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_13 rp_14
(cost=109.69..10476.41 rows=6357 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_13__performance_attribution_model_fk
(cost=0.00..108.10 rows=6357 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
->
Bitmap Heap Scan on reactivation_performance_14 rp_15
(cost=111.09..10770.70 rows=6537 width=32) (never executed)

Recheck Cond: (performance_attribution_model_fk = 2)
->
Bitmap Index Scan on
reactivation_performance_14__performance_attribution_model_fk
(cost=0.00..109.45 rows=6537 width=0) (never executed)

Index Cond: (performance_attribution_model_fk = 2)
-> Bitmap Heap Scan on
converting_touchpoints_attribution conv
(cost=-2021924572970281.75..-2021924572970244.00 rows=1 width=10) (never
executed)
Recheck Cond:
((t.touchpoint_id = touchpoint_fk) AND (performance_attribution_model_fk =
2))
-> BitmapAnd
(cost=-2021924572970281.75..-2021924572970281.75 rows=1850 width=0) (never
executed)
-> Bitmap
Index Scan on converting_touchpoints_attribution__touchpoint_fk
(cost=0.00..-2021911688068401.00 rows=1850 width=0) (never executed)
Index
Cond: (t.touchpoint_id = touchpoint_fk)
-> Bitmap
Index Scan on
converting_touchpoints_attribution__performance_attribution_mod
(cost=0.00..-12884901880.97 rows=1850 width=0) (never executed)
Index
Cond: (performance_attribution_model_fk = 2)
-> Sort (cost=696479.79..707910.70 rows=4572361
width=6) (never executed)
Sort Key: cu.customer_id
-> Seq Scan on customer cu (cost=0.00..190673.61
rows=4572361 width=6) (never executed)
Planning time: 7.154 ms
Execution time: 6.358 ms

##############
# query (which is usually run in parallel for multiple day_fks):
##############

EXPLAIN ( ANALYSE, BUFFERS )
SELECT
-- dimensions
20170920 AS day_fk,

sendID_fk AS sendID_fk,
campaign_fk AS campaign_fk,

region_fk AS region_fk,
customer_segment_fk AS customer_segment_fk,

-- touchpoint
hll_union_agg(hll_add(hll_empty(14, 5), hll_hash_bigint(
visitor_id))) :: hll(14, 5) AS visitors,
hll_union_agg(hll_add(hll_empty(14, 5), hll_hash_bigint(
customer_fk))) :: hll(14, 5) AS customers,

sum(
number_of_touchpoints) AS number_of_touchpoints,
sum(
number_of_converting_touchpoints) AS
number_of_converting_touchpoints,

sum(
number_of_bounces) AS number_of_bounces,
sum(
number_of_sent) AS number_of_sent,
sum(
number_of_open) AS number_of_opens,
sum(
number_of_clicks) AS number_of_clicks,
-- this is https://github.com/citusdata/postgresql-hll
hll_union_agg(hll_add(hll_empty(12, 5),
hll_hash_integer(click_subscriber_fk))) :: hll
(12, 5) AS number_of_unique_clicks,
hll_union_agg(hll_add(hll_empty(12, 5),
hll_hash_integer(open_subscriber_fk))) :: hll
(12, 5) AS number_of_unique_opens,

sum(
number_of_net_orders) AS number_of_net_orders,
sum(
number_of_first_net_orders) AS number_of_first_net_orders,
sum(
number_of_recurring_net_orders) AS number_of_recurring_net_orders,
sum(
contribution_margin_1) AS contribution_margin_1,
sum(
net_revenue) AS net_revenue,
sum(
net_revenue_first_net_orders) AS net_revenue_first_net_orders,
sum(
net_revenue_recurring_net_orders) AS
net_revenue_recurring_net_orders,
sum(
promotion_discount_value) AS promotion_discount_value

FROM (
-- data from salesforce
SELECT
si.sendID_id AS sendID_fk,
cm.campaign_id AS campaign_fk,
-1 :: SMALLINT AS region_fk,
-1 :: SMALLINT AS customer_segment_fk,

NULL AS visitor_id,
NULL AS customer_fk,
NULL AS number_of_touchpoints,
NULL AS number_of_converting_touchpoints,

CASE WHEN et.event_type_name = 'Bounce'
THEN 1
ELSE 0 END AS number_of_bounces,
CASE WHEN et.event_type_name = 'Sent'
THEN 1
ELSE 0 END AS number_of_sent,
CASE WHEN et.event_type_name = 'Open'
THEN 1
ELSE 0 END AS number_of_open,
CASE WHEN et.event_type_name = 'Click'
THEN 1
ELSE 0 END AS number_of_clicks,

csu.subscriber_id AS click_subscriber_fk,
osu.subscriber_id AS open_subscriber_fk,

NULL AS number_of_net_orders,
NULL AS number_of_first_net_orders,
NULL AS number_of_recurring_net_orders,
NULL AS contribution_margin_1,
NULL AS net_revenue,
NULL AS net_revenue_first_net_orders,
NULL AS net_revenue_recurring_net_orders,
NULL AS promotion_discount_value

FROM sf_tmp.event ev
LEFT JOIN sf_dim.campaign cm
ON ev.campaign_name = cm.campaign_name
LEFT JOIN sf_dim.event_type et
ON ev.event_type = et.event_type_name
LEFT JOIN sf_dim.sendid si
ON ev.Sendid = si.sendid_name
LEFT JOIN sf_dim.subscriber osu
ON ev.open_subscriber_key = osu.subscriber_name
LEFT JOIN sf_dim.subscriber csu
ON ev.click_subscriber_key = csu.subscriber_name

WHERE ev.event_day_fk = 20171120

-- data from ad performance
UNION ALL
SELECT
si.sendid_id AS sendID_fk,
sendid_campaign_match.campaign_fk AS
campaign_fk,
t.region_fk,
COALESCE(cu.customer_segment_fk, -10),

t.visitor_id,
t.customer_fk,
t.number_of_touchpoints,
conv.converting_click :: INTEGER AS
number_of_converting_touchpoints,

NULL AS
number_of_bounces,
NULL AS
number_of_sent,
NULL AS
number_of_open,
NULL AS
number_of_clicks,

NULL AS
click_subscriber_fk,
NULL AS
open_subscriber_fk,

coalesce(ap.number_of_first_net_orders, 0.0) +
coalesce(rp.number_of_recurring_net_orders,
0.0) AS
number_of_net_orders,
ap.number_of_first_net_orders AS
number_of_first_net_orders,
rp.number_of_recurring_net_orders AS
number_of_recurring_net_orders,
coalesce(ap.contribution_margin_1_first_net_orders, 0.0) +
coalesce(rp.contribution_margin_1_recurring_net_orders,
0.0) AS
contribution_margin_1,
coalesce(ap.net_revenue_first_net_orders, 0.0) +
coalesce(rp.net_revenue_recurring_net_orders, 0.0) AS
net_revenue,
ap.net_revenue_first_net_orders AS
net_revenue_first_net_orders,
rp.net_revenue_recurring_net_orders AS
net_revenue_recurring_net_orders,
t.promotion_discount_value

FROM m_dim.touchpoint t
JOIN m_dim.ad
ON ad.ad_id = t.ad_fk AND ad.channel_name = 'Email'
LEFT JOIN sf_dim.sendid si
ON si.Sendid_name = ad.ad_group_name
LEFT JOIN (
SELECT DISTINCT
ev.sendid,
cm.campaign_id AS campaign_fk
FROM sf_tmp.event ev
LEFT JOIN sf_dim.campaign cm
ON ev.campaign_name = cm.campaign_name
WHERE EVENT_day_fk = 20171120 AND
ev.sendid IS NOT NULL) sendid_campaign_match
ON sendid_campaign_match.sendid = si.sendid_name
LEFT JOIN os_dim.customer cu
ON cu.customer_id = t.customer_fk
LEFT JOIN m_dim.acquisition_performance ap
ON ap.touchpoint_fk = t.touchpoint_id
AND ap.performance_attribution_model_fk = 2
LEFT JOIN m_dim.reactivation_performance rp
ON rp.touchpoint_fk = t.touchpoint_id
AND rp.performance_attribution_model_fk = 2
LEFT JOIN m_dim.converting_touchpoints_attribution conv
ON t.touchpoint_id = conv.touchpoint_fk
AND conv.performance_attribution_model_fk = 2
WHERE t.day_fk = 20171120 AND si.sendid_id IS NOT NULL AND
campaign_fk IS NOT NULL
) q

GROUP BY
sendID_fk,
campaign_fk,
region_fk,
customer_segment_fk;

##############
# On a different system it looks like this (much more sane):
##############

GroupAggregate (cost=384347.08..414413.11 rows=37349 width=254) (actual
time=5343.214..5417.604 rows=1194 loops=1)
Group Key: "*SELECT* 1".sendid_fk, "*SELECT* 1".campaign_fk,
('-1'::smallint), (('-1'::smallint)::integer)
Buffers: shared hit=421793 read=26153, temp read=1561 written=1717
-> Sort (cost=384347.08..385280.81 rows=373491 width=120) (actual
time=5343.180..5351.390 rows=55816 loops=1)
Sort Key: "*SELECT* 1".sendid_fk, "*SELECT* 1".campaign_fk,
('-1'::smallint), (('-1'::smallint)::integer)
Sort Method: external merge Disk: 2880kB
Buffers: shared hit=421793 read=26153, temp read=1561 written=1717
-> Append (cost=140964.58..319780.25 rows=373491 width=120)
(actual time=2319.179..5287.481 rows=55816 loops=1)
Buffers: shared hit=421787 read=26153, temp read=1201
written=1356
-> Subquery Scan on "*SELECT* 1" (cost=140964.58..155107.05
rows=373160 width=120) (actual time=2319.178..2358.269 rows=51664 loops=1)
Buffers: shared hit=19573 read=20783, temp read=1201
written=1356
-> Merge Right Join (cost=140964.58..150442.55
rows=373160 width=118) (actual time=2319.176..2350.994 rows=51664 loops=1)
Merge Cond: (et.event_type_name = ev.event_type)
Buffers: shared hit=19573 read=20783, temp
read=1201 written=1356
-> Sort (cost=90.93..94.20 rows=1310 width=32)
(actual time=1.088..1.090 rows=5 loops=1)
Sort Key: et.event_type_name
Sort Method: quicksort Memory: 25kB
Buffers: shared read=1
-> Seq Scan on event_type et
(cost=0.00..23.10 rows=1310 width=32) (actual time=1.065..1.066 rows=5
loops=1)
Buffers: shared read=1
-> Materialize (cost=140873.65..141158.50
rows=56971 width=17) (actual time=2318.081..2331.993 rows=51664 loops=1)
Buffers: shared hit=19573 read=20782, temp
read=1201 written=1356
-> Sort (cost=140873.65..141016.08
rows=56971 width=17) (actual time=2318.076..2323.706 rows=51664 loops=1)
Sort Key: ev.event_type
Sort Method: external merge Disk:
1312kB
Buffers: shared hit=19573 read=20782,
temp read=1201 written=1205
-> Hash Left Join
(cost=90861.89..135705.53 rows=56971 width=17) (actual
time=1897.747..2291.303 rows=51664 loops=1)
Hash Cond: (ev.campaign_name =
cm.campaign_name)
Buffers: shared hit=19573
read=20782, temp read=1037 written=1040
-> Hash Left Join
(cost=90858.44..134918.72 rows=56971 width=38) (actual
time=1897.709..2277.430 rows=51664 loops=1)
Hash Cond: (ev.sendid =
si.sendid_name)
Buffers: shared hit=19572
read=20782, temp read=1037 written=1040
-> Merge Right Join
(cost=90848.40..134190.85 rows=56971 width=42) (actual
time=1897.586..2263.942 rows=51664 loops=1)
Merge Cond:
(osu.subscriber_name = ev.open_subscriber_key)
Buffers: shared
hit=19571 read=20781, temp read=1037 written=1040
-> Index Scan using
subscriber__subscriber_name on subscriber osu (cost=0.43..39487.86
rows=1323362 width=36) (actual time=0.010..216.141 rows=1323194 loops=1)
Buffers:
shared hit=19562
-> Materialize
(cost=90847.98..91132.83 rows=56971 width=70) (actual
time=1897.564..1916.819 rows=51664 loops=1)
Buffers:
shared hit=9 read=20781, temp read=1037 written=1040
-> Sort
(cost=90847.98..90990.40 rows=56971 width=70) (actual
time=1897.561..1911.064 rows=51664 loops=1)
Sort
Key: ev.open_subscriber_key
Sort
Method: external merge Disk: 4112kB
Buffers:
shared hit=9 read=20781, temp read=1037 written=1040
->
Merge Right Join (cost=41811.94..85011.85 rows=56971 width=70) (actual
time=215.181..1861.479 rows=51664 loops=1)

Merge Cond: (csu.subscriber_name = ev.click_subscriber_key)

Buffers: shared hit=9 read=20781, temp read=523 written=523
->
Index Scan using subscriber__subscriber_name on subscriber csu
(cost=0.43..39487.86 rows=1323362 width=36) (actual time=0.005..1510.625
rows=1323194 loops=1)

Buffers: shared hit=9 read=19553
->
Materialize (cost=41778.04..42062.89 rows=56971 width=98) (actual
time=214.084..225.830 rows=51664 loops=1)

Buffers: shared read=1228, temp read=523 written=523

-> Sort (cost=41778.04..41920.47 rows=56971 width=98) (actual
time=214.080..220.578 rows=51664 loops=1)

Sort Key: ev.click_subscriber_key

Sort Method: external sort Disk: 4184kB

Buffers: shared read=1228, temp read=523 written=523

-> Index Scan using event__event_day_fk on event ev
(cost=0.56..35495.92 rows=56971 width=98) (actual time=3.877..192.397
rows=51664 loops=1)

Index Cond: (event_day_fk = 20171120)

Buffers: shared read=1228
-> Hash (cost=5.57..5.57
rows=357 width=7) (actual time=0.103..0.103 rows=357 loops=1)
Buckets: 1024
Batches: 1 Memory Usage: 22kB
Buffers: shared
hit=1 read=1
-> Seq Scan on
sendid si (cost=0.00..5.57 rows=357 width=7) (actual time=0.013..0.059
rows=357 loops=1)
Buffers:
shared hit=1 read=1
-> Hash (cost=2.09..2.09
rows=109 width=26) (actual time=0.032..0.032 rows=109 loops=1)
Buckets: 1024 Batches: 1
Memory Usage: 15kB
Buffers: shared hit=1
-> Seq Scan on campaign
cm (cost=0.00..2.09 rows=109 width=26) (actual time=0.007..0.013 rows=109
loops=1)
Buffers: shared
hit=1
-> Hash Join (cost=37715.40..164669.88 rows=331 width=120)
(actual time=264.900..2924.332 rows=4152 loops=1)
Hash Cond: (ad.ad_group_name = si_1.sendid_name)
Buffers: shared hit=402214 read=5370
-> Nested Loop Left Join (cost=37705.37..164655.25
rows=37 width=115) (actual time=264.770..2919.386 rows=4152 loops=1)
Buffers: shared hit=402212 read=5370
-> Nested Loop Left Join
(cost=37705.37..163946.79 rows=16 width=99) (actual time=210.937..2437.542
rows=4152 loops=1)
Buffers: shared hit=214029 read=5076
-> Nested Loop Left Join
(cost=37705.37..163597.96 rows=8 width=75) (actual time=173.726..2018.663
rows=4152 loops=1)
Buffers: shared hit=27013 read=4975
-> Nested Loop Left Join
(cost=37704.81..163579.72 rows=8 width=73) (actual time=96.881..1909.229
rows=4152 loops=1)
Buffers: shared hit=9961
read=4896
-> Hash Join
(cost=37704.38..163562.73 rows=8 width=71) (actual time=96.873..1877.702
rows=4152 loops=1)
Hash Cond:
(ad.ad_group_name = sendid_campaign_match.sendid)
Buffers: shared hit=1232
read=4896
-> Hash Join
(cost=304.31..126040.79 rows=38 width=63) (actual time=60.935..1839.130
rows=4285 loops=1)
Hash Cond: (t.ad_fk
= ad.ad_id)
Buffers: shared
hit=3 read=4896
-> Append
(cost=0.00..124157.87 rows=125038 width=44) (actual time=48.277..1810.384
rows=123117 loops=1)
Buffers:
shared read=4855
-> Seq Scan
on touchpoint t (cost=0.00..0.00 rows=1 width=44) (actual time=0.002..0.002
rows=0 loops=1)
Filter:
(day_fk = 20171120)
-> Index Scan
using touchpoint_0__day_fk on touchpoint_0 t_1 (cost=0.43..7616.82
rows=7654 width=44) (actual time=48.273..237.069 rows=8295 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=331
-> Index Scan
using touchpoint_1__day_fk on touchpoint_1 t_2 (cost=0.43..8099.65
rows=8152 width=44) (actual time=3.415..83.608 rows=8257 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=341
-> Index Scan
using touchpoint_2__day_fk on touchpoint_2 t_3 (cost=0.43..8207.70
rows=8262 width=44) (actual time=3.172..49.089 rows=8168 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=325
-> Index Scan
using touchpoint_3__day_fk on touchpoint_3 t_4 (cost=0.43..8639.32
rows=8712 width=44) (actual time=3.443..141.148 rows=8377 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=330
-> Index Scan
using touchpoint_4__day_fk on touchpoint_4 t_5 (cost=0.43..8540.24
rows=8608 width=44) (actual time=3.038..147.760 rows=8197 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=314
-> Index Scan
using touchpoint_5__day_fk on touchpoint_5 t_6 (cost=0.43..7897.13
rows=7940 width=44) (actual time=3.870..42.844 rows=8264 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=324
-> Index Scan
using touchpoint_6__day_fk on touchpoint_6 t_7 (cost=0.43..8156.89
rows=8211 width=44) (actual time=3.439..144.567 rows=8194 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=328
-> Index Scan
using touchpoint_7__day_fk on touchpoint_7 t_8 (cost=0.43..8830.66
rows=8908 width=44) (actual time=4.362..143.630 rows=8068 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=322
-> Index Scan
using touchpoint_8__day_fk on touchpoint_8 t_9 (cost=0.43..9695.86
rows=9808 width=44) (actual time=3.337..142.971 rows=8273 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=329
-> Index Scan
using touchpoint_9__day_fk on touchpoint_9 t_10 (cost=0.43..8124.32
rows=8179 width=44) (actual time=3.349..150.226 rows=8167 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=325
-> Index Scan
using touchpoint_10__day_fk on touchpoint_10 t_11 (cost=0.43..8356.39
rows=8418 width=44) (actual time=4.030..39.337 rows=8233 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=325
-> Index Scan
using touchpoint_11__day_fk on touchpoint_11 t_12 (cost=0.43..7450.94
rows=7481 width=44) (actual time=3.529..45.088 rows=8140 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=319
-> Index Scan
using touchpoint_12__day_fk on touchpoint_12 t_13 (cost=0.43..7753.21
rows=7790 width=44) (actual time=3.935..153.074 rows=8131 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=313
-> Index Scan
using touchpoint_13__day_fk on touchpoint_13 t_14 (cost=0.43..8589.00
rows=8660 width=44) (actual time=3.264..145.147 rows=8255 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=318
-> Index Scan
using touchpoint_14__day_fk on touchpoint_14 t_15 (cost=0.43..8199.74
rows=8254 width=44) (actual time=2.911..135.576 rows=8098 loops=1)
Index
Cond: (day_fk = 20171120)
Buffers:
shared read=311
-> Hash
(cost=300.40..300.40 rows=313 width=35) (actual time=11.881..11.881
rows=1145 loops=1)
Buckets: 2048
(originally 1024) Batches: 1 (originally 1) Memory Usage: 109kB
Buffers:
shared read=41
-> Index Scan
using ad__channel_name on ad (cost=0.42..300.40 rows=313 width=35) (actual
time=2.580..11.649 rows=1145 loops=1)
Index
Cond: (channel_name = 'Email'::text)
Buffers:
shared read=41
-> Hash
(cost=37079.88..37079.88 rows=25615 width=8) (actual time=35.890..35.890
rows=115 loops=1)
Buckets: 32768
Batches: 1 Memory Usage: 261kB
Buffers: shared
hit=1229
-> Subquery Scan on
sendid_campaign_match (cost=36567.58..37079.88 rows=25615 width=8) (actual
time=35.713..35.857 rows=115 loops=1)
Buffers:
shared hit=1229
->
HashAggregate (cost=36567.58..36823.73 rows=25615 width=8) (actual
time=35.712..35.843 rows=115 loops=1)
Group
Key: ev_1.sendid, cm_1.campaign_id
Buffers:
shared hit=1229
-> Hash
Join (cost=4.02..36282.72 rows=56971 width=8) (actual time=0.071..25.206
rows=51664 loops=1)

Hash Cond: (ev_1.campaign_name = cm_1.campaign_name)

Buffers: shared hit=1229
->
Index Scan using event__event_day_fk on event ev_1 (cost=0.56..35495.92
rows=56971 width=29) (actual time=0.024..12.175 rows=51664 loops=1)

Index Cond: (event_day_fk = 20171120)

Filter: (sendid IS NOT NULL)

Buffers: shared hit=1228
->
Hash (cost=2.09..2.09 rows=109 width=26) (actual time=0.038..0.038
rows=109 loops=1)

Buckets: 1024 Batches: 1 Memory Usage: 15kB

Buffers: shared hit=1

-> Seq Scan on campaign cm_1 (cost=0.00..2.09 rows=109 width=26)
(actual time=0.010..0.020 rows=109 loops=1)

Filter: (campaign_id IS NOT NULL)

Buffers: shared hit=1
-> Index Scan using
customer_pkey on customer cu (cost=0.43..2.12 rows=1 width=6) (actual
time=0.007..0.007 rows=1 loops=4152)
Index Cond: (customer_id =
t.customer_fk)
Buffers: shared hit=8729
-> Index Scan using
converting_touchpoints_attribution__touchpoint_fk_performance_a on
converting_touchpoints_attribution conv (cost=0.56..2.27 rows=1 width=10)
(actual time=0.026..0.026 rows=0 loops=4152)
Index Cond: ((t.touchpoint_id =
touchpoint_fk) AND (performance_attribution_model_fk = 2))
Buffers: shared hit=17052
read=79
-> Append (cost=0.00..43.44 rows=16
width=32) (actual time=0.099..0.099 rows=0 loops=4152)
Buffers: shared hit=187016 read=101
-> Seq Scan on
acquisition_performance ap (cost=0.00..0.00 rows=1 width=32) (actual
time=0.000..0.000 rows=0 loops=4152)
Filter:
((performance_attribution_model_fk = 2) AND (touchpoint_fk =
t.touchpoint_id))
-> Index Scan using
acquisition_performance_0__touchpoint_fk on acquisition_performance_0 ap_1
(cost=0.42..2.90 rows=1 width=32) (actual time=0.027..0.027 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12456
read=9
-> Index Scan using
acquisition_performance_1__touchpoint_fk on acquisition_performance_1 ap_2
(cost=0.42..2.90 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12500
read=7
-> Index Scan using
acquisition_performance_2__touchpoint_fk on acquisition_performance_2 ap_3
(cost=0.42..2.90 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12451
read=6
-> Index Scan using
acquisition_performance_3__touchpoint_fk on acquisition_performance_3 ap_4
(cost=0.42..2.90 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12455
read=8
-> Index Scan using
acquisition_performance_4__touchpoint_fk on acquisition_performance_4 ap_5
(cost=0.42..2.90 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12480
read=9
-> Index Scan using
acquisition_performance_5__touchpoint_fk on acquisition_performance_5 ap_6
(cost=0.42..2.90 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Buffers: shared hit=12451
read=5
-> Index Scan using
acquisition_performance_6__touchpoint_fk on acquisition_performance_6 ap_7
(cost=0.42..2.90 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Buffers: shared hit=12516
read=6
-> Index Scan using
acquisition_performance_7__touchpoint_fk on acquisition_performance_7 ap_8
(cost=0.42..2.90 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12451
read=6
-> Index Scan using
acquisition_performance_8__touchpoint_fk on acquisition_performance_8 ap_9
(cost=0.42..2.89 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12455
read=8
-> Index Scan using
acquisition_performance_9__touchpoint_fk on acquisition_performance_9 ap_10
(cost=0.42..2.89 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12473
read=7
-> Index Scan using
acquisition_performance_10__touchpoint_fk on acquisition_performance_10
ap_11 (cost=0.42..2.89 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Buffers: shared hit=12451
read=5
-> Index Scan using
acquisition_performance_11__touchpoint_fk on acquisition_performance_11
ap_12 (cost=0.42..2.90 rows=1 width=32) (actual time=0.027..0.027 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12451
read=6
-> Index Scan using
acquisition_performance_12__touchpoint_fk on acquisition_performance_12
ap_13 (cost=0.42..2.89 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12523
read=8
-> Index Scan using
acquisition_performance_13__touchpoint_fk on acquisition_performance_13
ap_14 (cost=0.42..2.89 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Buffers: shared hit=12451
read=5
-> Index Scan using
acquisition_performance_14__touchpoint_fk on acquisition_performance_14
ap_15 (cost=0.42..2.89 rows=1 width=32) (actual time=0.003..0.003 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12452
read=6
-> Append (cost=0.00..44.12 rows=16 width=32)
(actual time=0.105..0.115 rows=0 loops=4152)
Buffers: shared hit=188183 read=294
-> Seq Scan on reactivation_performance rp
(cost=0.00..0.00 rows=1 width=32) (actual time=0.000..0.000 rows=0
loops=4152)
Filter:
((performance_attribution_model_fk = 2) AND (touchpoint_fk =
t.touchpoint_id))
-> Index Scan using
reactivation_performance_0__touchpoint_fk on reactivation_performance_0 rp_1
(cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12549 read=20
-> Index Scan using
reactivation_performance_1__touchpoint_fk on reactivation_performance_1 rp_2
(cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12574 read=21
-> Index Scan using
reactivation_performance_2__touchpoint_fk on reactivation_performance_2 rp_3
(cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12544 read=20
-> Index Scan using
reactivation_performance_3__touchpoint_fk on reactivation_performance_3 rp_4
(cost=0.43..2.94 rows=1 width=32) (actual time=0.005..0.005 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12552 read=19
-> Index Scan using
reactivation_performance_4__touchpoint_fk on reactivation_performance_4 rp_5
(cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12516 read=18
-> Index Scan using
reactivation_performance_5__touchpoint_fk on reactivation_performance_5 rp_6
(cost=0.43..2.95 rows=1 width=32) (actual time=0.028..0.028 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12562 read=21
-> Index Scan using
reactivation_performance_6__touchpoint_fk on reactivation_performance_6 rp_7
(cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12530 read=18
-> Index Scan using
reactivation_performance_7__touchpoint_fk on reactivation_performance_7 rp_8
(cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12535 read=19
-> Index Scan using
reactivation_performance_8__touchpoint_fk on reactivation_performance_8 rp_9
(cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12529 read=20
-> Index Scan using
reactivation_performance_9__touchpoint_fk on reactivation_performance_9
rp_10 (cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12561 read=19
-> Index Scan using
reactivation_performance_10__touchpoint_fk on reactivation_performance_10
rp_11 (cost=0.43..2.94 rows=1 width=32) (actual time=0.028..0.028 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12533 read=21
-> Index Scan using
reactivation_performance_11__touchpoint_fk on reactivation_performance_11
rp_12 (cost=0.43..2.95 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12591 read=20
-> Index Scan using
reactivation_performance_12__touchpoint_fk on reactivation_performance_12
rp_13 (cost=0.43..2.95 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12527 read=18
-> Index Scan using
reactivation_performance_13__touchpoint_fk on reactivation_performance_13
rp_14 (cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12531 read=20
-> Index Scan using
reactivation_performance_14__touchpoint_fk on reactivation_performance_14
rp_15 (cost=0.43..2.94 rows=1 width=32) (actual time=0.004..0.004 rows=0
loops=4152)
Index Cond: (touchpoint_fk =
t.touchpoint_id)
Filter:
(performance_attribution_model_fk = 2)
Rows Removed by Filter: 0
Buffers: shared hit=12549 read=20
-> Hash (cost=5.57..5.57 rows=357 width=7) (actual
time=0.105..0.105 rows=357 loops=1)
Buckets: 1024 Batches: 1 Memory Usage: 22kB
Buffers: shared hit=2
-> Seq Scan on sendid si_1 (cost=0.00..5.57
rows=357 width=7) (actual time=0.014..0.057 rows=357 loops=1)
Filter: (sendid_id IS NOT NULL)
Buffers: shared hit=2
Planning time: 635.005 ms
Execution time: 5423.894 ms

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Alvaro Herrera 2017-12-05 12:39:29 Re: BUG #14948: cost overflow
Previous Message Thomas Munro 2017-12-05 01:35:07 Re: BUG in 10.1 - dsa_area could not attach to a segment that has been freed