summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-06-02 11:46:48 +0200
committerFlorian Dold <florian@dold.me>2023-06-02 11:46:48 +0200
commit2ea3ae1008020589b43a51663c45556a08547212 (patch)
treee40fe0520d1c9b571ade5aa6230874a7436bf41e
parent04885a289a332800aad896d96692479a1fbdc470 (diff)
downloadexchange-2ea3ae1008020589b43a51663c45556a08547212.tar.gz
exchange-2ea3ae1008020589b43a51663c45556a08547212.tar.bz2
exchange-2ea3ae1008020589b43a51663c45556a08547212.zip
make CREATE TYPE usage idempotent
PostgresSQL doesn't have a CREATE TYPE OR REPLACE, so we have to work around this with exception handling.
-rw-r--r--src/exchangedb/exchange_do_reserves_in_insert.sql19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/exchangedb/exchange_do_reserves_in_insert.sql b/src/exchangedb/exchange_do_reserves_in_insert.sql
index 20d1c55a2..cf57d8e81 100644
--- a/src/exchangedb/exchange_do_reserves_in_insert.sql
+++ b/src/exchangedb/exchange_do_reserves_in_insert.sql
@@ -970,15 +970,16 @@ END $$;
-
-
-
-
-
-CREATE TYPE exchange_do_array_reserve_insert_return_type
- AS
- (transaction_duplicate BOOLEAN
- ,ruuid INT8);
+DO $$
+BEGIN
+ CREATE TYPE exchange_do_array_reserve_insert_return_type
+ AS
+ (transaction_duplicate BOOLEAN
+ ,ruuid INT8);
+EXCEPTION
+ WHEN duplicate_object THEN null;
+END
+$$;
CREATE OR REPLACE FUNCTION exchange_do_array_reserves_insert(
IN in_gc_date INT8,