commit 13c00aec1fff3af42899379d540a2745f1fac95b
parent c49d8a7bffb5e8e3f79b250a6102eee6d84b7250
Author: Christian Grothoff <christian@grothoff.org>
Date: Wed, 24 Apr 2024 13:14:04 +0200
fix DB client
Diffstat:
2 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/src/donaudb/donau_do_insert_submitted_receipts.sql b/src/donaudb/donau_do_insert_submitted_receipts.sql
@@ -20,7 +20,7 @@ CREATE OR REPLACE FUNCTION donau_do_insert_submitted_receipts(
IN ina_donau_sigs BYTEA[],
IN in_dontation_year INT8,
--
- OUT out_conflict BOOL
+ OUT out_conflict BOOL[]
)
LANGUAGE plpgsql
AS $$
@@ -56,12 +56,13 @@ LOOP
,in_donation_year
)
ON CONFLICT DO NOTHING;
-
-
+ out_conflict[i] = FALSE;
IF NOT FOUND
THEN
- -- FIXME
- RETURN;
+ PERFORM FROM receipts_submitted
+ WHERE h_tax_number=in_h_tax_number
+ AND donau_sig=ini_donau_sig; -- if signature matches, everything must match
+ out_conflict[i] = NOT FOUND;
END IF;
END LOOP; -- end FOR all coins
diff --git a/src/donaudb/pg_insert_submitted_receipts.c b/src/donaudb/pg_insert_submitted_receipts.c
@@ -30,38 +30,37 @@ enum GNUNET_DB_QueryStatus
DH_PG_insert_submitted_receipts (
void *cls,
const struct DONAU_HashDonorTaxId *h_tax_number,
- const struct DONAU_DonationReceipt *donation_receipts,
- const size_t num_dr,
- const uint64_t donation_year)
+ size_t num_dr,
+ const struct DONAU_DonationReceipt donation_receipts[static num_dr],
+ uint64_t donation_year)
{
struct PostgresClosure *pg = cls;
-
- struct DONAU_DonationUnitHashP *h_donation_unit_pubs;
- union GNUNET_CRYPTO_BlindSessionNonce *nonces;
- struct DONAU_DonauSignatureP *donau_sigs;
-
+ struct DONAU_DonationUnitHashP *h_donation_unit_pubs[GNUNET_NZL (num_dr)];
+ union GNUNET_CRYPTO_BlindSessionNonce *nonces[GNUNET_NZL (num_dr)];
+ struct DONAU_DonauSignatureP *donau_sigs[GNUNET_NZL (num_dr)];
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (h_tax_number),
GNUNET_PQ_query_param_array_ptrs_auto_from_type (num_dr,
- &h_donation_unit_pubs,
+ h_donation_unit_pubs,
pg->conn),
GNUNET_PQ_query_param_array_ptrs_auto_from_type (num_dr,
- &nonces,
+ nonces,
pg->conn),
GNUNET_PQ_query_param_array_ptrs_auto_from_type (num_dr,
- &donau_sigs,
+ donau_sigs,
pg->conn),
GNUNET_PQ_query_param_uint64 (&donation_year),
GNUNET_PQ_query_param_end
};
+ enum GNUNET_DB_QueryStatus qs;
for (unsigned int i = 0; i < num_dr; i++)
{
const struct DONAU_DonationReceipt *dr = &donation_receipts[i];
- h_donation_unit_pubs[i] = dr->h_donation_unit_pub;
- nonces[i] = *dr->nonce;
- donau_sigs[i] = dr->donau_sig;
+ h_donation_unit_pubs[i] = &dr->h_donation_unit_pub;
+ nonces[i] = dr->nonce;
+ donau_sigs[i] = &dr->donau_sig;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Do insert submitted receipt\n");
@@ -74,7 +73,9 @@ DH_PG_insert_submitted_receipts (
" FROM do_insert_submitted_receipts"
" ($1,$2,$3,$4,$5);");
- return GNUNET_PQ_eval_prepared_non_select (pg->conn,
- "call_insert_submitted_receipts",
- params);
+ qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
+ "call_insert_submitted_receipts",
+ params);
+ GNUNET_PQ_cleanup_query_params_closures (params);
+ return qs;
}