aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/exchangedb/procedures.sql28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/exchangedb/procedures.sql b/src/exchangedb/procedures.sql
index 85accfc2..fb57b587 100644
--- a/src/exchangedb/procedures.sql
+++ b/src/exchangedb/procedures.sql
@@ -2207,8 +2207,8 @@ CREATE OR REPLACE FUNCTION insert_or_update_policy_details(
LANGUAGE plpgsql
AS $$
DECLARE
- cur_commiment_val INT8;
- cur_commiment_frac INT4;
+ cur_commitment_val INT8;
+ cur_commitment_frac INT4;
cur_accumulated_total_val INT8;
cur_accumulated_total_frac INT4;
BEGIN
@@ -2238,33 +2238,29 @@ BEGIN
in_transferable_val,
in_transferable_frac,
in_fulfillment_state)
- RETURNING (policy_details_serial_id,
- accumulated_total_val,
- accumulated_total_frac,
- fulfillment_state)
- INTO (out_policy_details_serial_id,
- out_accumulated_total_val,
- out_accumulated_total_frac,
- out_fulfillment_state)
- ON CONFLICT (policy_hash_code) DO NOTHING;
+ ON CONFLICT (policy_hash_code) DO NOTHING
+ RETURNING policy_details_serial_id INTO out_policy_details_serial_id;
-- If the insert was successful, return
-- We assume that the fullfilment_state was correct in first place.
IF FOUND THEN
+ out_accumulated_total_val = in_accumulated_total_val;
+ out_accumulated_total_frac = in_accumulated_total_frac;
+ out_fulfillment_state = in_fulfillment_state;
RETURN;
END IF;
-- We had a conflict, grab the parts we need to update.
- SELECT (policy_details_serial_id,
+ SELECT policy_details_serial_id,
commitment_val,
commitment_frac,
accumulated_total_val,
- accumulated_total_frac)
- INTO (out_policy_details_serial_id,
+ accumulated_total_frac
+ INTO out_policy_details_serial_id,
cur_commitment_val,
cur_commitment_frac,
cur_accumulated_total_val,
- cur_accumulated_total_frac)
+ cur_accumulated_total_frac
FROM policy_details
WHERE policy_hash_code = in_policy_hash_code;
@@ -2277,7 +2273,7 @@ BEGIN
IF (out_accumulated_total_val > (1 << 52))
THEN
- RAISE EXCEPTION "accumulation overflow";
+ RAISE EXCEPTION 'accumulation overflow';
END IF;