summaryrefslogtreecommitdiff
path: root/src/backenddb/pg_helper.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2024-01-02 13:30:29 +0100
committerChristian Grothoff <christian@grothoff.org>2024-01-02 13:30:29 +0100
commitc92a38927231949b4f5b9a133c6934b04031339c (patch)
tree0ec0f9f9e44acff62296597139620be8caf17395 /src/backenddb/pg_helper.c
parent673edc82adea15b687cafac882f3f71409ac5aad (diff)
downloadmerchant-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.c23
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;
}