Update batch insert 1

This commit is contained in:
Joseph 2022-12-28 05:40:18 -05:00
parent aff9dc1848
commit a4886dc22d
No known key found for this signature in database
GPG Key ID: E709789D3076B5CC
2 changed files with 22 additions and 25 deletions

View File

@ -122,17 +122,16 @@ TEH_PG_batch_reserves_in_insert (
for (unsigned int i = 0; i<reserves_length; i++) for (unsigned int i = 0; i<reserves_length; i++)
{ {
const struct TALER_EXCHANGEDB_ReserveInInfo *reserve = &reserves[i];
struct GNUNET_PQ_QueryParam params[] = { struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (reserve->reserve_pub), GNUNET_PQ_query_param_auto_from_type (reserves[i].reserve_pub),
GNUNET_PQ_query_param_timestamp (&expiry), GNUNET_PQ_query_param_timestamp (&expiry),
GNUNET_PQ_query_param_timestamp (&gc), GNUNET_PQ_query_param_timestamp (&gc),
GNUNET_PQ_query_param_uint64 (&reserve->wire_reference), GNUNET_PQ_query_param_uint64 (&reserves[i].wire_reference),
TALER_PQ_query_param_amount (reserve->balance), TALER_PQ_query_param_amount (reserves[i].balance),
GNUNET_PQ_query_param_string (reserve->exchange_account_name), GNUNET_PQ_query_param_string (reserves[i].exchange_account_name),
GNUNET_PQ_query_param_timestamp (&reserve->execution_time), GNUNET_PQ_query_param_timestamp (&reserves[i].execution_time),
GNUNET_PQ_query_param_auto_from_type (&h_payto), GNUNET_PQ_query_param_auto_from_type (&h_payto),
GNUNET_PQ_query_param_string (reserve->sender_account_details), GNUNET_PQ_query_param_string (reserves[i].sender_account_details),
GNUNET_PQ_query_param_timestamp (&reserve_expiration), GNUNET_PQ_query_param_timestamp (&reserve_expiration),
GNUNET_PQ_query_param_string (notify_s[i]), GNUNET_PQ_query_param_string (notify_s[i]),
GNUNET_PQ_query_param_end GNUNET_PQ_query_param_end
@ -148,7 +147,7 @@ TEH_PG_batch_reserves_in_insert (
GNUNET_PQ_result_spec_end GNUNET_PQ_result_spec_end
}; };
TALER_payto_hash (reserve->sender_account_details, TALER_payto_hash (reserves[i].sender_account_details,
&h_payto); &h_payto);
/* Note: query uses 'on conflict do nothing' */ /* Note: query uses 'on conflict do nothing' */
@ -165,12 +164,10 @@ TEH_PG_batch_reserves_in_insert (
return qs1; return qs1;
} }
GNUNET_assert (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != qs1); GNUNET_assert (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != qs1);
results[i] = (transaction_duplicate)
? GNUNET_DB_STATUS_SUCCESS_NO_RESULTS
: GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
conflicts[i] = conflicted; conflicts[i] = conflicted;
// fprintf(stdout, "%d", conflicts[i]); // fprintf(stdout, "%d", conflicts[i]);
if (!conflicts[i] && transaction_duplicate) if (conflicts[i] && transaction_duplicate)
{ {
GNUNET_break (0); GNUNET_break (0);
TEH_PG_rollback (pg); TEH_PG_rollback (pg);
@ -210,13 +207,12 @@ TEH_PG_batch_reserves_in_insert (
if (! conflicts[i]) if (! conflicts[i])
continue; continue;
{ {
const struct TALER_EXCHANGEDB_ReserveInInfo *reserve = &reserves[i];
struct GNUNET_PQ_QueryParam params[] = { struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (reserve->reserve_pub), GNUNET_PQ_query_param_auto_from_type (reserves[i].reserve_pub),
GNUNET_PQ_query_param_timestamp (&expiry), GNUNET_PQ_query_param_timestamp (&expiry),
GNUNET_PQ_query_param_uint64 (&reserve->wire_reference), GNUNET_PQ_query_param_uint64 (&reserves[i].wire_reference),
TALER_PQ_query_param_amount (reserve->balance), TALER_PQ_query_param_amount (reserves[i].balance),
GNUNET_PQ_query_param_string (reserve->exchange_account_name), GNUNET_PQ_query_param_string (reserves[i].exchange_account_name),
GNUNET_PQ_query_param_bool (conflicted), GNUNET_PQ_query_param_bool (conflicted),
GNUNET_PQ_query_param_auto_from_type (&h_payto), GNUNET_PQ_query_param_auto_from_type (&h_payto),
GNUNET_PQ_query_param_string (notify_s[i]), GNUNET_PQ_query_param_string (notify_s[i]),

View File

@ -100,8 +100,9 @@ run (void *cls)
unsigned int batch_size = batches[i]; unsigned int batch_size = batches[i];
struct GNUNET_TIME_Absolute now; struct GNUNET_TIME_Absolute now;
struct GNUNET_TIME_Timestamp ts; struct GNUNET_TIME_Timestamp ts;
unsigned int iterations = 1024 / batch_size; unsigned int iterations = 16;
struct GNUNET_TIME_Relative duration; struct GNUNET_TIME_Relative duration;
struct TALER_ReservePublicKeyP reserve_pubs[batch_size];
struct TALER_EXCHANGEDB_ReserveInInfo reserves[batch_size]; struct TALER_EXCHANGEDB_ReserveInInfo reserves[batch_size];
enum GNUNET_DB_QueryStatus results[batch_size]; enum GNUNET_DB_QueryStatus results[batch_size];
GNUNET_assert (GNUNET_OK == GNUNET_assert (GNUNET_OK ==
@ -110,23 +111,23 @@ run (void *cls)
now = GNUNET_TIME_absolute_get (); now = GNUNET_TIME_absolute_get ();
ts = GNUNET_TIME_timestamp_get (); ts = GNUNET_TIME_timestamp_get ();
for (unsigned int r = 0; r<iterations; r++)
{ for (unsigned int k = 0; k<batch_size; k++)
for (unsigned int k = 0; k<batch_size; k++)
{ {
RND_BLK (&reserves[k].reserve_pub); RND_BLK (&reserve_pubs[k]);
reserves[k].balance = value; reserves[k].reserve_pub = &reserve_pubs[k];
reserves[k].balance = &value;
reserves[k].execution_time = ts; reserves[k].execution_time = ts;
reserves[k].sender_account_details = sndr; reserves[k].sender_account_details = sndr;
reserves[k].exchange_account_name = "name"; reserves[k].exchange_account_name = "name";
reserves[k].wire_reference = k; reserves[k].wire_reference = k;
} }
FAILIF (batch_size != FAILIF (batch_size !=
plugin->batch_reserves_in_insert (plugin->cls, plugin->batch_reserves_in_insert (plugin->cls,
reserves, reserves,
batch_size, batch_size,
results)); results));
}
duration = GNUNET_TIME_absolute_get_duration (now); duration = GNUNET_TIME_absolute_get_duration (now);
fprintf (stdout, fprintf (stdout,