donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

commit 13c00aec1fff3af42899379d540a2745f1fac95b
parent c49d8a7bffb5e8e3f79b250a6102eee6d84b7250
Author: Christian Grothoff <christian@grothoff.org>
Date:   Wed, 24 Apr 2024 13:14:04 +0200

fix DB client

Diffstat:
Msrc/donaudb/donau_do_insert_submitted_receipts.sql | 11++++++-----
Msrc/donaudb/pg_insert_submitted_receipts.c | 35++++++++++++++++++-----------------
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; }