summaryrefslogtreecommitdiff
path: root/src/backenddb
diff options
context:
space:
mode:
authorJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-06-18 20:27:04 -0400
committerJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-06-18 20:27:04 -0400
commit566408fa02acf56bbf6063c6d17d739e491e27f2 (patch)
tree35fe5a5be349e908f4fccd1d036d718f15abd221 /src/backenddb
parent6624576c0cdd81072256d8abbfe6dd1343f956c6 (diff)
downloadmerchant-566408fa02acf56bbf6063c6d17d739e491e27f2.tar.gz
merchant-566408fa02acf56bbf6063c6d17d739e491e27f2.tar.bz2
merchant-566408fa02acf56bbf6063c6d17d739e491e27f2.zip
stricter tests for tips/reserves
Diffstat (limited to 'src/backenddb')
-rw-r--r--src/backenddb/plugin_merchantdb_postgres.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/backenddb/plugin_merchantdb_postgres.c b/src/backenddb/plugin_merchantdb_postgres.c
index db9e9c51..7188839e 100644
--- a/src/backenddb/plugin_merchantdb_postgres.c
+++ b/src/backenddb/plugin_merchantdb_postgres.c
@@ -4889,6 +4889,12 @@ RETRY:
postgres_rollback (pg);
return TALER_EC_TIP_AUTHORIZE_DB_LOOKUP_RESERVE_FAILURE;
}
+ if (qs == 0)
+ {
+ GNUNET_break (0);
+ postgres_rollback (pg);
+ return TALER_EC_TIP_AUTHORIZE_DB_RESERVE_NOT_FOUND;
+ }
}
{
struct TALER_Amount remaining;
@@ -5354,13 +5360,14 @@ lookup_pickup_details_cb (void *cls,
for (unsigned int i = 0; i < num_results; i++)
{
struct TALER_MERCHANTDB_PickupDetails *pd = &((*ltdc->pickups)[i]);
+ uint64_t num_planchets = 0;
struct GNUNET_PQ_ResultSpec rs[] = {
GNUNET_PQ_result_spec_auto_from_type ("pickup_id",
&pd->pickup_id),
TALER_PQ_RESULT_SPEC_AMOUNT ("amount",
&pd->requested_amount),
- GNUNET_PQ_result_spec_uint32 ("num_planchets",
- &pd->num_planchets),
+ GNUNET_PQ_result_spec_uint64 ("num_planchets",
+ &num_planchets),
GNUNET_PQ_result_spec_end
};
@@ -5376,6 +5383,8 @@ lookup_pickup_details_cb (void *cls,
0);
return;
}
+
+ pd->num_planchets = num_planchets;
}
}
@@ -5457,7 +5466,8 @@ postgres_lookup_tip_details (void *cls,
struct LookupTipDetailsContext ltdc = {
.pickups_length = pickups_length,
.pickups = pickups,
- .pg = pg
+ .pg = pg,
+ .qs = GNUNET_DB_STATUS_SUCCESS_ONE_RESULT
};
qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
@@ -7835,14 +7845,11 @@ libtaler_plugin_merchantdb_postgres_init (void *cls)
" pickup_id"
",amount_val"
",amount_frac"
- ",(SELECT"
- " COUNT(blind_sig)"
- " FROM merchant_tip_pickups"
- " JOIN merchant_tip_pickup_signatures USING (pickup_serial)"
- " WHERE tip_serial = $1)"
- " AS num_planchets"
+ ",COUNT(blind_sig) AS num_planchets"
" FROM merchant_tip_pickups"
- " WHERE tip_serial = $1",
+ " JOIN merchant_tip_pickup_signatures USING (pickup_serial)"
+ " WHERE tip_serial = $1"
+ " GROUP BY pickup_serial",
1),
/* for postgres_insert_pickup() */
GNUNET_PQ_make_prepare ("insert_pickup",