commit 324c7be39568b644a3f177feef6ad8f148c1733f parent b2dd9079e56ca5a6fe5daf51f5530a34d67be4a8 Author: Christian Grothoff <christian@grothoff.org> Date: Fri, 12 Jun 2026 22:39:18 +0200 DB API migration Diffstat:
187 files changed, 142 insertions(+), 325 deletions(-)
diff --git a/src/backenddb/account_kyc_get_outdated.c b/src/backenddb/account_kyc_get_outdated.c @@ -121,7 +121,6 @@ TALER_MERCHANTDB_account_kyc_get_outdated ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "account_kyc_get_outdated", "SELECT" diff --git a/src/backenddb/account_kyc_get_status.c b/src/backenddb/account_kyc_get_status.c @@ -184,7 +184,6 @@ TALER_MERCHANTDB_account_kyc_get_status ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (merchant_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT " " out_h_wire AS h_wire" diff --git a/src/backenddb/account_kyc_set_failed.c b/src/backenddb/account_kyc_set_failed.c @@ -70,7 +70,6 @@ TALER_MERCHANTDB_account_kyc_set_failed ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (merchant_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT " " out_no_account AS no_account" diff --git a/src/backenddb/account_kyc_set_status.c b/src/backenddb/account_kyc_set_status.c @@ -90,7 +90,6 @@ TALER_MERCHANTDB_account_kyc_set_status ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (merchant_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT " " out_no_account AS no_account" diff --git a/src/backenddb/activate_account.c b/src/backenddb/activate_account.c @@ -65,7 +65,6 @@ TALER_MERCHANTDB_activate_account ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (account_details->instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT " " out_h_wire AS h_wire" diff --git a/src/backenddb/check_donau_instance.c b/src/backenddb/check_donau_instance.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_check_donau_instance ( GNUNET_assert (0 == GNUNET_memcmp (merchant_pub, &pg->current_merchant_pub)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT 1" " FROM merchant_donau_instances" diff --git a/src/backenddb/check_money_pots.c b/src/backenddb/check_money_pots.c @@ -50,7 +50,6 @@ TALER_MERCHANTDB_check_money_pots ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT n AS out_missing" " FROM UNNEST($1::INT8[]) AS n" diff --git a/src/backenddb/check_report.c b/src/backenddb/check_report.c @@ -47,7 +47,6 @@ TALER_MERCHANTDB_check_report ( GNUNET_PQ_result_spec_end }; - check_connection (pg); PREPARE (pg, "check_report", "SELECT" diff --git a/src/backenddb/check_transfer_exists.c b/src/backenddb/check_transfer_exists.c @@ -41,7 +41,6 @@ TALER_MERCHANTDB_check_transfer_exists ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " 1" diff --git a/src/backenddb/create_tables.c b/src/backenddb/create_tables.c @@ -26,45 +26,55 @@ enum GNUNET_GenericReturnValue TALER_MERCHANTDB_create_tables ( - const struct GNUNET_CONFIGURATION_Handle *cfg) + struct TALER_MERCHANTDB_PostgresContext *pg) { - struct GNUNET_PQ_Context *conn; - struct GNUNET_PQ_ExecuteStatement es[] = { - GNUNET_PQ_make_try_execute ("SET search_path TO merchant;"), - GNUNET_PQ_EXECUTE_STATEMENT_END - }; - enum GNUNET_GenericReturnValue ret; struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_end }; - enum GNUNET_DB_QueryStatus qs; - conn = GNUNET_PQ_connect_with_cfg (cfg, - "merchantdb-postgres", - "merchant-", - es, - NULL); - if (NULL == conn) + if (GNUNET_SYSERR == + GNUNET_PQ_load_versioning (pg->conn)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + if (GNUNET_OK != + GNUNET_PQ_run_sql (pg->conn, + "merchant-")) + { + GNUNET_break (0); return GNUNET_SYSERR; - ret = GNUNET_PQ_exec_sql (conn, - "global_procedures"); - if (GNUNET_OK == ret) - ret = GNUNET_PQ_exec_sql (conn, - "instance_procedures"); + } + if (GNUNET_OK != + GNUNET_PQ_exec_sql (pg->conn, + "global_procedures")) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + if (GNUNET_OK != + GNUNET_PQ_exec_sql (pg->conn, + "instance_procedures")) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + if (GNUNET_OK != GNUNET_PQ_prepare_anon ( - conn, + pg->conn, "CALL merchant.sync_all_instance_procedures()")) { GNUNET_break (0); - GNUNET_PQ_disconnect (conn); return GNUNET_SYSERR; } - qs = GNUNET_PQ_eval_prepared_non_select (conn, - "", - params); - if (qs < 0) + if (0 < + GNUNET_PQ_eval_prepared_non_select (pg->conn, + "", + params)) + { + GNUNET_break (0); return GNUNET_SYSERR; - GNUNET_PQ_disconnect (conn); - return ret; + } + return GNUNET_OK; } diff --git a/src/backenddb/delete_category.c b/src/backenddb/delete_category.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_category ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_categories" diff --git a/src/backenddb/delete_contract_terms.c b/src/backenddb/delete_contract_terms.c @@ -42,7 +42,6 @@ TALER_MERCHANTDB_delete_contract_terms ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE FROM merchant_contract_terms" " WHERE order_id=$1" diff --git a/src/backenddb/delete_donau_instance.c b/src/backenddb/delete_donau_instance.c @@ -39,7 +39,6 @@ TALER_MERCHANTDB_delete_donau_instance ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE FROM merchant_donau_instances" " WHERE donau_instances_serial = $1;"); diff --git a/src/backenddb/delete_exchange_accounts.c b/src/backenddb/delete_exchange_accounts.c @@ -34,7 +34,6 @@ TALER_MERCHANTDB_delete_exchange_accounts ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "delete_exchange_accounts", "DELETE FROM merchant_exchange_accounts" diff --git a/src/backenddb/delete_instance_private_key.c b/src/backenddb/delete_instance_private_key.c @@ -34,7 +34,6 @@ TALER_MERCHANTDB_delete_instance_private_key ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "delete_instance_private_key", "UPDATE merchant.merchant_instances" diff --git a/src/backenddb/delete_login_token.c b/src/backenddb/delete_login_token.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_login_token_serial ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE FROM merchant_login_tokens" " WHERE serial=$1"); @@ -62,7 +61,6 @@ TALER_MERCHANTDB_delete_login_token ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE FROM merchant_login_tokens" " WHERE token=$1"); diff --git a/src/backenddb/delete_money_pot.c b/src/backenddb/delete_money_pot.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_money_pot ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_money_pots" diff --git a/src/backenddb/delete_order.c b/src/backenddb/delete_order.c @@ -48,7 +48,6 @@ TALER_MERCHANTDB_delete_order ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); // FIXME: replace two statements by stored procedure! TMH_PQ_prepare_anon (pg, "WITH mc AS" diff --git a/src/backenddb/delete_otp.c b/src/backenddb/delete_otp.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_otp ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_otp_devices" diff --git a/src/backenddb/delete_pending_webhook.c b/src/backenddb/delete_pending_webhook.c @@ -36,7 +36,6 @@ TALER_MERCHANTDB_delete_pending_webhook ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "delete_pending_webhook", "DELETE" diff --git a/src/backenddb/delete_product.c b/src/backenddb/delete_product.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_delete_product ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_not_found AS not_found" diff --git a/src/backenddb/delete_product_group.c b/src/backenddb/delete_product_group.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_product_group ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_product_groups" diff --git a/src/backenddb/delete_report.c b/src/backenddb/delete_report.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_report ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_reports" diff --git a/src/backenddb/delete_template.c b/src/backenddb/delete_template.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_template ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_template" diff --git a/src/backenddb/delete_token_family.c b/src/backenddb/delete_token_family.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_token_family ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_token_families" diff --git a/src/backenddb/delete_tos_accepted_early.c b/src/backenddb/delete_tos_accepted_early.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_tos_accepted_early ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (merchant_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE FROM merchant_tos_accepted" " WHERE exchange_url=$1"); diff --git a/src/backenddb/delete_transfer.c b/src/backenddb/delete_transfer.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_transfer ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE FROM merchant_transfers" " WHERE credit_serial=$1"); diff --git a/src/backenddb/delete_unit.c b/src/backenddb/delete_unit.c @@ -47,7 +47,6 @@ TALER_MERCHANTDB_delete_unit ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_no_unit" diff --git a/src/backenddb/delete_webhook.c b/src/backenddb/delete_webhook.c @@ -38,7 +38,6 @@ TALER_MERCHANTDB_delete_webhook ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_webhook" diff --git a/src/backenddb/drop_tables.c b/src/backenddb/drop_tables.c @@ -18,26 +18,15 @@ * @brief implementation of the drop_tables function * @author Christian Grothoff */ -#include <gnunet/gnunet_util_lib.h> #include "merchantdb_lib.h" #include "merchant-database/drop_tables.h" +#include "helper.h" enum GNUNET_GenericReturnValue -TALER_MERCHANTDB_drop_tables (const struct GNUNET_CONFIGURATION_Handle *cfg) +TALER_MERCHANTDB_drop_tables ( + struct TALER_MERCHANTDB_PostgresContext *pg) { - struct GNUNET_PQ_Context *conn; - enum GNUNET_GenericReturnValue ret; - - conn = GNUNET_PQ_connect_with_cfg (cfg, - "merchantdb-postgres", - NULL, - NULL, - NULL); - if (NULL == conn) - return GNUNET_SYSERR; - ret = GNUNET_PQ_exec_sql (conn, - "drop"); - GNUNET_PQ_disconnect (conn); - return ret; + return GNUNET_PQ_exec_sql (pg->conn, + "drop"); } diff --git a/src/backenddb/expire_locks.c b/src/backenddb/expire_locks.c @@ -40,7 +40,6 @@ TALER_MERCHANTDB_expire_locks (struct TALER_MERCHANTDB_PostgresContext *pg) }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "expire_locks", "SELECT expire_locks($1) " diff --git a/src/backenddb/finalize_transfer_status.c b/src/backenddb/finalize_transfer_status.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_finalize_transfer_status ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "WITH subquery AS (" " SELECT signkey_serial" diff --git a/src/backenddb/gc.c b/src/backenddb/gc.c @@ -18,7 +18,6 @@ * @brief Implementation of the gc function for Postgres * @author Christian Grothoff */ -#include "platform.h" #include <taler/taler_pq_lib.h> #include "merchant-database/gc.h" #include "helper.h" @@ -32,35 +31,20 @@ TALER_MERCHANTDB_gc (struct TALER_MERCHANTDB_PostgresContext *pg) GNUNET_PQ_query_param_absolute_time (&now), GNUNET_PQ_query_param_end }; - struct GNUNET_PQ_Context *conn; - enum GNUNET_GenericReturnValue ret; + if (GNUNET_OK != + GNUNET_PQ_prepare_anon (pg->conn, + "CALL merchant.merchant_do_gc ($1);")) { - struct GNUNET_PQ_ExecuteStatement es[] = { - GNUNET_PQ_make_try_execute ("SET search_path TO merchant;"), - GNUNET_PQ_EXECUTE_STATEMENT_END - }; - struct GNUNET_PQ_PreparedStatement ps[] = { - GNUNET_PQ_make_prepare ("run_gc", - "CALL merchant.merchant_do_gc ($1);"), - GNUNET_PQ_PREPARED_STATEMENT_END - }; - - conn = GNUNET_PQ_connect_with_cfg (pg->cfg, - "merchantdb-postgres", - NULL, - es, - ps); - } - if (NULL == conn) + GNUNET_break (0); return GNUNET_SYSERR; - - if (0 > GNUNET_PQ_eval_prepared_non_select (conn, - "run_gc", + } + if (0 > GNUNET_PQ_eval_prepared_non_select (pg->conn, + "", params)) - ret = GNUNET_SYSERR; - else - ret = GNUNET_OK; - GNUNET_PQ_disconnect (conn); - return ret; + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + return GNUNET_OK; } diff --git a/src/backenddb/get_kyc_limits.c b/src/backenddb/get_kyc_limits.c @@ -54,7 +54,6 @@ TALER_MERCHANTDB_get_kyc_limits ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mk.kyc_ok" diff --git a/src/backenddb/get_kyc_status.c b/src/backenddb/get_kyc_status.c @@ -82,7 +82,6 @@ TALER_MERCHANTDB_get_kyc_status ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mk.access_token" diff --git a/src/backenddb/helper.h b/src/backenddb/helper.h @@ -135,15 +135,4 @@ struct TALER_MERCHANTDB_PostgresContext } } while (0) -/** - * Check that the database connection is still up and automatically reconnects - * unless we are already inside of a transaction. - * - * @param pg connection to check - */ -void -TALER_MERCHANTDB_check_connection ( - struct TALER_MERCHANTDB_PostgresContext *pg); - - #endif diff --git a/src/backenddb/inactivate_account.c b/src/backenddb/inactivate_account.c @@ -45,7 +45,6 @@ TALER_MERCHANTDB_inactivate_account ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (merchant_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT out_found AS found" " FROM merchant_do_inactivate_account" diff --git a/src/backenddb/increase_refund.c b/src/backenddb/increase_refund.c @@ -608,7 +608,6 @@ process_deposits_for_refund_cb (void *cls, GNUNET_PQ_query_param_end }; - check_connection (pg); qs = prep_insert_refund (pg); if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != qs) { diff --git a/src/backenddb/increment_money_pots.c b/src/backenddb/increment_money_pots.c @@ -55,7 +55,6 @@ TALER_MERCHANTDB_increment_money_pots ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_not_found AS not_found" diff --git a/src/backenddb/insert_account.c b/src/backenddb/insert_account.c @@ -52,7 +52,6 @@ TALER_MERCHANTDB_insert_account ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (account_details->instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_accounts AS ma" "(h_wire" diff --git a/src/backenddb/insert_category.c b/src/backenddb/insert_category.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_insert_category ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_categories" "(category_name" diff --git a/src/backenddb/insert_contract_terms.c b/src/backenddb/insert_contract_terms.c @@ -73,7 +73,6 @@ TALER_MERCHANTDB_insert_contract_terms ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); { struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_string (order_id), diff --git a/src/backenddb/insert_deposit_confirmation.c b/src/backenddb/insert_deposit_confirmation.c @@ -91,7 +91,6 @@ TALER_MERCHANTDB_insert_deposit_confirmation ( GNUNET_TIME_absolute_get_remaining ( wire_transfer_deadline.abs_time), true)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT " " out_no_account AS no_account" diff --git a/src/backenddb/insert_donau_instance.c b/src/backenddb/insert_donau_instance.c @@ -52,7 +52,6 @@ TALER_MERCHANTDB_insert_donau_instance ( &charity->charity_pub, sizeof (pg->current_merchant_pub))); GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_donau_instances" " (donau_url" diff --git a/src/backenddb/insert_exchange_account.c b/src/backenddb/insert_exchange_account.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_insert_exchange_account ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "insert_exchange_account", "INSERT INTO merchant_exchange_accounts" diff --git a/src/backenddb/insert_exchange_keys.c b/src/backenddb/insert_exchange_keys.c @@ -53,7 +53,6 @@ TALER_MERCHANTDB_insert_exchange_keys ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); // FIXME: use a stored procedure instead! PREPARE (pg, "insert_exchange_keys", diff --git a/src/backenddb/insert_exchange_signkey.c b/src/backenddb/insert_exchange_signkey.c @@ -44,7 +44,6 @@ TALER_MERCHANTDB_insert_exchange_signkey ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "insert_exchange_signkey", "INSERT INTO merchant.merchant_exchange_signing_keys" diff --git a/src/backenddb/insert_instance.c b/src/backenddb/insert_instance.c @@ -67,7 +67,6 @@ TALER_MERCHANTDB_insert_instance ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "insert_instance", "INSERT INTO merchant.merchant_instances" diff --git a/src/backenddb/insert_issued_token.c b/src/backenddb/insert_issued_token.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_insert_issued_token ( enum GNUNET_DB_QueryStatus qs; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_no_family" diff --git a/src/backenddb/insert_login_token.c b/src/backenddb/insert_login_token.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_insert_login_token ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_login_tokens" "(token" diff --git a/src/backenddb/insert_money_pot.c b/src/backenddb/insert_money_pot.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_insert_money_pot ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_money_pots" "(money_pot_name" diff --git a/src/backenddb/insert_order.c b/src/backenddb/insert_order.c @@ -71,7 +71,6 @@ TALER_MERCHANTDB_insert_order ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_orders" "(order_id" diff --git a/src/backenddb/insert_order_blinded_sigs.c b/src/backenddb/insert_order_blinded_sigs.c @@ -41,7 +41,6 @@ TALER_MERCHANTDB_insert_order_blinded_sigs ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_order_token_blinded_sigs" " (order_serial" diff --git a/src/backenddb/insert_order_lock.c b/src/backenddb/insert_order_lock.c @@ -44,7 +44,6 @@ TALER_MERCHANTDB_insert_order_lock ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "WITH tmp AS" " (SELECT " diff --git a/src/backenddb/insert_otp.c b/src/backenddb/insert_otp.c @@ -53,7 +53,6 @@ TALER_MERCHANTDB_insert_otp ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_otp_devices" "(otp_id" diff --git a/src/backenddb/insert_pending_webhook.c b/src/backenddb/insert_pending_webhook.c @@ -51,7 +51,6 @@ TALER_MERCHANTDB_insert_pending_webhook ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); PREPARE (pg, "insert_pending_webhook", "INSERT INTO merchant.merchant_pending_webhooks" diff --git a/src/backenddb/insert_product.c b/src/backenddb/insert_product.c @@ -90,7 +90,6 @@ TALER_MERCHANTDB_insert_product ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_conflict AS conflict" diff --git a/src/backenddb/insert_product_group.c b/src/backenddb/insert_product_group.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_insert_product_group ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_product_groups" "(product_group_name" diff --git a/src/backenddb/insert_refund_proof.c b/src/backenddb/insert_refund_proof.c @@ -39,7 +39,6 @@ TALER_MERCHANTDB_insert_refund_proof ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_refund_proofs" "(refund_serial" diff --git a/src/backenddb/insert_report.c b/src/backenddb/insert_report.c @@ -74,7 +74,6 @@ TALER_MERCHANTDB_insert_report ( GNUNET_TIME_relative_add (frequency, frequency_shift))); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_reports" "(report_program_section" diff --git a/src/backenddb/insert_spent_token.c b/src/backenddb/insert_spent_token.c @@ -53,7 +53,6 @@ TALER_MERCHANTDB_insert_spent_token ( enum GNUNET_DB_QueryStatus qs; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Storing token spent with key %s\n", GNUNET_h2s (&h_issue_pub->hash)); diff --git a/src/backenddb/insert_template.c b/src/backenddb/insert_template.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_insert_template ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_template" "(template_id" diff --git a/src/backenddb/insert_token_family.c b/src/backenddb/insert_token_family.c @@ -48,7 +48,6 @@ TALER_MERCHANTDB_insert_token_family ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_token_families" "(slug" diff --git a/src/backenddb/insert_tos_accepted_early.c b/src/backenddb/insert_tos_accepted_early.c @@ -40,7 +40,6 @@ TALER_MERCHANTDB_insert_tos_accepted_early ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (merchant_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_tos_accepted" " (exchange_url" diff --git a/src/backenddb/insert_transfer.c b/src/backenddb/insert_transfer.c @@ -60,7 +60,6 @@ TALER_MERCHANTDB_insert_transfer ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT " " out_no_account AS no_account" diff --git a/src/backenddb/insert_transfer_details.c b/src/backenddb/insert_transfer_details.c @@ -63,7 +63,6 @@ TALER_MERCHANTDB_insert_transfer_details ( contract_terms[i] = &tdd->h_contract_terms; } - check_connection (pg); // FIXME: why do we retry here, but not most other SQL statements? // We need a slightly more consistent strategy... for (unsigned int retries = 0; diff --git a/src/backenddb/insert_unclaim_signature.c b/src/backenddb/insert_unclaim_signature.c @@ -84,7 +84,6 @@ TALER_MERCHANTDB_insert_unclaim_signature ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); end = GNUNET_STRINGS_data_to_string (nonce, sizeof (*nonce), nonce_str, diff --git a/src/backenddb/insert_unit.c b/src/backenddb/insert_unit.c @@ -59,7 +59,6 @@ TALER_MERCHANTDB_insert_unit ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_conflict AS conflict" diff --git a/src/backenddb/insert_webhook.c b/src/backenddb/insert_webhook.c @@ -48,7 +48,6 @@ TALER_MERCHANTDB_insert_webhook ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "INSERT INTO merchant_webhook" "(webhook_id" diff --git a/src/backenddb/lock_product.c b/src/backenddb/lock_product.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_lock_product ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "WITH tmp AS" " (SELECT" diff --git a/src/backenddb/lookup_account.c b/src/backenddb/lookup_account.c @@ -44,7 +44,6 @@ TALER_MERCHANTDB_lookup_account ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " account_serial" diff --git a/src/backenddb/lookup_all_products.c b/src/backenddb/lookup_all_products.c @@ -180,7 +180,6 @@ TALER_MERCHANTDB_lookup_all_products ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " description" diff --git a/src/backenddb/lookup_all_webhooks.c b/src/backenddb/lookup_all_webhooks.c @@ -139,7 +139,6 @@ TALER_MERCHANTDB_lookup_all_webhooks ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); PREPARE (pg, "lookup_all_webhooks", " SELECT" diff --git a/src/backenddb/lookup_categories.c b/src/backenddb/lookup_categories.c @@ -119,7 +119,6 @@ TALER_MERCHANTDB_lookup_categories ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mc.category_serial" diff --git a/src/backenddb/lookup_categories_by_ids.c b/src/backenddb/lookup_categories_by_ids.c @@ -115,7 +115,6 @@ TALER_MERCHANTDB_lookup_categories_by_ids (struct TALER_MERCHANTDB_PostgresConte GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mc.category_serial" diff --git a/src/backenddb/lookup_contract_terms.c b/src/backenddb/lookup_contract_terms.c @@ -54,7 +54,6 @@ TALER_MERCHANTDB_lookup_contract_terms ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " contract_terms::TEXT" diff --git a/src/backenddb/lookup_contract_terms2.c b/src/backenddb/lookup_contract_terms2.c @@ -67,7 +67,6 @@ TALER_MERCHANTDB_lookup_contract_terms2 ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " contract_terms::TEXT" diff --git a/src/backenddb/lookup_contract_terms3.c b/src/backenddb/lookup_contract_terms3.c @@ -78,7 +78,6 @@ TALER_MERCHANTDB_lookup_contract_terms3 ( GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); *session_matches = false; - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " contract_terms::TEXT" diff --git a/src/backenddb/lookup_custom_units_by_names.c b/src/backenddb/lookup_custom_units_by_names.c @@ -113,7 +113,6 @@ TALER_MERCHANTDB_lookup_custom_units_by_names ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT cu.unit_serial" " ,cu.unit" diff --git a/src/backenddb/lookup_deposits.c b/src/backenddb/lookup_deposits.c @@ -133,7 +133,6 @@ TALER_MERCHANTDB_lookup_deposits ( GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Finding deposits for h_contract_terms '%s'\n", GNUNET_h2s (&h_contract_terms->hash)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " dcom.exchange_url" diff --git a/src/backenddb/lookup_deposits_by_contract_and_coin.c b/src/backenddb/lookup_deposits_by_contract_and_coin.c @@ -257,12 +257,10 @@ TALER_MERCHANTDB_lookup_deposits_by_contract_and_coin ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); /* no preflight check here, run in transaction by caller! */ TALER_LOG_DEBUG ("Looking for refund of h_contract_terms %s at `%s'\n", GNUNET_h2s (&h_contract_terms->hash), instance_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " refund_amount" diff --git a/src/backenddb/lookup_deposits_by_order.c b/src/backenddb/lookup_deposits_by_order.c @@ -135,7 +135,6 @@ TALER_MERCHANTDB_lookup_deposits_by_order ( enum GNUNET_DB_QueryStatus qs; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " dep.deposit_serial" diff --git a/src/backenddb/lookup_donau_keys.c b/src/backenddb/lookup_donau_keys.c @@ -47,7 +47,6 @@ TALER_MERCHANTDB_lookup_donau_keys ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "lookup_donau_keys", "SELECT" diff --git a/src/backenddb/lookup_expected_transfer.c b/src/backenddb/lookup_expected_transfer.c @@ -73,7 +73,6 @@ TALER_MERCHANTDB_lookup_expected_transfer ( memset (expected_credit_amount, 0, sizeof (*expected_credit_amount)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " met.expected_time" diff --git a/src/backenddb/lookup_expected_transfers.c b/src/backenddb/lookup_expected_transfers.c @@ -190,7 +190,6 @@ TALER_MERCHANTDB_lookup_expected_transfers ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); if (limit > 0) { TMH_PQ_prepare_anon (pg, diff --git a/src/backenddb/lookup_instance_auth.c b/src/backenddb/lookup_instance_auth.c @@ -42,7 +42,6 @@ TALER_MERCHANTDB_lookup_instance_auth ( GNUNET_PQ_result_spec_end }; - check_connection (pg); PREPARE (pg, "lookup_instance_auth", "SELECT" diff --git a/src/backenddb/lookup_instances.c b/src/backenddb/lookup_instances.c @@ -190,7 +190,6 @@ TALER_MERCHANTDB_lookup_instances ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "lookup_instances", "SELECT" @@ -247,7 +246,6 @@ TALER_MERCHANTDB_lookup_instance ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "lookup_instance", "SELECT" diff --git a/src/backenddb/lookup_inventory_products.c b/src/backenddb/lookup_inventory_products.c @@ -151,7 +151,6 @@ TALER_MERCHANTDB_lookup_inventory_products ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " description" diff --git a/src/backenddb/lookup_inventory_products_filtered.c b/src/backenddb/lookup_inventory_products_filtered.c @@ -159,7 +159,6 @@ TALER_MERCHANTDB_lookup_inventory_products_filtered ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " description" diff --git a/src/backenddb/lookup_login_tokens.c b/src/backenddb/lookup_login_tokens.c @@ -132,7 +132,6 @@ TALER_MERCHANTDB_lookup_login_tokens ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); if (limit > 0) { TMH_PQ_prepare_anon (pg, diff --git a/src/backenddb/lookup_order.c b/src/backenddb/lookup_order.c @@ -57,7 +57,6 @@ TALER_MERCHANTDB_lookup_order ( "Finding contract term, order_id: '%s', instance_id: '%s'.\n", order_id, instance_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " contract_terms::TEXT" diff --git a/src/backenddb/lookup_order_by_fulfillment.c b/src/backenddb/lookup_order_by_fulfillment.c @@ -48,7 +48,6 @@ TALER_MERCHANTDB_lookup_order_by_fulfillment ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mct.order_id" diff --git a/src/backenddb/lookup_order_charity.c b/src/backenddb/lookup_order_charity.c @@ -65,7 +65,6 @@ TALER_MERCHANTDB_lookup_order_charity ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " di.donau_instances_serial" diff --git a/src/backenddb/lookup_order_status.c b/src/backenddb/lookup_order_status.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_lookup_order_status ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " h_contract_terms" diff --git a/src/backenddb/lookup_order_status_by_serial.c b/src/backenddb/lookup_order_status_by_serial.c @@ -50,7 +50,6 @@ TALER_MERCHANTDB_lookup_order_status_by_serial ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); *paid = false; /* just to be safe(r) */ TMH_PQ_prepare_anon (pg, "SELECT" diff --git a/src/backenddb/lookup_order_summary.c b/src/backenddb/lookup_order_summary.c @@ -47,7 +47,6 @@ TALER_MERCHANTDB_lookup_order_summary ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "(SELECT" " creation_time" diff --git a/src/backenddb/lookup_otp_devices.c b/src/backenddb/lookup_otp_devices.c @@ -111,7 +111,6 @@ TALER_MERCHANTDB_lookup_otp_devices ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " otp_id" diff --git a/src/backenddb/lookup_pending_deposits.c b/src/backenddb/lookup_pending_deposits.c @@ -153,7 +153,6 @@ TALER_MERCHANTDB_lookup_pending_deposits ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "lookup_pending_deposits", "SELECT" diff --git a/src/backenddb/lookup_pending_webhooks.c b/src/backenddb/lookup_pending_webhooks.c @@ -131,7 +131,6 @@ TALER_MERCHANTDB_lookup_pending_webhooks ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "lookup_pending_webhooks", "SELECT" @@ -172,7 +171,6 @@ TALER_MERCHANTDB_lookup_future_webhook ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "lookup_future_webhook", "SELECT" diff --git a/src/backenddb/lookup_product.c b/src/backenddb/lookup_product.c @@ -83,7 +83,6 @@ TALER_MERCHANTDB_lookup_product ( GNUNET_PQ_result_spec_end }; - check_connection (pg); return GNUNET_PQ_eval_prepared_singleton_select (pg->conn, "", params, @@ -163,7 +162,6 @@ TALER_MERCHANTDB_lookup_product ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); pd->product_group_id = 0; pd->money_pot_id = 0; qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn, diff --git a/src/backenddb/lookup_product_image.c b/src/backenddb/lookup_product_image.c @@ -43,7 +43,6 @@ TALER_MERCHANTDB_lookup_product_image_by_hash ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon ( pg, "SELECT" diff --git a/src/backenddb/lookup_products.c b/src/backenddb/lookup_products.c @@ -129,7 +129,6 @@ TALER_MERCHANTDB_lookup_products ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); if (limit > 0) { TMH_PQ_prepare_anon (pg, diff --git a/src/backenddb/lookup_reconciliation_details.c b/src/backenddb/lookup_reconciliation_details.c @@ -145,7 +145,6 @@ TALER_MERCHANTDB_lookup_reconciliation_details ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mct.order_id" diff --git a/src/backenddb/lookup_refund_proof.c b/src/backenddb/lookup_refund_proof.c @@ -44,7 +44,6 @@ TALER_MERCHANTDB_lookup_refund_proof ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " merchant.merchant_exchange_signing_keys.exchange_pub" diff --git a/src/backenddb/lookup_refunds.c b/src/backenddb/lookup_refunds.c @@ -121,7 +121,6 @@ TALER_MERCHANTDB_lookup_refunds ( TALER_LOG_DEBUG ("Looking for refund of h_contract_terms %s at `%s'\n", GNUNET_h2s (&h_contract_terms->hash), instance_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " coin_pub" diff --git a/src/backenddb/lookup_refunds_detailed.c b/src/backenddb/lookup_refunds_detailed.c @@ -147,7 +147,6 @@ TALER_MERCHANTDB_lookup_refunds_detailed ( GNUNET_h2s (&h_contract_terms->hash), instance_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " ref.refund_serial" diff --git a/src/backenddb/lookup_reports_pending.c b/src/backenddb/lookup_reports_pending.c @@ -143,7 +143,6 @@ TALER_MERCHANTDB_lookup_reports_pending ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "lookup_reports_pending", "SELECT" diff --git a/src/backenddb/lookup_spent_tokens_by_order.c b/src/backenddb/lookup_spent_tokens_by_order.c @@ -132,7 +132,6 @@ TALER_MERCHANTDB_lookup_spent_tokens_by_order ( enum GNUNET_DB_QueryStatus qs; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " spent_token_serial" diff --git a/src/backenddb/lookup_statistics_amount_by_bucket.c b/src/backenddb/lookup_statistics_amount_by_bucket.c @@ -192,7 +192,6 @@ TALER_MERCHANTDB_lookup_statistics_amount_by_bucket ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " bmeta_serial_id" diff --git a/src/backenddb/lookup_statistics_amount_by_bucket2.c b/src/backenddb/lookup_statistics_amount_by_bucket2.c @@ -132,7 +132,6 @@ TALER_MERCHANTDB_lookup_statistics_amount_by_bucket2 ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " msba.bucket_start" diff --git a/src/backenddb/lookup_statistics_amount_by_interval.c b/src/backenddb/lookup_statistics_amount_by_interval.c @@ -204,7 +204,6 @@ TALER_MERCHANTDB_lookup_statistics_amount_by_interval ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT description" " FROM merchant_statistic_interval_meta" diff --git a/src/backenddb/lookup_statistics_counter_by_bucket.c b/src/backenddb/lookup_statistics_counter_by_bucket.c @@ -131,7 +131,6 @@ TALER_MERCHANTDB_lookup_statistics_counter_by_bucket ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " description" diff --git a/src/backenddb/lookup_statistics_counter_by_bucket2.c b/src/backenddb/lookup_statistics_counter_by_bucket2.c @@ -155,7 +155,6 @@ TALER_MERCHANTDB_lookup_statistics_counter_by_bucket2 ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " msbc.bucket_start" diff --git a/src/backenddb/lookup_statistics_counter_by_interval.c b/src/backenddb/lookup_statistics_counter_by_interval.c @@ -170,7 +170,6 @@ TALER_MERCHANTDB_lookup_statistics_counter_by_interval ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT description" " FROM merchant_statistic_interval_meta" diff --git a/src/backenddb/lookup_template.c b/src/backenddb/lookup_template.c @@ -65,7 +65,6 @@ TALER_MERCHANTDB_lookup_template ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mt.template_description" diff --git a/src/backenddb/lookup_templates.c b/src/backenddb/lookup_templates.c @@ -111,7 +111,6 @@ TALER_MERCHANTDB_lookup_templates ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " template_id" diff --git a/src/backenddb/lookup_token_families.c b/src/backenddb/lookup_token_families.c @@ -135,7 +135,6 @@ TALER_MERCHANTDB_lookup_token_families ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " slug" diff --git a/src/backenddb/lookup_token_family.c b/src/backenddb/lookup_token_family.c @@ -74,7 +74,6 @@ TALER_MERCHANTDB_lookup_token_family ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " slug" diff --git a/src/backenddb/lookup_token_family_key.c b/src/backenddb/lookup_token_family_key.c @@ -100,7 +100,6 @@ TALER_MERCHANTDB_lookup_token_family_key ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " h_pub" diff --git a/src/backenddb/lookup_token_family_keys.c b/src/backenddb/lookup_token_family_keys.c @@ -179,7 +179,6 @@ TALER_MERCHANTDB_lookup_token_family_keys ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " h_pub" diff --git a/src/backenddb/lookup_tos_accepted_early.c b/src/backenddb/lookup_tos_accepted_early.c @@ -45,7 +45,6 @@ TALER_MERCHANTDB_lookup_tos_accepted_early ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (merchant_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT tos_version" " FROM merchant_tos_accepted" diff --git a/src/backenddb/lookup_transfer_details.c b/src/backenddb/lookup_transfer_details.c @@ -122,7 +122,6 @@ TALER_MERCHANTDB_lookup_transfer_details ( enum GNUNET_DB_QueryStatus qs; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mterm.h_contract_terms" diff --git a/src/backenddb/lookup_transfer_details_by_order.c b/src/backenddb/lookup_transfer_details_by_order.c @@ -200,7 +200,6 @@ TALER_MERCHANTDB_lookup_transfer_details_by_order ( enum GNUNET_DB_QueryStatus qs; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " md.deposit_serial" diff --git a/src/backenddb/lookup_transfer_summary.c b/src/backenddb/lookup_transfer_summary.c @@ -120,7 +120,6 @@ TALER_MERCHANTDB_lookup_transfer_summary ( enum GNUNET_DB_QueryStatus qs; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " mct.order_id" diff --git a/src/backenddb/lookup_transfers.c b/src/backenddb/lookup_transfers.c @@ -163,7 +163,6 @@ TALER_MERCHANTDB_lookup_transfers ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); if (limit > 0) { TMH_PQ_prepare_anon (pg, diff --git a/src/backenddb/lookup_units.c b/src/backenddb/lookup_units.c @@ -106,7 +106,6 @@ TALER_MERCHANTDB_lookup_units ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT cu.unit_serial" " ,cu.unit" diff --git a/src/backenddb/lookup_webhook.c b/src/backenddb/lookup_webhook.c @@ -39,7 +39,6 @@ TALER_MERCHANTDB_lookup_webhook ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " event_type" diff --git a/src/backenddb/lookup_webhook_by_event.c b/src/backenddb/lookup_webhook_by_event.c @@ -131,7 +131,6 @@ TALER_MERCHANTDB_lookup_webhook_by_event ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " webhook_serial" diff --git a/src/backenddb/lookup_webhooks.c b/src/backenddb/lookup_webhooks.c @@ -110,7 +110,6 @@ TALER_MERCHANTDB_lookup_webhooks ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " webhook_id" diff --git a/src/backenddb/lookup_wire_fee.c b/src/backenddb/lookup_wire_fee.c @@ -56,7 +56,6 @@ TALER_MERCHANTDB_lookup_wire_fee ( GNUNET_PQ_result_spec_end }; - check_connection (pg); GNUNET_CRYPTO_hash (wire_method, strlen (wire_method) + 1, &h_wire_method); diff --git a/src/backenddb/mark_order_wired.c b/src/backenddb/mark_order_wired.c @@ -35,7 +35,6 @@ TALER_MERCHANTDB_mark_order_wired ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_contract_terms SET" " wired=TRUE" diff --git a/src/backenddb/pg.c b/src/backenddb/pg.c @@ -22,7 +22,9 @@ * @author Priscilla Huang * @author Iván Ávalos */ -#include "platform.h" +struct TALER_MERCHANTDB_PostgresContext; +#define GNUNET_PQ_RECONNECT_CALLBACK_CLOSURE \ + struct TALER_MERCHANTDB_PostgresContext #include <gnunet/gnunet_util_lib.h> #include <gnunet/gnunet_pq_lib.h> #include <taler/taler_util.h> @@ -33,14 +35,31 @@ #include "helper.h" -// FIXME: prefix? -void -check_connection ( - struct TALER_MERCHANTDB_PostgresContext *pg) +/** + * Function called each time we connect or reconnect to the + * database. Gives the application a chance to run some + * per-connection initialization logic. + * + * @param pg database conntext in the auditor + * @param pq database connection handle + */ +static void +reconnect_cb (struct TALER_MERCHANTDB_PostgresContext *pg, + struct GNUNET_PQ_Context *pq) { - if (NULL != pg->transaction_name) + struct GNUNET_PQ_ExecuteStatement es[] = { + GNUNET_PQ_make_try_execute ("SET search_path TO merchant;"), + GNUNET_PQ_EXECUTE_STATEMENT_END + }; + + if (GNUNET_OK != + GNUNET_PQ_exec_statements (pq, + es)) + { + GNUNET_break (0); return; - GNUNET_PQ_reconnect_if_down (pg->conn); + } + pg->prep_gen++; } @@ -49,10 +68,6 @@ TALER_MERCHANTDB_connect ( const struct GNUNET_CONFIGURATION_Handle *cfg) { struct TALER_MERCHANTDB_PostgresContext *pg; - struct GNUNET_PQ_ExecuteStatement es[] = { - GNUNET_PQ_make_try_execute ("SET search_path TO merchant;"), - GNUNET_PQ_EXECUTE_STATEMENT_END - }; pg = GNUNET_new (struct TALER_MERCHANTDB_PostgresContext); pg->cfg = cfg; @@ -68,13 +83,10 @@ TALER_MERCHANTDB_connect ( GNUNET_free (pg); return NULL; } - pg->conn = GNUNET_PQ_connect_with_cfg2 (pg->cfg, - "merchantdb-postgres", - "merchant-", - es, - NULL, /* prepared statemetns */ - GNUNET_PQ_FLAG_CHECK_CURRENT); - pg->prep_gen++; + pg->conn = GNUNET_PQ_init (pg->cfg, + "merchantdb-postgres", + &reconnect_cb, + pg); if (NULL == pg->conn) { TALER_MERCHANTDB_disconnect (pg); diff --git a/src/backenddb/preflight.c b/src/backenddb/preflight.c @@ -23,14 +23,34 @@ #include "merchant-database/preflight.h" #include "helper.h" + void TALER_MERCHANTDB_preflight ( struct TALER_MERCHANTDB_PostgresContext *pg) { + struct GNUNET_PQ_ExecuteStatement es[] = { + GNUNET_PQ_make_execute ("ROLLBACK"), + GNUNET_PQ_EXECUTE_STATEMENT_END + }; + if (NULL == pg->transaction_name) + { + GNUNET_PQ_reconnect_if_down (pg->conn); return; /* all good */ - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "BUG: Preflight check detected running transaction `%s'!\n", - pg->transaction_name); - GNUNET_assert (0); + } + if (GNUNET_OK == + GNUNET_PQ_exec_statements (pg->conn, + es)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "BUG: Preflight check rolled back transaction `%s'!\n", + pg->transaction_name); + } + else + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "BUG: Preflight check failed to rollback transaction `%s'!\n", + pg->transaction_name); + } + pg->transaction_name = NULL; } diff --git a/src/backenddb/purge_instance.c b/src/backenddb/purge_instance.c @@ -42,7 +42,6 @@ TALER_MERCHANTDB_purge_instance ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "purge_instance", "DELETE FROM merchant.merchant_instances" diff --git a/src/backenddb/select_account.c b/src/backenddb/select_account.c @@ -62,7 +62,6 @@ TALER_MERCHANTDB_select_account ( pg->current_merchant_id)); ad->h_wire = *h_wire; ad->instance_id = id; - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " salt" diff --git a/src/backenddb/select_account_by_uri.c b/src/backenddb/select_account_by_uri.c @@ -61,7 +61,6 @@ TALER_MERCHANTDB_select_account_by_uri ( ad->payto_uri.full_payto = GNUNET_strdup (payto_uri.full_payto); ad->instance_id = id; - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " salt" diff --git a/src/backenddb/select_accounts.c b/src/backenddb/select_accounts.c @@ -146,7 +146,6 @@ TALER_MERCHANTDB_select_accounts ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "select_accounts", "SELECT" diff --git a/src/backenddb/select_accounts_by_exchange.c b/src/backenddb/select_accounts_by_exchange.c @@ -120,7 +120,6 @@ TALER_MERCHANTDB_select_accounts_by_exchange ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "select_exchange_accounts", "SELECT" diff --git a/src/backenddb/select_accounts_by_instance.c b/src/backenddb/select_accounts_by_instance.c @@ -151,7 +151,6 @@ TALER_MERCHANTDB_select_accounts_by_instance ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " ma.h_wire" diff --git a/src/backenddb/select_all_donau_instances.c b/src/backenddb/select_all_donau_instances.c @@ -138,7 +138,6 @@ TALER_MERCHANTDB_select_all_donau_instances ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "select_all_donau_instances", "SELECT" diff --git a/src/backenddb/select_category.c b/src/backenddb/select_category.c @@ -52,7 +52,6 @@ TALER_MERCHANTDB_select_category ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " category_name" diff --git a/src/backenddb/select_category_by_name.c b/src/backenddb/select_category_by_name.c @@ -47,7 +47,6 @@ TALER_MERCHANTDB_select_category_by_name ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " category_serial" diff --git a/src/backenddb/select_donau_instance_by_serial.c b/src/backenddb/select_donau_instance_by_serial.c @@ -45,7 +45,6 @@ TALER_MERCHANTDB_select_donau_instance_by_serial ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT donau_url" " ,charity_id" diff --git a/src/backenddb/select_donau_instances.c b/src/backenddb/select_donau_instances.c @@ -152,7 +152,6 @@ TALER_MERCHANTDB_select_donau_instances ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " di.donau_instances_serial" diff --git a/src/backenddb/select_donau_instances_filtered.c b/src/backenddb/select_donau_instances_filtered.c @@ -106,7 +106,6 @@ TALER_MERCHANTDB_select_donau_instances_filtered ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT donau_url" " FROM merchant_donau_instances" diff --git a/src/backenddb/select_exchange_keys.c b/src/backenddb/select_exchange_keys.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_select_exchange_keys ( enum GNUNET_DB_QueryStatus qs; *keys = NULL; - check_connection (pg); PREPARE (pg, "select_exchange_keys", "SELECT" diff --git a/src/backenddb/select_exchanges.c b/src/backenddb/select_exchanges.c @@ -124,7 +124,6 @@ TALER_MERCHANTDB_select_exchanges ( }; enum GNUNET_DB_QueryStatus qs; - check_connection (pg); PREPARE (pg, "select_exchanges", "SELECT" diff --git a/src/backenddb/select_login_token.c b/src/backenddb/select_login_token.c @@ -47,7 +47,6 @@ TALER_MERCHANTDB_select_login_token ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " expiration_time" diff --git a/src/backenddb/select_money_pot.c b/src/backenddb/select_money_pot.c @@ -54,7 +54,6 @@ TALER_MERCHANTDB_select_money_pot ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " money_pot_name" diff --git a/src/backenddb/select_money_pots.c b/src/backenddb/select_money_pots.c @@ -131,7 +131,6 @@ TALER_MERCHANTDB_select_money_pots ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); if (limit > 0) { TMH_PQ_prepare_anon (pg, diff --git a/src/backenddb/select_order_blinded_sigs.c b/src/backenddb/select_order_blinded_sigs.c @@ -105,7 +105,6 @@ TALER_MERCHANTDB_select_order_blinded_sigs ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " motbs.token_blinded_signature" diff --git a/src/backenddb/select_otp.c b/src/backenddb/select_otp.c @@ -52,7 +52,6 @@ TALER_MERCHANTDB_select_otp ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " otp_description" diff --git a/src/backenddb/select_otp_serial.c b/src/backenddb/select_otp_serial.c @@ -44,7 +44,6 @@ TALER_MERCHANTDB_select_otp_serial ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " otp_serial" diff --git a/src/backenddb/select_product_groups.c b/src/backenddb/select_product_groups.c @@ -120,7 +120,6 @@ TALER_MERCHANTDB_select_product_groups ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); if (limit > 0) { TMH_PQ_prepare_anon (pg, diff --git a/src/backenddb/select_report.c b/src/backenddb/select_report.c @@ -79,7 +79,6 @@ TALER_MERCHANTDB_select_report ( pg->current_merchant_id)); *last_error_detail = NULL; code = TALER_EC_NONE; - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " report_program_section" diff --git a/src/backenddb/select_reports.c b/src/backenddb/select_reports.c @@ -120,7 +120,6 @@ TALER_MERCHANTDB_select_reports ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); if (limit > 0) { TMH_PQ_prepare_anon (pg, diff --git a/src/backenddb/select_unit.c b/src/backenddb/select_unit.c @@ -63,7 +63,6 @@ TALER_MERCHANTDB_select_unit ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); // FIXME: combine both SELECT statements into a single statement! TMH_PQ_prepare_anon (pg, "SELECT" diff --git a/src/backenddb/select_wirewatch_accounts.c b/src/backenddb/select_wirewatch_accounts.c @@ -128,7 +128,6 @@ TALER_MERCHANTDB_select_wirewatch_accounts ( " ,out_credit_facade_url" " ,out_credit_facade_credentials::TEXT" " FROM merchant.select_wirewatch_accounts()"); - check_connection (pg); qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn, "select_wirewatch_progress", params, diff --git a/src/backenddb/set_instance.c b/src/backenddb/set_instance.c @@ -60,7 +60,6 @@ TALER_MERCHANTDB_set_instance ( (0 == strcmp (pg->current_merchant_id, instance_id)) ) return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT; - check_connection (pg); PREPARE (pg, "set_instance_lookup_serial", "SELECT merchant_serial" diff --git a/src/backenddb/start.c b/src/backenddb/start.c @@ -36,7 +36,6 @@ TALER_MERCHANTDB_start ( }; GNUNET_assert (NULL != name); - GNUNET_PQ_reconnect_if_down (pg->conn); TALER_MERCHANTDB_preflight (pg); GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Starting merchant DB transaction `%s'\n", @@ -65,7 +64,6 @@ TALER_MERCHANTDB_start_read_committed ( }; GNUNET_assert (NULL != name); - check_connection (pg); TALER_MERCHANTDB_preflight (pg); GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Starting merchant DB transaction %s (READ COMMITTED)\n", diff --git a/src/backenddb/store_wire_fee_by_exchange.c b/src/backenddb/store_wire_fee_by_exchange.c @@ -61,7 +61,6 @@ TALER_MERCHANTDB_store_wire_fee_by_exchange ( " VALUES " "($1, $2, $3, $4, $5, $6, $7)" " ON CONFLICT DO NOTHING"); - check_connection (pg); GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Storing wire fee for %s starting at %s of %s\n", TALER_B2S (master_pub), diff --git a/src/backenddb/test_merchantdb.c b/src/backenddb/test_merchantdb.c @@ -7568,15 +7568,15 @@ run (void *cls) { struct GNUNET_CONFIGURATION_Handle *cfg = cls; - /* Drop the tables to cleanup anything that might cause issues */ - (void) TALER_MERCHANTDB_drop_tables (cfg); - if (GNUNET_OK != - TALER_MERCHANTDB_create_tables (cfg)) + if (NULL == (pg = TALER_MERCHANTDB_connect (cfg))) { result = 77; return; } - if (NULL == (pg = TALER_MERCHANTDB_connect (cfg))) + /* Drop the tables to cleanup anything that might cause issues */ + (void) TALER_MERCHANTDB_drop_tables (pg); + if (GNUNET_OK != + TALER_MERCHANTDB_create_tables (pg)) { result = 77; return; @@ -7586,19 +7586,18 @@ run (void *cls) result = run_tests (); /* if (0 == result) result = run_test_templates (); */ - - TALER_MERCHANTDB_disconnect (pg); - pg = NULL; - if (0 != result) - return; - if (GNUNET_OK != - TALER_MERCHANTDB_drop_tables (cfg)) + if (0 == result) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Dropping tables failed\n"); - result = 1; - return; + if (GNUNET_OK != + TALER_MERCHANTDB_drop_tables (pg)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Dropping tables failed\n"); + result = 1; + } } + TALER_MERCHANTDB_disconnect (pg); + pg = NULL; } diff --git a/src/backenddb/unlock_inventory.c b/src/backenddb/unlock_inventory.c @@ -35,7 +35,6 @@ TALER_MERCHANTDB_unlock_inventory ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "DELETE" " FROM merchant_inventory_locks" diff --git a/src/backenddb/update_account.c b/src/backenddb/update_account.c @@ -50,7 +50,6 @@ TALER_MERCHANTDB_update_account ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_accounts SET" " credit_facade_url=$2" diff --git a/src/backenddb/update_category.c b/src/backenddb/update_category.c @@ -42,7 +42,6 @@ TALER_MERCHANTDB_update_category ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_categories SET" " category_name=$2" diff --git a/src/backenddb/update_contract_terms.c b/src/backenddb/update_contract_terms.c @@ -74,7 +74,6 @@ TALER_MERCHANTDB_update_contract_terms ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); { struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_string (order_id), diff --git a/src/backenddb/update_deposit_confirmation_status.c b/src/backenddb/update_deposit_confirmation_status.c @@ -48,7 +48,6 @@ TALER_MERCHANTDB_update_deposit_confirmation_status ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_deposits SET" " settlement_retry_needed=$2" diff --git a/src/backenddb/update_donau_instance.c b/src/backenddb/update_donau_instance.c @@ -52,7 +52,6 @@ TALER_MERCHANTDB_update_donau_instance ( memcmp (&charity->charity_pub, &pg->current_merchant_pub, sizeof (charity->charity_pub))); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_donau_instances SET" diff --git a/src/backenddb/update_instance.c b/src/backenddb/update_instance.c @@ -62,7 +62,6 @@ TALER_MERCHANTDB_update_instance ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "update_instance", "UPDATE merchant.merchant_instances SET" diff --git a/src/backenddb/update_instance_auth.c b/src/backenddb/update_instance_auth.c @@ -37,7 +37,6 @@ TALER_MERCHANTDB_update_instance_auth ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "update_instance_auth", "UPDATE merchant.merchant_instances SET" diff --git a/src/backenddb/update_money_pot.c b/src/backenddb/update_money_pot.c @@ -71,7 +71,6 @@ TALER_MERCHANTDB_update_money_pot ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_conflict_name AS conflict_name" diff --git a/src/backenddb/update_otp.c b/src/backenddb/update_otp.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_update_otp ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_otp_devices SET" " otp_description=$2" diff --git a/src/backenddb/update_pending_webhook.c b/src/backenddb/update_pending_webhook.c @@ -36,7 +36,6 @@ TALER_MERCHANTDB_update_pending_webhook ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "update_pending_webhook", "UPDATE merchant.merchant_pending_webhooks SET" diff --git a/src/backenddb/update_product.c b/src/backenddb/update_product.c @@ -107,7 +107,6 @@ TALER_MERCHANTDB_update_product ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_lost_reduced AS lost_reduced" diff --git a/src/backenddb/update_product_group.c b/src/backenddb/update_product_group.c @@ -52,8 +52,6 @@ TALER_MERCHANTDB_update_product_group ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); - TMH_PQ_prepare_anon (pg, "SELECT" " out_conflict AS conflict" diff --git a/src/backenddb/update_report.c b/src/backenddb/update_report.c @@ -62,7 +62,6 @@ TALER_MERCHANTDB_update_report ( GNUNET_TIME_relative_add (frequency, frequency_shift))); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_reports SET" " report_program_section=$2" diff --git a/src/backenddb/update_report_status.c b/src/backenddb/update_report_status.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_update_report_status ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_reports SET" " next_transmission=$2" diff --git a/src/backenddb/update_template.c b/src/backenddb/update_template.c @@ -48,7 +48,6 @@ TALER_MERCHANTDB_update_template ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "WITH otp AS (" " SELECT otp_serial" diff --git a/src/backenddb/update_token_family.c b/src/backenddb/update_token_family.c @@ -49,7 +49,6 @@ TALER_MERCHANTDB_update_token_family ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_token_families SET" " name=$2" diff --git a/src/backenddb/update_transfer_status.c b/src/backenddb/update_transfer_status.c @@ -51,7 +51,6 @@ TALER_MERCHANTDB_update_transfer_status ( }; GNUNET_assert (NULL != pg->current_merchant_id); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_expected_transfers SET" " last_http_status=$3" diff --git a/src/backenddb/update_unit.c b/src/backenddb/update_unit.c @@ -76,7 +76,6 @@ TALER_MERCHANTDB_update_unit ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "SELECT" " out_no_unit" diff --git a/src/backenddb/update_webhook.c b/src/backenddb/update_webhook.c @@ -48,7 +48,6 @@ TALER_MERCHANTDB_update_webhook ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance_id, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_webhook SET" " event_type=$2" diff --git a/src/backenddb/update_wirewatch_progress.c b/src/backenddb/update_wirewatch_progress.c @@ -40,7 +40,6 @@ TALER_MERCHANTDB_update_wirewatch_progress ( GNUNET_assert (NULL != pg->current_merchant_id); GNUNET_assert (0 == strcmp (instance, pg->current_merchant_id)); - check_connection (pg); TMH_PQ_prepare_anon (pg, "UPDATE merchant_accounts" " SET last_bank_serial=$2" diff --git a/src/backenddb/upsert_donau_keys.c b/src/backenddb/upsert_donau_keys.c @@ -46,7 +46,6 @@ TALER_MERCHANTDB_upsert_donau_keys ( GNUNET_PQ_query_param_end }; - check_connection (pg); PREPARE (pg, "insert_donau_keys", "INSERT INTO merchant.merchant_donau_keys" diff --git a/src/include/merchant-database/create_tables.h b/src/include/merchant-database/create_tables.h @@ -28,11 +28,11 @@ /** * Initialize tables. * - * @param cfg configuration to use + * @param pg database connection to use * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure */ enum GNUNET_GenericReturnValue TALER_MERCHANTDB_create_tables ( - const struct GNUNET_CONFIGURATION_Handle *cfg); + struct TALER_MERCHANTDB_PostgresContext *pg); #endif diff --git a/src/include/merchant-database/drop_tables.h b/src/include/merchant-database/drop_tables.h @@ -29,11 +29,11 @@ /** * Drop all Taler tables. * - * @param cfg configuration to use + * @param pg database connection to use * @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure */ enum GNUNET_GenericReturnValue TALER_MERCHANTDB_drop_tables ( - const struct GNUNET_CONFIGURATION_Handle *cfg); + struct TALER_MERCHANTDB_PostgresContext *pg); #endif diff --git a/src/merchant-tools/taler-merchant-dbinit.c b/src/merchant-tools/taler-merchant-dbinit.c @@ -60,10 +60,18 @@ run (void *cls, { struct TALER_MERCHANTDB_PostgresContext *pg; + pg = TALER_MERCHANTDB_connect (cfg); + if (NULL == pg) + { + fprintf (stderr, + "Failed to initialize database connection.\n"); + global_ret = 1; + return; + } if (reset_db) { if (GNUNET_OK != - TALER_MERCHANTDB_drop_tables (cfg)) + TALER_MERCHANTDB_drop_tables (pg)) { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Failed to reset the database\n"); @@ -71,14 +79,6 @@ run (void *cls, } if (gc_db) { - if (NULL == - (pg = TALER_MERCHANTDB_connect (cfg))) - { - fprintf (stderr, - "Failed to initialize database connection.\n"); - global_ret = 1; - return; - } if (GNUNET_OK != TALER_MERCHANTDB_gc (pg)) { @@ -87,16 +87,14 @@ run (void *cls, "Failed to garbage collect database\n"); } TALER_MERCHANTDB_disconnect (pg); + return; } - else + if (GNUNET_OK != + TALER_MERCHANTDB_create_tables (pg)) { - if (GNUNET_OK != - TALER_MERCHANTDB_create_tables (cfg)) - { - global_ret = 1; - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to initialize tables\n"); - } + global_ret = 1; + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to initialize tables\n"); } }