explain.depesz.com

PostgreSQL's explain analyze made readable

Result: XHM5

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

Gather Motion 128:1 (slice40; segments: 128) (cost=379,319.14..379,319.33 rows=19 width=6,677) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

HashAggregate (cost=379,319.14..379,319.33 rows=1 width=6,677) (actual rows= loops=)

  • Group By: organization_data.organization_code, "?column2?", pll.quantity_received, wen.wip_entity_name, "?column5?", "?column6?", "?column7?", "?column8?", "?column9?", "?column10?", "?column11?", fnu2.description, aps.segment1, "?column14?", ph.segment1, pl.line_num, "?column17?", misd.subinventory_code, msib.segment1, "?column20?", pl.item_description, organization_data.organization_name, "?column23?", pl.unit_price, "?column25?", "?column26?", "?column27?", lmbc.meaning, msib.minimum_order_quantity, msib.maximum_order_quantity, "?column31?", msib.planner_code, user_names.person_id, "?column34?", abc_classes.abc_class_name, "?column36?", lity.meaning, "?column38?", "?column39?", "?column40?", "?column41?", organization_data.organization_name, "?column43?", msib.planner_code, sup.exception_message, "?column46?", sup.exception_type, "?column48?", sup.order_type, "?column50?", "?column51?", "?column52?", "?column53?", "?column54?", "?column55?", "?column56?", "?column57?", "?column58?", "?column59?", "?column60?", "?column61?", apss.vendor_site_code, "?column63?", "?column64?", "?column65?", "?column66?", "?column67?", "?column68?", "?column69?", "?column70?", "?column71?", "?column72?", "?column73?", "?column74?", "?column75?", "?column76?", "?column77?", "?column78?", pll.closed_code, "?column80?", lity.meaning, ph.type_lookup_code, pll.shipment_num, ph.currency_code, "?column85?", r.segment1, "?column87?", "?column88?", "?column89?", "?column90?", ppa.name, "?column92?", ppa.segment1, "?column94?", "?column95?", "?column96?", "?column97?", "?column98?", onbd.need_by_date, "?column100?", "?column101?", "?column102?", "?column103?", "?column104?", "?column105?", "?column106?", "?column107?", "?column108?", "?column109?", pll.unit_meas_lookup_code, "?column111?", mos_ext.supplier_ready_to_ship, mos_ext.leg_1_scheduled_pickup, mos_ext.leg_1_actual_pickup, mos_ext.leg_1_scheduled_delivery, mos_ext.leg_1_actual_delivery, mos_ext.leg_2_scheduled_pickup, mos_ext.leg_2_actual_pickup, mos_ext.leg_2_scheduled_delivery, mos_ext.leg_2_actual_delivery, mos_ext.leg_3_scheduled_pickup, mos_ext.leg_3_actual_pickup, mos_ext.leg_3_scheduled_delivery, mos_ext.leg_3_actual_delivery
3. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice39; segments: 128) (cost=329,112.76..379,313.06 rows=1 width=6,677) (actual rows= loops=)

  • Hash Key: organization_data.organization_code, unnamed_attr_2, pll.quantity_received, wen.wip_entity_name, unnamed_attr_5, unnamed_attr_5, unnamed_attr_5, unnamed_attr_5, unnamed_attr_5, unnamed_attr_5, unnamed_attr_11, fnu2.description, aps.segment1, unnamed_attr_5, ph.segment1, pl.line_num, unnamed_attr_5, misd.subinventory_code, msib.segment1, unnamed_attr_20, pl.item_description, organization_data.organization_name, unnamed_attr_20, pl.unit_price, unnamed_attr_25, unnamed_attr_26, unnamed_attr_5, lmbc.meaning, msib.minimum_order_quantity, msib.maximum_order_quantity, unnamed_attr_5, msib.planner_code, user_names.person_id, unnamed_attr_5, abc_classes.abc_class_name, unnamed_attr_36, lity.meaning, unnamed_attr_38, unnamed_attr_39, unnamed_attr_40, unnamed_attr_41, organization_data.organization_name, unnamed_attr_43, msib.planner_code, sup.exception_message, unnamed_attr_5, sup.exception_type, unnamed_attr_48, sup.order_type, unnamed_attr_50, unnamed_attr_51, unnamed_attr_52, unnamed_attr_53, unnamed_attr_51, unnamed_attr_55, unnamed_attr_56, unnamed_attr_57, unnamed_attr_58, unnamed_attr_59, unnamed_attr_60, unnamed_attr_5, apss.vendor_site_code, unnamed_attr_63, unnamed_attr_64, unnamed_attr_65, unnamed_attr_66, unnamed_attr_5, unnamed_attr_5, unnamed_attr_69, unnamed_attr_70, unnamed_attr_5, unnamed_attr_72, unnamed_attr_73, unnamed_attr_74, unnamed_attr_75, unnamed_attr_76, unnamed_attr_77, unnamed_attr_78, pll.closed_code, unnamed_attr_80, lity.meaning, ph.type_lookup_code, pll.shipment_num, ph.currency_code, unnamed_attr_85, r.segment1, unnamed_attr_87, unnamed_attr_88, unnamed_attr_5, unnamed_attr_5, ppa.name, unnamed_attr_5, ppa.segment1, unnamed_attr_94, unnamed_attr_95, unnamed_attr_5, unnamed_attr_5, unnamed_attr_5, onbd.need_by_date, unnamed_attr_100, unnamed_attr_85, unnamed_attr_85, unnamed_attr_103, unnamed_attr_104, unnamed_attr_103, unnamed_attr_103, unnamed_attr_107, unnamed_attr_108, unnamed_attr_103, pll.unit_meas_lookup_code, unnamed_attr_111, mos_ext.supplier_ready_to_ship, mos_ext.leg_1_scheduled_pickup, mos_ext.leg_1_actual_pickup, mos_ext.leg_1_scheduled_delivery, mos_ext.leg_1_actual_delivery, mos_ext.leg_2_scheduled_pickup, mos_ext.leg_2_actual_pickup, mos_ext.leg_2_scheduled_delivery, mos_ext.leg_2_actual_delivery, mos_ext.leg_3_scheduled_pickup, mos_ext.leg_3_actual_pickup, mos_ext.leg_3_scheduled_delivery, mos_ext.leg_3_actual_delivery
4. 0.000 0.000 ↓ 0.0

HashAggregate (cost=329,112.76..379,312.68 rows=1 width=6,677) (actual rows= loops=)

  • Group By: organization_data.organization_code, pll.need_by_date::date, pll.quantity_received, wen.wip_entity_name, NULL::text, NULL::text, NULL::text, NULL::text, NULL::text, NULL::text, pll.creation_date::date, fnu2.description, aps.segment1, NULL::text, ph.segment1, pl.line_num, NULL::text, misd.subinventory_code, msib.segment1, round(pll.quantity, 3), pl.item_description, organization_data.organization_name, round(pll.quantity, 3), pl.unit_price, pll.quantity * pl.unit_price, CASE WHEN length(btrim(pasup.vendor_name::text)) = 0 OR pasup.vendor_name IS NULL THEN 'No Source'::character varying ELSE pasup.vendor_name END, NULL::text, lmbc.meaning, msib.minimum_order_quantity, msib.maximum_order_quantity, NULL::text, msib.planner_code, user_names.person_id, NULL::text, abc_classes.abc_class_name, COALESCE(pasup.processing_lead_time, COALESCE(msib.full_lead_time, 0::numeric)), lity.meaning, COALESCE(msib.postprocessing_lead_time, 0::numeric), COALESCE(pasup.processing_lead_time, COALESCE(msib.full_lead_time, 0::numeric)) + msc_si.postprocessing_lead_time::numeric, round(COALESCE(material_cost.item_cost, 0::numeric), 2), 1, organization_data.organization_name, CASE WHEN user_names.full_name IS NULL OR length(btrim(user_names.full_name::text)) = 0 THEN 'Not Assigned'::character varying ELSE user_names.full_name END, msib.planner_code, sup.exception_message, NULL::text, sup.exception_type, CASE WHEN date_part('dow'::text, (CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END, sup.order_type, CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END, round(CASE WHEN sup.new_order_quantity IS NOT NULL THEN sup.new_order_quantity ELSE (pll.quantity - pll.quantity_received - pll.quantity_cancelled)::double precision END::numeric, 3), CASE WHEN ph.currency_code::text = 'USD'::text THEN 1::double precision WHEN curr_ref.from_currency IS NULL THEN 1::double precision ELSE curr_ref.conversion_rate END, pll.promised_date::date, round(CASE WHEN sup.new_order_quantity IS NOT NULL THEN sup.new_order_quantity ELSE (pll.quantity - pll.quantity_received - pll.quantity_cancelled)::double precision END::numeric, 3), pl.unit_price::double precision * CASE WHEN ph.currency_code::text = 'USD'::text THEN 1::double precision WHEN curr_ref.from_currency IS NULL THEN 1::double precision ELSE curr_ref.conversion_rate END, round(COALESCE(material_cost.item_cost, 0::numeric) * CASE WHEN organization_data.currency_code::text = 'USD'::text THEN 1::double precision WHEN curr_ref_org.from_currency IS NULL THEN 1::double precision ELSE curr_ref_org.conversion_rate END::numeric, 2), round((pl.unit_price::double precision * CASE WHEN sup.new_order_quantity IS NOT NULL THEN sup.new_order_quantity ELSE (pll.quantity - pll.quantity_received - pll.quantity_cancelled)::double precision END)::numeric, 3), round(COALESCE(material_cost.item_cost, 0::numeric) * CASE WHEN sup.new_order_quantity IS NOT NULL THEN sup.new_order_quantity ELSE (pll.quantity - pll.quantity_received - pll.quantity_cancelled)::double precision END::numeric, 2), round((pl.unit_price::double precision * CASE WHEN sup.new_order_quantity IS NOT NULL THEN sup.new_order_quantity ELSE (pll.quantity - pll.quantity_received - pll.quantity_cancelled)::double precision END * CASE WHEN ph.currency_code::text = 'USD'::text THEN 1::double precision WHEN curr_ref.from_currency IS NULL THEN 1::double precision ELSE curr_ref.conversion_rate END)::numeric, 3), round(COALESCE(material_cost.item_cost, 0::numeric) * CASE WHEN sup.new_order_quantity IS NOT NULL THEN sup.new_order_quantity ELSE (pll.quantity - pll.quantity_received - pll.quantity_cancelled)::double precision END::numeric * CASE WHEN organization_data.currency_code::text = 'USD'::text THEN 1::double precision WHEN curr_ref_org.from_currency IS NULL THEN 1::double precision ELSE curr_ref_org.conversion_rate END::numeric, 2), NULL::text, apss.vendor_site_code, CASE WHEN '2019-03-08'::date > CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END THEN '2019-03-08'::date - CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END ELSE 0 END, CASE WHEN ('2019-03-08'::date - CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END) >= 60 THEN '60+'::text WHEN ('2019-03-08'::date - CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END) >= 30 THEN '30+'::text WHEN ('2019-03-08'::date - CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END) >= 1 THEN '<30'::text ELSE 'Future'::text END, CASE WHEN (COALESCE(pasup.processing_lead_time, COALESCE(msib.full_lead_time, 0::numeric))::integer - (pll.need_by_date::date - pll.creation_date::date)) > 0 THEN 'Yes'::text ELSE 'No'::text END, CASE WHEN (COALESCE(pasup.processing_lead_time, COALESCE(msib.full_lead_time, 0::numeric))::integer - (pll.need_by_date::date - pll.creation_date::date)) > 0 THEN COALESCE(pasup.processing_lead_time, COALESCE(msib.full_lead_time, 0::numeric))::integer - (pll.need_by_date::date - pll.creation_date::date) ELSE 0 END, NULL::text, NULL::text, CASE sup.exception_message WHEN 'Cancel process'::text THEN 1 WHEN 'Reschedule in'::text THEN 2 WHEN 'Reschedule out'::text THEN 3 WHEN 'Overdue'::text THEN 4 WHEN 'Finish date in the past'::text THEN 5 WHEN 'No Exceptions'::text THEN 6 WHEN 'Excess in individual segment'::text THEN 7 ELSE 0 END, CASE WHEN sup.exception_message = 'Cancel process'::text THEN 'Cancel process'::text WHEN CASE WHEN sup.exception_message = 'Reschedule in'::text OR sup.exception_message = 'Reschedule out'::text THEN CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END < '2019-03-08'::date THEN 'Overdue'::text WHEN sup.exception_message IS NULL THEN 'No Exception'::text WHEN sup.exception_message IS NOT NULL THEN CASE WHEN sup.exception_message = 'Reschedule in'::text THEN 'Reschedule in'::text WHEN sup.exception_message = 'Reschedule out'::text THEN 'Reschedule out'::text WHEN sup.exception_message = 'Cancel process'::text THEN 'Cancel process'::text WHEN sup.exception_message = 'None'::text THEN 'No Exception'::text ELSE 'No Exception'::text END ELSE 'Other'::text END, NULL::text, CASE WHEN aps.vendor_name IS NULL OR length(btrim(aps.vendor_name::text)) = 0 THEN 'No Source'::character varying ELSE aps.vendor_name END, (pll.quantity * pl.unit_price)::double precision * CASE WHEN ph.currency_code::text = 'USD'::text THEN 1::double precision WHEN curr_ref.from_currency IS NULL THEN 1::double precision ELSE curr_ref.conversion_rate END, 'racesbi_ods'::text, 'N/A'::text, '2019-03-08 12:31:17.271077'::timestamp without time zone, CASE WHEN sup.exception_message = 'Cancel process'::text THEN 'Action Required'::text WHEN CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END > '2019-03-08'::date THEN CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END < '2019-03-01'::date THEN 'Action Required'::text WHEN (CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END - CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END > '2019-03-08'::date THEN CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END) > 7 THEN 'Action Required'::text WHEN (date_part('year'::text, CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END::timestamp without time zone)::text || date_part('quarter'::text, CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END::timestamp without time zone)::text) > (date_part('year'::text, CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END::timestamp without time zone)::text || date_part('quarter'::text, CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END::timestamp without time zone)::text) OR (date_part('year'::text, (CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END + CASE WHEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE apt.due_days END < 5::numeric THEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE apt.due_days END ELSE CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE apt.due_days END + (floor(CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE apt.due_days END::numeric(18,0) / 5::numeric) * 2::numeric)::numeric(18,0) END::integer)::timestamp without time zone)::text || date_part('quarter'::text, (CASE WHEN sup.exception_message = 'None'::text OR sup.exception_message IS NULL OR sup.exception_message = 'Cancel process'::text THEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END WHEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END > '2019-03-08'::date THEN CASE WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 6::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 1 WHEN date_part('dow'::text, (sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer))::timestamp without time zone) = 0::double precision THEN sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) - 2 ELSE sup.new_dock_date::date + (COALESCE(msib.postprocessing_lead_time, 0::numeric)::integer + ((subplan))::integer) END WHEN CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END >= '2019-03-08'::date THEN '2019-03-08'::date ELSE CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END END + CASE WHEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END < 5::numeric THEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END ELSE CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END + (floor(CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END::numeric(18,0) / 5::numeric) * 2::numeric)::numeric(18,0) END::integer)::timestamp without time zone)::text) > (date_part('year'::text, (CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END + CASE WHEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END < 5::numeric THEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END ELSE CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END + (floor(CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END::numeric(18,0) / 5::numeric) * 2::numeric)::numeric(18,0) END::integer)::timestamp without time zone)::text || date_part('quarter'::text, (CASE WHEN pll.promised_date IS NOT NULL THEN pll.promised_date::date ELSE pll.need_by_date::date END + CASE WHEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END < 5::numeric THEN CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END ELSE CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END + (floor(CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END::numeric(18,0) / 5::numeric) * 2::numeric)::numeric(18,0) END::integer)::timestamp without time zone)::text) THEN 'Action Required'::text ELSE 'No Error'::text END, CASE WHEN apt.due_days = 0::numeric THEN 30::numeric ELSE COALESCE(apt.due_days, 30::numeric) END, pll.closed_code, 'Not Assigned'::text, lity.meaning, ph.type_lookup_code, pll.shipment_num, ph.currency_code, NULL::date, r.segment1, CASE WHEN lmpc.meaning IS NULL OR length(btrim(lmpc.meaning::text)) = 0 THEN 'Not Assigned'::character varying ELSE lmpc.meaning END, CASE WHEN ph.type_lookup_code::text = 'BLANKET'::text THEN CASE WHEN ph.approved_flag::text = 'Y'::text AND pll.approved_flag::text = 'Y'::text AND pra.approved_flag::text = 'Y'::text THEN 'Approved'::text WHEN ph.approved_flag::text = 'F'::text OR pll.approved_flag::text = 'F'::text OR pra.approved_flag::text = 'F'::text THEN 'Rejected'::text WHEN ph.approved_flag::text = 'R'::text OR pll.approved_flag::text = 'R'::text OR pra.approved_flag::text = 'R'::text THEN 'Requires Approval'::text ELSE 'In Process'::text END ELSE CASE WHEN ph.approved_flag::text = 'Y'::text AND pll.approved_flag::text = 'Y'::text THEN 'Approved'::text WHEN ph.approved_flag::text = 'F'::text OR pll.approved_flag::text = 'F'::text THEN 'Rejected'::text WHEN ph.approved_flag::text = 'R'::text OR pll.approved_flag::text = 'R'::text THEN 'Requires Approval'::text ELSE 'In Process'::text END END, NULL::text, NULL::text, ppa.name, NULL::text, ppa.segment1, COALESCE(ph.attribute2, 'Not assigned'::character varying), pra.release_num::character varying, NULL::text, NULL::text, NULL::text, onbd.need_by_date, NULL::numeric, NULL::date, NULL::date, NULL::character varying, CASE WHEN sup.order_type = ANY ('{8,11,12}'::double precision[]) THEN 'LA'::character varying ELSE NULL::character varying END, NULL::character varying, NULL::character varying, CASE WHEN length(pll.attribute1::text) = 9 AND ("substring"(pll.attribute1::text, 4, 3) = ANY ('{JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC}'::text[])) THEN to_char(to_date(pll.attribute1::text, 'dd-mon-yy'::text)::timestamp with time zone, 'yyyy-mm-dd'::text)::character varying WHEN length(pll.attribute1::text) = 11 AND ("substring"(pll.attribute1::text, 4, 3) = ANY ('{JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC}'::text[])) THEN to_char(to_date(pll.attribute1::text, 'dd-mon-yyyy'::text)::timestamp with time zone, 'yyyy-mm-dd'::text)::character varying ELSE pll.attribute1 END, CASE WHEN length(pll.attribute2::text) = 9 AND ("substring"(pll.attribute2::text, 4, 3) = ANY ('{JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC}'::text[])) THEN to_char(to_date(pll.attribute2::text, 'dd-mon-yy'::text)::timestamp with time zone, 'yyyy-mm-dd'::text)::character varying WHEN length(pll.attribute2::text) = 11 AND ("substring"(pll.attribute2::text, 4, 3) = ANY ('{JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC}'::text[])) THEN to_char(to_date(pll.attribute2::text, 'dd-mon-yyyy'::text)::timestamp with time zone, 'yyyy-mm-dd'::text)::character varying ELSE pll.attribute2 END, NULL::character varying, pll.unit_meas_lookup_code, COALESCE(enovia.qual_status, 'Not Qualified'::character varying), mos_ext.supplier_ready_to_ship, mos_ext.leg_1_scheduled_pickup, mos_ext.leg_1_actual_pickup, mos_ext.leg_1_scheduled_delivery, mos_ext.leg_1_actual_delivery, mos_ext.leg_2_scheduled_pickup, mos_ext.leg_2_actual_pickup, mos_ext.leg_2_scheduled_delivery, mos_ext.leg_2_actual_delivery, mos_ext.leg_3_scheduled_pickup, mos_ext.leg_3_actual_pickup, mos_ext.leg_3_scheduled_delivery, mos_ext.leg_3_actual_delivery
5. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=278,262.03..329,106.81 rows=1 width=4,879) (actual rows= loops=)

  • Hash Cond: ph.po_header_id = onbd.po_header_id AND pll.line_location_id = onbd.line_location_id
6. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice38; segments: 128) (cost=261,575.30..261,661.57 rows=1 width=4,935) (actual rows= loops=)

  • Hash Key: ph.po_header_id
7. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=261,575.30..261,661.19 rows=1 width=4,935) (actual rows= loops=)

  • Hash Cond: ph.created_by = fnu.user_id
8. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=261,571.41..261,657.05 rows=1 width=4,967) (actual rows= loops=)

  • Hash Cond: pll.created_by = fnu2.user_id
9. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=261,567.52..261,652.92 rows=1 width=4,501) (actual rows= loops=)

  • Hash Cond: ph.currency_code::text = curr_ref.from_currency::text
10. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice34; segments: 128) (cost=261,468.51..261,553.66 rows=1 width=4,489) (actual rows= loops=)

  • Hash Key: ph.currency_code::text
11. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=261,468.51..261,553.28 rows=1 width=4,489) (actual rows= loops=)

  • Hash Cond: organization_data.currency_code::text = curr_ref_org.from_currency::text
12. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice32; segments: 128) (cost=261,369.50..261,453.99 rows=1 width=4,477) (actual rows= loops=)

  • Hash Key: organization_data.currency_code::text
13. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=261,369.50..261,453.61 rows=1 width=4,477) (actual rows= loops=)

  • Hash Cond: ph.agent_id = user_names.person_id
14. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice31; segments: 128) (cost=259,813.98..259,897.81 rows=1 width=4,465) (actual rows= loops=)

  • Hash Key: ph.agent_id
15. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=259,813.98..259,897.43 rows=1 width=4,465) (actual rows= loops=)

  • Hash Cond: msib.organization_id = misd.organization_id AND msib.inventory_item_id = misd.inventory_item_id
16. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=259,812.95..259,896.11 rows=1 width=4,491) (actual rows= loops=)

  • Hash Cond: msib.inventory_item_id = abc_classes.inventory_item_id AND msib.organization_id = abc_classes.organization_id
17. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice29; segments: 128) (cost=255,750.95..255,833.82 rows=1 width=4,488) (actual rows= loops=)

  • Hash Key: msib.inventory_item_id, msib.organization_id
18. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,750.95..255,833.44 rows=1 width=4,488) (actual rows= loops=)

  • Hash Cond: msib.organization_id = pasup.using_organization_id AND msib.inventory_item_id = pasup.item_id AND ph.vendor_id = pasup.vendor_id AND ph.vendor_site_id = pasup.vendor_site_id
19. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice28; segments: 128) (cost=255,334.22..255,416.32 rows=1 width=4,518) (actual rows= loops=)

  • Hash Key: ph.vendor_id
20. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,334.22..255,415.94 rows=1 width=4,518) (actual rows= loops=)

  • Hash Cond: ph.terms_id = apt.term_id
21. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,330.33..255,411.81 rows=1 width=4,518) (actual rows= loops=)

  • Hash Cond: msib.segment1::text = enovia.item::text AND ph.segment1::text = enovia.po_number::text AND aps.segment1::text = enovia.gsl
22. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,325.80..255,406.94 rows=1 width=4,486) (actual rows= loops=)

  • Hash Cond: ph.segment1::text = mos_ext.po_num::text AND pl.line_num::text = mos_ext.po_line::text AND pll.shipment_num::text = mos_ext.po_ship::text AND msib.segment1::text = mos_ext.item_id::text
23. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,320.95..255,401.69 rows=1 width=4,070) (actual rows= loops=)

  • Hash Cond: pda.project_id = ppa.project_id
24. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,317.06..255,397.56 rows=1 width=3,932) (actual rows= loops=)

  • Hash Cond: sup.plan_id::double precision = msc_si.plan_id AND sup.sr_instance_id::double precision = msc_si.sr_instance_id AND sup.organization_id::double precision = msc_si.organization_id AND sup.inventory_item_id::double precision = msc_si.inventory_item_id
25. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice23; segments: 128) (cost=255,208.06..255,288.16 rows=1 width=3,956) (actual rows= loops=)

  • Hash Key: sup.sr_instance_id::double precision, sup.plan_id::double precision, sup.inventory_item_id::double precision, sup.organization_id::double precision
26. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,208.06..255,287.78 rows=1 width=3,956) (actual rows= loops=)

  • Hash Cond: pda.req_distribution_id = rd.distribution_id
27. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice18; segments: 128) (cost=255,203.63..255,283.12 rows=1 width=3,408) (actual rows= loops=)

  • Hash Key: pda.req_distribution_id
28. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=255,203.63..255,282.74 rows=1 width=3,408) (actual rows= loops=)

  • Hash Cond: ph.po_header_id = sup.disposition_id::numeric AND pl.po_line_id = sup.po_line_id::numeric AND pll.line_location_id = sup.po_line_location_id::numeric AND (pll.quantity - pll.quantity_received - pll.quantity_cancelled)::double precision = sup.new_order_quantity
29. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=253,614.83..253,693.54 rows=1 width=3,362) (actual rows= loops=)

  • Hash Cond: ph.po_header_id = pda.po_header_id AND pl.po_line_id = pda.po_line_id AND pll.line_location_id = pda.line_location_id AND COALESCE(pll.po_release_id, 0::numeric) = COALESCE(pda.po_release_id, 0::numeric)
  • Filter: (COALESCE(pda.quantity_ordered, 0::numeric) - COALESCE(pda.quantity_delivered, 0::numeric) - COALESCE(pda.quantity_cancelled, 0::numeric)) > 0::numeric
30. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice16; segments: 128) (cost=236,796.51..236,874.96 rows=1 width=3,378) (actual rows= loops=)

  • Hash Key: ph.po_header_id, pl.po_line_id, pll.line_location_id
31. 0.000 0.000 ↓ 0.0

Hash Join (cost=236,796.51..236,874.87 rows=1 width=3,378) (actual rows= loops=)

  • Hash Cond: organization_data.organization_id = pll.ship_to_organization_id
32. 0.000 0.000 ↓ 0.0

Seq Scan on temp_organization_data_po_rac organization_data (cost=0.00..78.05 rows=1 width=41) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Hash (cost=236,796.46..236,796.46 rows=1 width=3,376) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=236,794.35..236,796.46 rows=1 width=3,376) (actual rows= loops=)

  • Hash Cond: msib.organization_id = material_cost.organization_id AND msib.inventory_item_id = material_cost.inventory_item_id
35. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice15; segments: 128) (cost=22,059.50..22,061.54 rows=1 width=3,371) (actual rows= loops=)

  • Hash Key: pll.ship_to_organization_id
36. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=22,059.50..22,061.47 rows=1 width=3,371) (actual rows= loops=)

  • Hash Cond: msib.item_type::text = lity.lookup_code::text
  • Filter: lity.meaning::text <> ALL ('{"MMF Indirect","MMF Consumable"}'::text[])
37. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice13; segments: 128) (cost=16,546.16..16,548.09 rows=1 width=3,435) (actual rows= loops=)

  • Hash Key: msib.item_type::text
38. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=16,546.16..16,548.02 rows=1 width=3,435) (actual rows= loops=)

  • Hash Cond: msib.planning_make_buy_code::text = lmbc.lookup_code::text
39. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice11; segments: 128) (cost=11,032.82..11,034.64 rows=1 width=3,453) (actual rows= loops=)

  • Hash Key: msib.planning_make_buy_code::text
40. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=11,032.82..11,034.57 rows=1 width=3,453) (actual rows= loops=)

  • Hash Cond: msib.mrp_planning_code::text = lmpc.lookup_code::text
  • Filter: NOT CASE WHEN msib.inventory_item_flag::text = 'N'::text AND CASE WHEN lmpc.meaning IS NULL OR length(btrim(lmpc.meaning::text)) = 0 THEN 'Not Assigned'::character varying ELSE lmpc.meaning END::text = 'Not planned'::text AND CASE WHEN lipc.meaning IS NULL OR length(btrim(lipc.meaning::text)) = 0 THEN 'Not Assigned'::character varying ELSE lipc.meaning END::text = 'Not planned'::text THEN true ELSE false END
41. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice9; segments: 128) (cost=5,519.48..5,521.16 rows=1 width=3,493) (actual rows= loops=)

  • Hash Key: msib.mrp_planning_code::text
42. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=5,519.48..5,521.10 rows=1 width=3,493) (actual rows= loops=)

  • Hash Cond: msib.inventory_planning_code::text = lipc.lookup_code::text
43. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice7; segments: 128) (cost=6.14..7.71 rows=1 width=3,511) (actual rows= loops=)

  • Hash Key: msib.inventory_planning_code::text
44. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=6.14..7.64 rows=1 width=3,511) (actual rows= loops=)

  • Hash Cond: ph.vendor_id = apss.vendor_id AND ph.vendor_site_id = apss.vendor_site_id
45. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=5.11..6.55 rows=1 width=3,463) (actual rows= loops=)

  • Hash Cond: ph.vendor_id = aps.vendor_id
46. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice5; segments: 128) (cost=4.10..5.50 rows=1 width=2,887) (actual rows= loops=)

  • Hash Key: ph.vendor_id
47. 0.000 0.000 ↓ 0.0

Hash Join (cost=4.10..5.43 rows=1 width=2,887) (actual rows= loops=)

  • Hash Cond: pll.ship_to_organization_id = msib.organization_id AND pl.item_id = msib.inventory_item_id
48. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice4; segments: 128) (cost=3.08..4.36 rows=1 width=2,409) (actual rows= loops=)

  • Hash Key: pl.item_id, pll.ship_to_organization_id
49. 0.000 0.000 ↓ 0.0

Hash Join (cost=3.08..4.30 rows=1 width=2,409) (actual rows= loops=)

  • Hash Cond: ph.po_header_id = pl.po_header_id AND pll.po_line_id = pl.po_line_id
50. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.05..3.21 rows=1 width=1,847) (actual rows= loops=)

  • Hash Cond: ph.po_header_id = pra.po_header_id AND pll.po_release_id = pra.po_release_id
  • Filter: CASE WHEN ph.type_lookup_code::text = 'BLANKET'::text THEN CASE WHEN ph.approved_flag::text = 'Y'::text AND pll.approved_flag::text = 'Y'::text AND pra.approved_flag::text = 'Y'::text THEN 'Approved'::text WHEN ph.approved_flag::text = 'F'::text OR pll.approved_flag::text = 'F'::text OR pra.approved_flag::text = 'F'::text THEN 'Rejected'::text WHEN ph.approved_flag::text = 'R'::text OR pll.approved_flag::text = 'R'::text OR pra.approved_flag::text = 'R'::text THEN 'Requires Approval'::text ELSE 'In Process'::text END ELSE CASE WHEN ph.approved_flag::text = 'Y'::text AND pll.approved_flag::text = 'Y'::text THEN 'Approved'::text WHEN ph.approved_flag::text = 'F'::text OR pll.approved_flag::text = 'F'::text THEN 'Rejected'::text WHEN ph.approved_flag::text = 'R'::text OR pll.approved_flag::text = 'R'::text THEN 'Requires Approval'::text ELSE 'In Process'::text END END <> 'Rejected'::text
51. 0.000 0.000 ↓ 0.0

Hash Join (cost=1.01..2.07 rows=1 width=1,807) (actual rows= loops=)

  • Hash Cond: pll.po_header_id = ph.po_header_id
  • Join Filter: (ph.authorization_status::text <> 'INCOMPLETE'::text AND NOT ph.authorization_status IS NULL) OR (NOT pll.approved_flag IS NULL)
52. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice1; segments: 128) (cost=0.00..1.02 rows=1 width=1,134) (actual rows= loops=)

  • Hash Key: pll.po_header_id
53. 0.000 0.000 ↓ 0.0

Seq Scan on ods_po_line_locations_all pll (cost=0.00..1.00 rows=1 width=1,134) (actual rows= loops=)

  • Filter: (COALESCE(closed_code, 'X'::character varying)::text <> ALL ('{CLOSED,"FINALLY CLOSED"}'::text[])) AND COALESCE(cancel_flag, 'N'::character varying)::text = 'N'::text AND md_deleted_flag IS NULL
54. 0.000 0.000 ↓ 0.0

Hash (cost=1.00..1.00 rows=1 width=741) (actual rows= loops=)

55. 0.000 0.000 ↓ 0.0

Seq Scan on ods_po_headers_all ph (cost=0.00..1.00 rows=1 width=741) (actual rows= loops=)

  • Filter: md_deleted_flag IS NULL AND (COALESCE(closed_code, 'X'::character varying)::text <> ALL ('{CLOSED,"FINALLY CLOSED"}'::text[]))
56. 0.000 0.000 ↓ 0.0

Hash (cost=1.02..1.02 rows=1 width=104) (actual rows= loops=)

57. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice2; segments: 128) (cost=0.00..1.02 rows=1 width=104) (actual rows= loops=)

  • Hash Key: pra.po_header_id
58. 0.000 0.000 ↓ 0.0

Seq Scan on ods_po_releases_all pra (cost=0.00..1.00 rows=1 width=104) (actual rows= loops=)

  • Filter: md_deleted_flag IS NULL
59. 0.000 0.000 ↓ 0.0

Hash (cost=1.02..1.02 rows=1 width=658) (actual rows= loops=)

60. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice3; segments: 128) (cost=0.00..1.02 rows=1 width=658) (actual rows= loops=)

  • Hash Key: pl.po_header_id
61. 0.000 0.000 ↓ 0.0

Seq Scan on ods_po_lines_all pl (cost=0.00..1.00 rows=1 width=658) (actual rows= loops=)

  • Filter: md_deleted_flag IS NULL
62. 0.000 0.000 ↓ 0.0

Hash (cost=1.00..1.00 rows=1 width=510) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

Seq Scan on ods_mtl_system_items_b msib (cost=0.00..1.00 rows=1 width=510) (actual rows= loops=)

  • Filter: upper(segment1::text) !~~ 'SPECIAL_CHARGE%'::text AND upper(segment1::text) !~~ 'EXP_MISC_HARDWARE_INTERCOMPANY%'::text
64. 0.000 0.000 ↓ 0.0

Hash (cost=1.00..1.00 rows=1 width=608) (actual rows= loops=)

65. 0.000 0.000 ↓ 0.0

Seq Scan on ods_ap_suppliers aps (cost=0.00..1.00 rows=1 width=608) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Hash (cost=1.02..1.02 rows=1 width=112) (actual rows= loops=)

67. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice6; segments: 128) (cost=0.00..1.02 rows=1 width=112) (actual rows= loops=)

  • Hash Key: apss.vendor_id
68. 0.000 0.000 ↓ 0.0

Seq Scan on ods_ap_supplier_sites_all apss (cost=0.00..1.00 rows=1 width=112) (actual rows= loops=)

69. 0.000 0.000 ↓ 0.0

Hash (cost=5,513.03..5,513.03 rows=1 width=21) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice8; segments: 128) (cost=0.00..5,513.03 rows=1 width=21) (actual rows= loops=)

  • Hash Key: lipc.lookup_code::text
71. 0.000 0.000 ↓ 0.0

Seq Scan on temp_mfg_lookups_po_rac lipc (cost=0.00..5,512.54 rows=1 width=21) (actual rows= loops=)

  • Filter: lookup_type::text = 'MTL_MATERIAL_PLANNING'::text
72. 0.000 0.000 ↓ 0.0

Hash (cost=5,513.03..5,513.03 rows=1 width=21) (actual rows= loops=)

73. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice10; segments: 128) (cost=0.00..5,513.03 rows=1 width=21) (actual rows= loops=)

  • Hash Key: lmpc.lookup_code::text
74. 0.000 0.000 ↓ 0.0

Seq Scan on temp_mfg_lookups_po_rac lmpc (cost=0.00..5,512.54 rows=1 width=21) (actual rows= loops=)

  • Filter: lookup_type::text = 'MRP_PLANNING_CODE'::text
75. 0.000 0.000 ↓ 0.0

Hash (cost=5,513.03..5,513.03 rows=1 width=21) (actual rows= loops=)

76. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice12; segments: 128) (cost=0.00..5,513.03 rows=1 width=21) (actual rows= loops=)

  • Hash Key: lmbc.lookup_code::text
77. 0.000 0.000 ↓ 0.0

Seq Scan on temp_mfg_lookups_po_rac lmbc (cost=0.00..5,512.54 rows=1 width=21) (actual rows= loops=)

  • Filter: lookup_type::text = 'MTL_PLANNING_MAKE_BUY'::text
78. 0.000 0.000 ↓ 0.0

Hash (cost=5,513.03..5,513.03 rows=1 width=21) (actual rows= loops=)

79. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice14; segments: 128) (cost=0.00..5,513.03 rows=1 width=21) (actual rows= loops=)

  • Hash Key: lity.lookup_code::text
80. 0.000 0.000 ↓ 0.0

Seq Scan on temp_mfg_lookups_po_rac lity (cost=0.00..5,512.54 rows=1 width=21) (actual rows= loops=)

  • Filter: lookup_type::text = 'ITEM_TYPE'::text
81. 0.000 0.000 ↓ 0.0

Hash (cost=93,731.74..93,731.74 rows=63,023 width=20) (actual rows= loops=)

82. 0.000 0.000 ↓ 0.0

Seq Scan on temp_material_cost_po_rac material_cost (cost=0.00..93,731.74 rows=63,023 width=20) (actual rows= loops=)

83. 0.000 0.000 ↓ 0.0

Hash (cost=6,595.44..6,595.44 rows=3,994 width=66) (actual rows= loops=)

84. 0.000 0.000 ↓ 0.0

Seq Scan on temp_distinctdisttributions_po_rac pda (cost=0.00..6,595.44 rows=3,994 width=66) (actual rows= loops=)

85. 0.000 0.000 ↓ 0.0

Hash (cost=1,055.68..1,055.68 rows=209 width=102) (actual rows= loops=)

86. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice17; segments: 128) (cost=0.00..1,055.68 rows=209 width=102) (actual rows= loops=)

  • Hash Key: sup.disposition_id::numeric, sup.po_line_id::numeric, sup.po_line_location_id::numeric
87. 0.000 0.000 ↓ 0.0

Seq Scan on temp_ascp_actions_po_rac sup (cost=0.00..522.56 rows=209 width=102) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Hash (cost=4.38..4.38 rows=1 width=588) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice22; segments: 128) (cost=3.04..4.38 rows=1 width=588) (actual rows= loops=)

  • Hash Key: rd.distribution_id
90. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=3.04..4.32 rows=1 width=588) (actual rows= loops=)

  • Hash Cond: rl.requisition_header_id = r.requisition_header_id
91. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice21; segments: 128) (cost=2.03..3.26 rows=1 width=562) (actual rows= loops=)

  • Hash Key: rl.requisition_header_id
92. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.03..3.19 rows=1 width=562) (actual rows= loops=)

  • Hash Cond: rl.wip_entity_id = wen.wip_entity_id
93. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice20; segments: 128) (cost=1.01..2.14 rows=1 width=96) (actual rows= loops=)

  • Hash Key: rl.wip_entity_id
94. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1.01..2.07 rows=1 width=96) (actual rows= loops=)

  • Hash Cond: rd.requisition_line_id = rl.requisition_line_id
95. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice19; segments: 128) (cost=0.00..1.02 rows=1 width=64) (actual rows= loops=)

  • Hash Key: rd.requisition_line_id
96. 0.000 0.000 ↓ 0.0

Seq Scan on ods_po_req_distributions_all rd (cost=0.00..1.00 rows=1 width=64) (actual rows= loops=)

97. 0.000 0.000 ↓ 0.0

Hash (cost=1.00..1.00 rows=1 width=96) (actual rows= loops=)

98. 0.000 0.000 ↓ 0.0

Seq Scan on ods_po_requisition_lines_all rl (cost=0.00..1.00 rows=1 width=96) (actual rows= loops=)

99. 0.000 0.000 ↓ 0.0

Hash (cost=1.00..1.00 rows=1 width=530) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Seq Scan on ods_wip_entities wen (cost=0.00..1.00 rows=1 width=530) (actual rows= loops=)

101. 0.000 0.000 ↓ 0.0

Hash (cost=1.00..1.00 rows=1 width=90) (actual rows= loops=)

102. 0.000 0.000 ↓ 0.0

Seq Scan on ods_po_requisition_headers_all r (cost=0.00..1.00 rows=1 width=90) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Hash (cost=103.00..103.00 rows=3 width=40) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Seq Scan on ods_msc_system_items msc_si (cost=0.00..103.00 rows=3 width=40) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Hash (cost=2.29..2.29 rows=1 width=162) (actual rows= loops=)

106. 0.000 0.000 ↓ 0.0

Broadcast Motion 128:128 (slice24; segments: 128) (cost=0.00..2.29 rows=1 width=162) (actual rows= loops=)

107. 0.000 0.000 ↓ 0.0

Seq Scan on ods_pa_projects_all ppa (cost=0.00..1.00 rows=1 width=162) (actual rows= loops=)

108. 0.000 0.000 ↓ 0.0

Hash (cost=2.29..2.29 rows=1 width=544) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

Broadcast Motion 128:128 (slice25; segments: 128) (cost=0.00..2.29 rows=1 width=544) (actual rows= loops=)

110. 0.000 0.000 ↓ 0.0

Seq Scan on cx_races_otm_mos_extract mos_ext (cost=0.00..1.00 rows=1 width=544) (actual rows= loops=)

111. 0.000 0.000 ↓ 0.0

Hash (cost=2.29..2.29 rows=1 width=220) (actual rows= loops=)

112. 0.000 0.000 ↓ 0.0

Broadcast Motion 128:128 (slice26; segments: 128) (cost=0.00..2.29 rows=1 width=220) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Seq Scan on t_gere_cx_enovia_plm_qual_rpt enovia (cost=0.00..1.00 rows=1 width=220) (actual rows= loops=)

114. 0.000 0.000 ↓ 0.0

Hash (cost=2.29..2.29 rows=1 width=64) (actual rows= loops=)

115. 0.000 0.000 ↓ 0.0

Broadcast Motion 128:128 (slice27; segments: 128) (cost=0.00..2.29 rows=1 width=64) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Seq Scan on ods_ap_terms_lines apt (cost=0.00..1.00 rows=1 width=64) (actual rows= loops=)

117. 0.000 0.000 ↓ 0.0

Hash (cost=226.91..226.91 rows=75 width=63) (actual rows= loops=)

118. 0.000 0.000 ↓ 0.0

Seq Scan on temp_pasl_unique_po_rac pasup (cost=0.00..226.91 rows=75 width=63) (actual rows= loops=)

119. 0.000 0.000 ↓ 0.0

Hash (cost=1,852.20..1,852.20 rows=1,151 width=18) (actual rows= loops=)

120. 0.000 0.000 ↓ 0.0

Seq Scan on temp_abc_classes_po_rac abc_classes (cost=0.00..1,852.20 rows=1,151 width=18) (actual rows= loops=)

121. 0.000 0.000 ↓ 0.0

Hash (cost=1.02..1.02 rows=1 width=102) (actual rows= loops=)

122. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice30; segments: 128) (cost=0.00..1.02 rows=1 width=102) (actual rows= loops=)

  • Hash Key: misd.inventory_item_id, misd.organization_id
123. 0.000 0.000 ↓ 0.0

Seq Scan on ods_mtl_item_sub_defaults misd (cost=0.00..1.00 rows=1 width=102) (actual rows= loops=)

  • Filter: default_type = 2::numeric
124. 0.000 0.000 ↓ 0.0

Hash (cost=762.45..762.45 rows=496 width=25) (actual rows= loops=)

125. 0.000 0.000 ↓ 0.0

Seq Scan on temp_user_names_po_rac user_names (cost=0.00..762.45 rows=496 width=25) (actual rows= loops=)

126. 0.000 0.000 ↓ 0.0

Hash (cost=96.95..96.95 rows=2 width=12) (actual rows= loops=)

127. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice33; segments: 128) (cost=0.00..96.95 rows=2 width=12) (actual rows= loops=)

  • Hash Key: curr_ref_org.from_currency::text
128. 0.000 0.000 ↓ 0.0

Seq Scan on temp_curr_ref_po_rac curr_ref_org (cost=0.00..93.65 rows=2 width=12) (actual rows= loops=)

129. 0.000 0.000 ↓ 0.0

Hash (cost=96.95..96.95 rows=2 width=12) (actual rows= loops=)

130. 0.000 0.000 ↓ 0.0

Redistribute Motion 128:128 (slice35; segments: 128) (cost=0.00..96.95 rows=2 width=12) (actual rows= loops=)

  • Hash Key: curr_ref.from_currency::text
131. 0.000 0.000 ↓ 0.0

Seq Scan on temp_curr_ref_po_rac curr_ref (cost=0.00..93.65 rows=2 width=12) (actual rows= loops=)

132. 0.000 0.000 ↓ 0.0

Hash (cost=2.29..2.29 rows=1 width=514) (actual rows= loops=)

133. 0.000 0.000 ↓ 0.0

Broadcast Motion 128:128 (slice36; segments: 128) (cost=0.00..2.29 rows=1 width=514) (actual rows= loops=)

134. 0.000 0.000 ↓ 0.0

Seq Scan on ods_fnd_user fnu2 (cost=0.00..1.00 rows=1 width=514) (actual rows= loops=)

135. 0.000 0.000 ↓ 0.0

Hash (cost=2.29..2.29 rows=1 width=16) (actual rows= loops=)

136. 0.000 0.000 ↓ 0.0

Broadcast Motion 128:128 (slice37; segments: 128) (cost=0.00..2.29 rows=1 width=16) (actual rows= loops=)

137. 0.000 0.000 ↓ 0.0

Seq Scan on ods_fnd_user fnu (cost=0.00..1.00 rows=1 width=16) (actual rows= loops=)

138. 0.000 0.000 ↓ 0.0

Hash (cost=7,581.89..7,581.89 rows=4,743 width=25) (actual rows= loops=)

139. 0.000 0.000 ↓ 0.0

Seq Scan on temp_original_need_by_dt_po_rac onbd (cost=0.00..7,581.89 rows=4,743 width=25) (actual rows= loops=)

140.          

SubPlan (forHash Left Join)

141. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

142. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
143. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

144. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
145. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

146. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
147. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

148. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
149. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

150. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
151. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

152. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
153. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

154. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
155. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

156. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
157. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

158. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
159. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

160. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
161. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

162. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
163. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

164. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
165. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

166. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
167. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

168. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
169. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

170. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
171. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

172. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
173. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

174. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
175. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

176. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
177. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

178. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
179. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

180. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
181. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

182. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
183. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

184. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
185. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

186. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
187. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

188. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
189. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

190. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
191. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

192. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
193. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

194. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
195. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

196. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
197. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

198. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
199. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

200. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
201. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

202. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
203. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

204. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
205. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

206. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
207. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

208. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
209. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

210. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
211. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

212. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
213. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

214. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
215. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

216. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
217. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

218. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
219. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

220. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
221. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

222. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
223. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

224. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
225. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

226. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
227. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

228. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
229. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

230. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
231. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

232. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
233. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

234. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
235. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

236. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
237. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

238. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
239. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

240. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
241. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

242. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
243. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

244. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
245. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

246. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
247. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

248. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
249. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

250. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
251. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

252. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
253. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

254. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
255. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

256. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
257. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

258. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
259. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

260. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
261. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

262. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
263. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

264. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
265. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

266. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
267. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

268. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
269. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

270. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
271. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

272. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
273. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

274. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
275. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

276. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
277. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

278. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
279. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

280. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
281. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

282. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
283. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

284. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
285. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

286. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
287. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

288. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
289. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

290. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
291. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

292. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
293. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

294. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
295. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

296. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
297. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

298. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
299. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

300. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
301. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

302. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
303. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

304. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
305. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

306. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
307. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

308. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
309. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

310. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
311. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

312. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
313. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

314. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
315. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

316. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
317. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

318. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
319. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

320. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
321. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

322. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
323. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

324. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
325. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

326. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
327. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

328. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
329. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

330. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
331. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

332. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
333. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

334. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
335. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

336. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
337. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

338. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
339. 0.000 0.000 ↓ 0.0

Aggregate (cost=25.01..25.02 rows=1 width=8) (actual rows= loops=)

340. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..25.00 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, ($3::date + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
341. 0.000 0.000 ↓ 0.0

Aggregate (cost=27.51..27.52 rows=1 width=8) (actual rows= loops=)

342. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..27.50 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, (CASE WHEN $0 IS NOT NULL THEN $0::date ELSE $1::date END + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
343. 0.000 0.000 ↓ 0.0

Aggregate (cost=27.51..27.52 rows=1 width=8) (actual rows= loops=)

344. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..27.50 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, (CASE WHEN $0 IS NOT NULL THEN $0::date ELSE $1::date END + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
345. 0.000 0.000 ↓ 0.0

Aggregate (cost=27.51..27.52 rows=1 width=8) (actual rows= loops=)

346. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..27.50 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, (CASE WHEN $0 IS NOT NULL THEN $0::date ELSE $1::date END + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
347. 0.000 0.000 ↓ 0.0

Aggregate (cost=27.51..27.52 rows=1 width=8) (actual rows= loops=)

348. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..27.50 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, (CASE WHEN $0 IS NOT NULL THEN $0::date ELSE $1::date END + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])
349. 0.000 0.000 ↓ 0.0

Aggregate (cost=27.51..27.52 rows=1 width=8) (actual rows= loops=)

350. 0.000 0.000 ↓ 0.0

Function Scan on generate_series i (cost=0.00..27.50 rows=2 width=0) (actual rows= loops=)

  • Filter: date_part('dow'::text, (CASE WHEN $0 IS NOT NULL THEN $0::date ELSE $1::date END + i)::timestamp without time zone) = ANY ('{0,6}'::double precision[])