diff options
Diffstat (limited to 'src/exchangedb/pg_get_ready_deposit.c')
-rw-r--r-- | src/exchangedb/pg_get_ready_deposit.c | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/src/exchangedb/pg_get_ready_deposit.c b/src/exchangedb/pg_get_ready_deposit.c index af1235293..d8344faf1 100644 --- a/src/exchangedb/pg_get_ready_deposit.c +++ b/src/exchangedb/pg_get_ready_deposit.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2022 Taler Systems SA + Copyright (C) 2022, 2023 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -34,7 +34,8 @@ TEH_PG_get_ready_deposit (void *cls, char **payto_uri) { struct PostgresClosure *pg = cls; - struct GNUNET_TIME_Absolute now = {0}; + struct GNUNET_TIME_Absolute now + = GNUNET_TIME_absolute_get (); struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_absolute_time (&now), GNUNET_PQ_query_param_uint64 (&start_shard_row), @@ -48,35 +49,26 @@ TEH_PG_get_ready_deposit (void *cls, payto_uri), GNUNET_PQ_result_spec_end }; + const char *query = "deposits_get_ready"; - now = GNUNET_TIME_absolute_round_down (GNUNET_TIME_absolute_get (), - pg->aggregator_shift); - GNUNET_assert (start_shard_row < end_shard_row); - GNUNET_assert (end_shard_row <= INT32_MAX); - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - "Finding ready deposits by deadline %s (%llu)\n", - GNUNET_TIME_absolute2s (now), - (unsigned long long) now.abs_value_us); PREPARE (pg, - "deposits_get_ready", + query, "SELECT" - " payto_uri" - ",merchant_pub" - " FROM deposits_by_ready dbr" - " JOIN deposits dep" - " ON (dbr.coin_pub = dep.coin_pub AND" - " dbr.deposit_serial_id = dep.deposit_serial_id)" - " JOIN wire_targets wt" - " USING (wire_target_h_payto)" - " WHERE dbr.wire_deadline<=$1" - " AND dbr.shard >= $2" - " AND dbr.shard <= $3" + " wts.payto_uri" + ",bdep.merchant_pub" + " FROM batch_deposits bdep" + " JOIN wire_targets wts" + " USING (wire_target_h_payto)" + " WHERE NOT (bdep.done OR bdep.policy_blocked)" + " AND bdep.wire_deadline<=$1" + " AND bdep.shard >= $2" + " AND bdep.shard <= $3" " ORDER BY " - " dbr.wire_deadline ASC" - " ,dbr.shard ASC" + " bdep.wire_deadline ASC" + " ,bdep.shard ASC" " LIMIT 1;"); return GNUNET_PQ_eval_prepared_singleton_select (pg->conn, - "deposits_get_ready", + query, params, rs); } |