diff options
author | Christian Grothoff <christian@grothoff.org> | 2024-01-02 13:30:29 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2024-01-02 13:30:29 +0100 |
commit | c92a38927231949b4f5b9a133c6934b04031339c (patch) | |
tree | 0ec0f9f9e44acff62296597139620be8caf17395 /src/backenddb/pg_helper.c | |
parent | 673edc82adea15b687cafac882f3f71409ac5aad (diff) | |
download | merchant-c92a38927231949b4f5b9a133c6934b04031339c.tar.gz merchant-c92a38927231949b4f5b9a133c6934b04031339c.tar.bz2 merchant-c92a38927231949b4f5b9a133c6934b04031339c.zip |
fix reconnect commit statement problem
Diffstat (limited to 'src/backenddb/pg_helper.c')
-rw-r--r-- | src/backenddb/pg_helper.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/backenddb/pg_helper.c b/src/backenddb/pg_helper.c index 2ac047b1..802abc21 100644 --- a/src/backenddb/pg_helper.c +++ b/src/backenddb/pg_helper.c @@ -38,6 +38,7 @@ TMH_PG_start (void *cls, GNUNET_PQ_EXECUTE_STATEMENT_END }; + GNUNET_assert (NULL != name); check_connection (pg); postgres_preflight (pg); GNUNET_log (GNUNET_ERROR_TYPE_INFO, @@ -66,6 +67,7 @@ TMH_PG_start_read_committed (void *cls, GNUNET_PQ_EXECUTE_STATEMENT_END }; + GNUNET_assert (NULL != name); check_connection (pg); postgres_preflight (pg); GNUNET_log (GNUNET_ERROR_TYPE_INFO, @@ -93,6 +95,8 @@ TMH_PG_rollback (void *cls) GNUNET_PQ_EXECUTE_STATEMENT_END }; + if (NULL == pg->transaction_name) + return; GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Rolling back merchant DB transaction `%s'\n", pg->transaction_name); @@ -110,12 +114,25 @@ TMH_PG_commit (void *cls) struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_end }; + enum GNUNET_DB_QueryStatus qs; GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Committing merchant DB transaction %s\n", pg->transaction_name); + check_connection (pg); + PREPARE (pg, + "merchant_commit", + "COMMIT"); + qs = GNUNET_PQ_eval_prepared_non_select (pg->conn, + "merchant_commit", + params); + if (qs < 0) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Failed to commit transaction\n"); + TMH_PG_rollback (pg); + return qs; + } pg->transaction_name = NULL; - return GNUNET_PQ_eval_prepared_non_select (pg->conn, - "end_transaction", - params); + return qs; } |