优化同步

This commit is contained in:
邓皓元 2019-04-26 02:46:10 +08:00
parent fe98879597
commit f8f3fbe74d

View File

@ -36,19 +36,16 @@ DECLARE
temp_service_end_at TIMESTAMP;
activated_at TIMESTAMP;
BEGIN
FOR row IN (SELECT cards.sim, virtual_activated_at FROM vd.cards WHERE cards.sim = ANY ($1))
LOOP
activate_cards := activate_cards || jsonb_build_object(row.sim, row_to_json(row));
END LOOP;
SELECT jsonb_object_agg(cards.sim, virtual_activated_at) INTO activate_cards FROM vd.cards WHERE cards.sim = ANY ($1);
FOR row IN (SELECT virtual_packages.id,
IF activate_cards IS NOT NULL THEN
SELECT jsonb_object_agg(t.id, row_to_json(t)) INTO packages FROM (
SELECT virtual_packages.id,
virtual_packages.service_months,
virtual_packages.effect_months,
virtual_packages.delay_months
FROM vd.virtual_packages)
LOOP
packages := packages || jsonb_build_object(row.id, row_to_json(row));
END LOOP;
FROM vd.virtual_packages
) t;
query := 'SELECT id, type, sim, package_id, created_at, counts, service_start_at, service_end_at
FROM vd.virtual_order_cards_partition
@ -136,6 +133,8 @@ BEGIN
service_end_at := (order_row->>'service_end_at')::TIMESTAMP;
RETURN NEXT;
END LOOP;
END IF;
END;
$$ LANGUAGE plpgsql;