diff options
author | Joseph <Joseph.xu@efrei.net> | 2022-12-20 09:09:03 -0500 |
---|---|---|
committer | Joseph <Joseph.xu@efrei.net> | 2022-12-21 05:29:47 -0500 |
commit | 802dbaefc984807c54000bd9f695254690dbdcd5 (patch) | |
tree | d72b0ff8f2c00c526e4314055a5f0cb06da69789 /src | |
parent | 287370b4cbcd3062da83bed9b4b6935532899992 (diff) | |
download | exchange-802dbaefc984807c54000bd9f695254690dbdcd5.tar.xz |
add batch8
Diffstat (limited to 'src')
-rw-r--r-- | src/exchangedb/exchange_do_batch4_reserves_in_insert.sql | 153 | ||||
-rw-r--r-- | src/exchangedb/exchange_do_batch_reserves_update.sql | 4 | ||||
-rw-r--r-- | src/exchangedb/pg_batch2_reserves_in_insert.c | 291 | ||||
-rw-r--r-- | src/exchangedb/procedures.sql.in | 2 | ||||
-rw-r--r-- | src/exchangedb/test_exchangedb_by_j.c | 8 |
5 files changed, 332 insertions, 126 deletions
diff --git a/src/exchangedb/exchange_do_batch4_reserves_in_insert.sql b/src/exchangedb/exchange_do_batch4_reserves_in_insert.sql index ece926989..bf3b2eaa2 100644 --- a/src/exchangedb/exchange_do_batch4_reserves_in_insert.sql +++ b/src/exchangedb/exchange_do_batch4_reserves_in_insert.sql @@ -72,15 +72,10 @@ LANGUAGE plpgsql AS $$ DECLARE curs_reserve_exist refcursor; - DECLARE - curs_transaction_exist CURSOR - FOR SELECT reserve_pub - FROM reserves_in - WHERE in_reserve_pub = reserves_in.reserve_pub - OR in2_reserve_pub = reserves_in.reserve_pub - OR in3_reserve_pub = reserves_in.reserve_pub - OR in4_reserve_pub = reserves_in.reserve_pub; + k INT8; +DECLARE + curs_transaction_exist refcursor; DECLARE i RECORD; @@ -98,7 +93,7 @@ BEGIN ruuid2=0; ruuid3=0; ruuid4=0; - + k=0; --SIMPLE INSERT ON CONFLICT DO NOTHING INSERT INTO wire_targets (wire_target_h_payto @@ -147,104 +142,41 @@ BEGIN RETURNING reserve_uuid,reserve_pub) SELECT * FROM reserve_changes; - FETCH FROM curs_reserve_exist INTO i; - IF FOUND - THEN - IF in_reserve_pub = i.reserve_pub - THEN - out_reserve_found = FALSE; - ruuid = i.reserve_uuid; - END IF; - IF in2_reserve_pub = i.reserve_pub - THEN - out_reserve_found2 = FALSE; - ruuid2 = i.reserve_uuid; - END IF; - IF in3_reserve_pub = i.reserve_pub - THEN - out_reserve_found3 = FALSE; - ruuid3 = i.reserve_uuid; - END IF; - IF in4_reserve_pub = i.reserve_pub - THEN - out_reserve_found4 = FALSE; - ruuid4 = i.reserve_uuid; - END IF; + WHILE k < 4 LOOP FETCH FROM curs_reserve_exist INTO i; IF FOUND THEN IF in_reserve_pub = i.reserve_pub THEN - out_reserve_found = FALSE; - ruuid = i.reserve_uuid; - END IF; - IF in2_reserve_pub = i.reserve_pub - THEN - out_reserve_found2 = FALSE; - ruuid2 = i.reserve_uuid; - END IF; - IF in3_reserve_pub = i.reserve_pub - THEN - out_reserve_found3 = FALSE; - ruuid3 = i.reserve_uuid; - END IF; - IF in4_reserve_pub = i.reserve_pub - THEN - out_reserve_found4 = FALSE; - ruuid4 = i.reserve_uuid; - END IF; - END IF; - FETCH FROM curs_reserve_exist INTO i; - IF FOUND - THEN - IF in_reserve_pub = i.reserve_pub - THEN - out_reserve_found = FALSE; - ruuid = i.reserve_uuid; + out_reserve_found = FALSE; + ruuid = i.reserve_uuid; + k = k+1; END IF; IF in2_reserve_pub = i.reserve_pub THEN out_reserve_found2 = FALSE; ruuid2 = i.reserve_uuid; + k=k+1; END IF; IF in3_reserve_pub = i.reserve_pub THEN out_reserve_found3 = FALSE; ruuid3 = i.reserve_uuid; + k=k+1; END IF; IF in4_reserve_pub = i.reserve_pub THEN out_reserve_found4 = FALSE; ruuid4 = i.reserve_uuid; + k=k+1; END IF; END IF; - FETCH FROM curs_reserve_exist INTO i; - IF FOUND - THEN - IF in_reserve_pub = i.reserve_pub - THEN - out_reserve_found = FALSE; - ruuid = i.reserve_uuid; - END IF; - IF in2_reserve_pub = i.reserve_pub - THEN - out_reserve_found2 = FALSE; - ruuid2 = i.reserve_uuid; - END IF; - IF in3_reserve_pub = i.reserve_pub - THEN - out_reserve_found3 = FALSE; - ruuid3 = i.reserve_uuid; - END IF; - IF in4_reserve_pub = i.reserve_pub - THEN - out_reserve_found4 = FALSE; - ruuid4 = i.reserve_uuid; - END IF; - END IF; - END IF; + END LOOP; CLOSE curs_reserve_exist; - IF out_reserve_found AND out_reserve_found2 AND out_reserve_found3 AND out_reserve_found4 + IF out_reserve_found + AND out_reserve_found2 + AND out_reserve_found3 + AND out_reserve_found4 THEN RETURN; END IF; @@ -254,7 +186,10 @@ BEGIN PERFORM pg_notify(in3_notify, NULL); PERFORM pg_notify(in4_notify, NULL); - INSERT INTO reserves_in + k=0; + OPEN curs_transaction_exist FOR + WITH reserve_in_changes AS ( + INSERT INTO reserves_in (reserve_pub ,wire_reference ,credit_val @@ -262,7 +197,7 @@ BEGIN ,exchange_account_section ,wire_source_h_payto ,execution_date) - VALUES + VALUES (in_reserve_pub ,in_wire_ref ,in_credit_val @@ -291,43 +226,39 @@ BEGIN ,in4_exchange_account_name ,in4_wire_source_h_payto ,in_expiration_date) - ON CONFLICT DO NOTHING; - IF FOUND - THEN - transaction_duplicate = FALSE; /*HAPPY PATH THERE IS NO DUPLICATE TRANS AND NEW RESERVE*/ - transaction_duplicate2 = FALSE; - transaction_duplicate3 = FALSE; - transaction_duplicate4 = FALSE; - RETURN; - ELSE - FOR l IN curs_transaction_exist - LOOP - IF in_reserve_pub = l.reserve_pub + ON CONFLICT DO NOTHING + RETURNING reserve_pub) + SELECT * FROM reserve_in_changes; + WHILE k < 4 LOOP + FETCH FROM curs_transaction_exist INTO i; + IF FOUND + THEN + IF in_reserve_pub = i.reserve_pub THEN transaction_duplicate = TRUE; + k=k+1; END IF; - - IF in2_reserve_pub = l.reserve_pub + IF in2_reserve_pub = i.reserve_pub THEN transaction_duplicate2 = TRUE; + k=k+1; END IF; - IF in3_reserve_pub = l.reserve_pub + IF in3_reserve_pub = i.reserve_pub THEN transaction_duplicate3 = TRUE; + k=k+1; END IF; - IF in4_reserve_pub = l.reserve_pub + IF in4_reserve_pub = i.reserve_pub THEN transaction_duplicate4 = TRUE; + k=k+1; END IF; - - IF transaction_duplicate AND transaction_duplicate2 AND transaction_duplicate3 AND transaction_duplicate4 - THEN - RETURN; - END IF; - END LOOP; - END IF; - - CLOSE curs_reserve_exist; + END IF; + END LOOP; CLOSE curs_transaction_exist; + RETURN; + + + END $$; diff --git a/src/exchangedb/exchange_do_batch_reserves_update.sql b/src/exchangedb/exchange_do_batch_reserves_update.sql index f6b972c67..a6b7122d5 100644 --- a/src/exchangedb/exchange_do_batch_reserves_update.sql +++ b/src/exchangedb/exchange_do_batch_reserves_update.sql @@ -23,7 +23,7 @@ CREATE OR REPLACE PROCEDURE exchange_do_batch_reserves_update( IN in_exchange_account_name VARCHAR, IN in_reserve_found BOOLEAN, IN in_wire_source_h_payto BYTEA, - IN in_notify text) ---h_payto + IN in_notify text) LANGUAGE plpgsql AS $$ BEGIN @@ -48,7 +48,7 @@ BEGIN --IF THE INSERTION WAS A SUCCESS IT MEANS NO DUPLICATED TRANSACTION IF FOUND THEN --- transaction_duplicate = FALSE; + IF in_reserve_found THEN UPDATE reserves diff --git a/src/exchangedb/pg_batch2_reserves_in_insert.c b/src/exchangedb/pg_batch2_reserves_in_insert.c index 5518b2c6c..f80f7ea07 100644 --- a/src/exchangedb/pg_batch2_reserves_in_insert.c +++ b/src/exchangedb/pg_batch2_reserves_in_insert.c @@ -217,7 +217,10 @@ insert2 (struct PostgresClosure *pg, ? GNUNET_DB_STATUS_SUCCESS_NO_RESULTS : GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;*/ - if (((conflict[0]) && (transaction_duplicate[0])) ||((conflict[1]) && (transaction_duplicate[1]))) + if ( + ((conflict[0]) && (transaction_duplicate[0])) + ||((conflict[1]) && (transaction_duplicate[1])) + ) { GNUNET_break (0); TEH_PG_rollback (pg); @@ -358,7 +361,12 @@ insert4 (struct PostgresClosure *pg, ? GNUNET_DB_STATUS_SUCCESS_NO_RESULTS : GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;*/ - if (((conflict[0]) && (transaction_duplicate[0])) ||((conflict[1]) && (transaction_duplicate[1])) ||((conflict[2]) && (transaction_duplicate[2])) ||((conflict[3]) && (transaction_duplicate[3]))) + if ( + ((conflict[0]) && (transaction_duplicate[0])) + ||((conflict[1]) && (transaction_duplicate[1])) + ||((conflict[2]) && (transaction_duplicate[2])) + ||((conflict[3]) && (transaction_duplicate[3])) + ) { GNUNET_break (0); TEH_PG_rollback (pg); @@ -368,6 +376,238 @@ insert4 (struct PostgresClosure *pg, } +static enum GNUNET_DB_QueryStatus +insert8 (struct PostgresClosure *pg, + const struct TALER_EXCHANGEDB_ReserveInInfo reserves[8], + struct GNUNET_TIME_Timestamp expiry, + struct GNUNET_TIME_Timestamp gc, + struct TALER_PaytoHashP h_payto, + char *const*notify_s, + struct GNUNET_TIME_Timestamp reserve_expiration, + bool *transaction_duplicate, + bool *conflict, + uint64_t *reserve_uuid) +{ + enum GNUNET_DB_QueryStatus qs3; + PREPARE (pg, + "batch8_reserve_create", + "SELECT " + "out_reserve_found AS conflicted" + ",out_reserve_found2 AS conflicted2" + ",out_reserve_found3 AS conflicted3" + ",out_reserve_found4 AS conflicted4" + ",out_reserve_found5 AS conflicted5" + ",out_reserve_found6 AS conflicted6" + ",out_reserve_found7 AS conflicted7" + ",out_reserve_found8 AS conflicted8" + ",transaction_duplicate" + ",transaction_duplicate2" + ",transaction_duplicate3" + ",transaction_duplicate4" + ",transaction_duplicate5" + ",transaction_duplicate6" + ",transaction_duplicate7" + ",transaction_duplicate8" + ",ruuid AS reserve_uuid" + ",ruuid2 AS reserve_uuid2" + ",ruuid3 AS reserve_uuid3" + ",ruuid4 AS reserve_uuid4" + ",ruuid5 AS reserve_uuid5" + ",ruuid6 AS reserve_uuid6" + ",ruuid7 AS reserve_uuid7" + ",ruuid8 AS reserve_uuid8" + " FROM exchange_do_batch8_reserves_insert" + " ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39, $40, $41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,$81,$82);"); + + struct GNUNET_PQ_QueryParam params[] = { + GNUNET_PQ_query_param_auto_from_type (reserves[0].reserve_pub), + GNUNET_PQ_query_param_timestamp (&expiry), + GNUNET_PQ_query_param_timestamp (&gc), + GNUNET_PQ_query_param_uint64 (&reserves[0].wire_reference), + TALER_PQ_query_param_amount (reserves[0].balance), + GNUNET_PQ_query_param_string (reserves[0].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[0].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[0].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + GNUNET_PQ_query_param_string (notify_s[0]), + GNUNET_PQ_query_param_string (notify_s[1]), + GNUNET_PQ_query_param_string (notify_s[2]), + GNUNET_PQ_query_param_string (notify_s[3]), + GNUNET_PQ_query_param_string (notify_s[4]), + GNUNET_PQ_query_param_string (notify_s[5]), + GNUNET_PQ_query_param_string (notify_s[6]), + GNUNET_PQ_query_param_string (notify_s[7]), + + GNUNET_PQ_query_param_auto_from_type (reserves[1].reserve_pub), + GNUNET_PQ_query_param_uint64 (&reserves[1].wire_reference), + TALER_PQ_query_param_amount (reserves[1].balance), + GNUNET_PQ_query_param_string (reserves[1].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[1].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[1].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + + GNUNET_PQ_query_param_auto_from_type (reserves[2].reserve_pub), + GNUNET_PQ_query_param_uint64 (&reserves[2].wire_reference), + TALER_PQ_query_param_amount (reserves[2].balance), + GNUNET_PQ_query_param_string (reserves[2].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[2].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[2].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + + GNUNET_PQ_query_param_auto_from_type (reserves[3].reserve_pub), + GNUNET_PQ_query_param_uint64 (&reserves[3].wire_reference), + TALER_PQ_query_param_amount (reserves[3].balance), + GNUNET_PQ_query_param_string (reserves[3].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[3].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[3].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + + GNUNET_PQ_query_param_auto_from_type (reserves[4].reserve_pub), + GNUNET_PQ_query_param_uint64 (&reserves[4].wire_reference), + TALER_PQ_query_param_amount (reserves[4].balance), + GNUNET_PQ_query_param_string (reserves[4].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[4].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[4].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + + GNUNET_PQ_query_param_auto_from_type (reserves[5].reserve_pub), + GNUNET_PQ_query_param_uint64 (&reserves[5].wire_reference), + TALER_PQ_query_param_amount (reserves[5].balance), + GNUNET_PQ_query_param_string (reserves[5].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[5].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[5].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + + GNUNET_PQ_query_param_auto_from_type (reserves[6].reserve_pub), + GNUNET_PQ_query_param_uint64 (&reserves[6].wire_reference), + TALER_PQ_query_param_amount (reserves[6].balance), + GNUNET_PQ_query_param_string (reserves[6].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[6].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[6].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + + GNUNET_PQ_query_param_auto_from_type (reserves[7].reserve_pub), + GNUNET_PQ_query_param_uint64 (&reserves[7].wire_reference), + TALER_PQ_query_param_amount (reserves[7].balance), + GNUNET_PQ_query_param_string (reserves[7].exchange_account_name), + GNUNET_PQ_query_param_timestamp (&reserves[7].execution_time), + GNUNET_PQ_query_param_auto_from_type (&h_payto), + GNUNET_PQ_query_param_string (reserves[7].sender_account_details), + GNUNET_PQ_query_param_timestamp (&reserve_expiration), + + GNUNET_PQ_query_param_end + }; + + struct GNUNET_PQ_ResultSpec rs[] = { + GNUNET_PQ_result_spec_bool ("conflicted", + &conflict[0]), + GNUNET_PQ_result_spec_bool ("conflicted2", + &conflict[1]), + GNUNET_PQ_result_spec_bool ("conflicted3", + &conflict[2]), + GNUNET_PQ_result_spec_bool ("conflicted4", + &conflict[3]), + GNUNET_PQ_result_spec_bool ("conflicted5", + &conflict[4]), + GNUNET_PQ_result_spec_bool ("conflicted6", + &conflict[5]), + GNUNET_PQ_result_spec_bool ("conflicted7", + &conflict[6]), + GNUNET_PQ_result_spec_bool ("conflicted8", + &conflict[7]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate", + &transaction_duplicate[0]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate2", + &transaction_duplicate[1]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate3", + &transaction_duplicate[2]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate4", + &transaction_duplicate[3]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate5", + &transaction_duplicate[4]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate6", + &transaction_duplicate[5]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate7", + &transaction_duplicate[6]), + GNUNET_PQ_result_spec_bool ("transaction_duplicate8", + &transaction_duplicate[7]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid", + &reserve_uuid[0]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid2", + &reserve_uuid[1]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid3", + &reserve_uuid[2]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid4", + &reserve_uuid[3]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid5", + &reserve_uuid[4]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid6", + &reserve_uuid[5]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid7", + &reserve_uuid[6]), + GNUNET_PQ_result_spec_uint64 ("reserve_uuid8", + &reserve_uuid[7]), + GNUNET_PQ_result_spec_end + }; + + TALER_payto_hash (reserves[0].sender_account_details, + &h_payto); + TALER_payto_hash (reserves[1].sender_account_details, + &h_payto); + TALER_payto_hash (reserves[2].sender_account_details, + &h_payto); + TALER_payto_hash (reserves[3].sender_account_details, + &h_payto); + TALER_payto_hash (reserves[4].sender_account_details, + &h_payto); + TALER_payto_hash (reserves[5].sender_account_details, + &h_payto); + TALER_payto_hash (reserves[6].sender_account_details, + &h_payto); + TALER_payto_hash (reserves[7].sender_account_details, + &h_payto); + + qs3 = GNUNET_PQ_eval_prepared_singleton_select (pg->conn, + "batch8_reserve_create", + params, + rs); + if (qs3 < 0) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Failed to create reserves8 (%d)\n", + qs3); + return qs3; + } + + GNUNET_assert (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != qs3); + /* results[i] = (transaction_duplicate) + ? GNUNET_DB_STATUS_SUCCESS_NO_RESULTS + : GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;*/ + + if ( + ((conflict[0]) && (transaction_duplicate[0])) + ||((conflict[1]) && (transaction_duplicate[1])) + ||((conflict[2]) && (transaction_duplicate[2])) + ||((conflict[3]) && (transaction_duplicate[3])) + ||((conflict[4]) && (transaction_duplicate[4])) + ||((conflict[5]) && (transaction_duplicate[5])) + ||((conflict[6]) && (transaction_duplicate[6])) + ||((conflict[7]) && (transaction_duplicate[7])) + ) + { + GNUNET_break (0); + TEH_PG_rollback (pg); + return GNUNET_DB_STATUS_HARD_ERROR; + } + return qs3; +} enum GNUNET_DB_QueryStatus TEH_PG_batch2_reserves_in_insert (void *cls, @@ -377,7 +617,7 @@ TEH_PG_batch2_reserves_in_insert (void *cls, enum GNUNET_DB_QueryStatus *results) { struct PostgresClosure *pg = cls; - // enum GNUNET_DB_QueryStatus qs1; + enum GNUNET_DB_QueryStatus qs1; enum GNUNET_DB_QueryStatus qs2; enum GNUNET_DB_QueryStatus qs4; enum GNUNET_DB_QueryStatus qs5; @@ -437,9 +677,45 @@ TEH_PG_batch2_reserves_in_insert (void *cls, { unsigned int bs = GNUNET_MIN (batch_size, reserves_length - i); - if (bs >= 4) + if (bs >= 8) { - // fprintf(stdout, "batch4"); + // fprintf(stdout, "batch8"); + qs1=insert8(pg, + &reserves[i], + expiry, + gc, + h_payto, + ¬ify_s[i], + reserve_expiration, + &transaction_duplicate[i], + &conflicts[i], + &reserve_uuid[i]); + + if (qs1<0) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Failed to update reserves8 (%d)\n", + qs1); + return qs1; + } + // fprintf(stdout, "%ld %ld %ld %ld %ld %ld %ld %ld\n", reserve_uuid[i], reserve_uuid[i+1], reserve_uuid[i+2], reserve_uuid[i+3], reserve_uuid[i+4], reserve_uuid[i+5], reserve_uuid[i+6],reserve_uuid[]); + need_update |= conflicts[i]; + need_update |= conflicts[i+1]; + need_update |= conflicts[i+2]; + need_update |= conflicts[i+3]; + need_update |= conflicts[i+4]; + need_update |= conflicts[i+5]; + need_update |= conflicts[i+6]; + need_update |= conflicts[i+7]; + i+=8; + continue; + } + switch (bs) + { + case 7: + case 6 : + case 5: + case 4 : qs4=insert4(pg, &reserves[i], expiry, @@ -465,10 +741,7 @@ TEH_PG_batch2_reserves_in_insert (void *cls, // fprintf(stdout, "%ld %ld %ld %ld\n", reserve_uuid[i], reserve_uuid[i+1], reserve_uuid[i+2], reserve_uuid[i+3]); //fprintf(stdout, "%d %d %d %d\n", transaction_duplicate[i], transaction_duplicate[i+1], transaction_duplicate[i+2], transaction_duplicate[i+3]); i += 4; - continue; - } - switch (bs) - { + break; case 3: case 2: qs5=insert2(pg, diff --git a/src/exchangedb/procedures.sql.in b/src/exchangedb/procedures.sql.in index 8ddc0ee26..b775639bf 100644 --- a/src/exchangedb/procedures.sql.in +++ b/src/exchangedb/procedures.sql.in @@ -39,4 +39,6 @@ SET search_path TO exchange; #include "exchange_do_batch_reserves_update.sql" #include "exchange_do_batch2_reserves_in_insert.sql" #include "exchange_do_batch4_reserves_in_insert.sql" +#include "exchange_do_batch8_reserves_in_insert.sql" + COMMIT; diff --git a/src/exchangedb/test_exchangedb_by_j.c b/src/exchangedb/test_exchangedb_by_j.c index 8e0b413b3..c114f59ce 100644 --- a/src/exchangedb/test_exchangedb_by_j.c +++ b/src/exchangedb/test_exchangedb_by_j.c @@ -23,7 +23,7 @@ #include "taler_json_lib.h" #include "taler_exchangedb_plugin.h" #include "math.h" -#define ROUNDS 100 +#define ROUNDS 10 /** * Global result from the testcase. @@ -73,7 +73,7 @@ static struct TALER_EXCHANGEDB_Plugin *plugin; static void run (void *cls) { - static const unsigned int batches[] = {1, 2, 3, 4, 16 }; + static const unsigned int batches[] = {1, 2, 3, 4, 8, 16 }; struct GNUNET_TIME_Relative times[sizeof (batches)/sizeof(*batches)]; unsigned long long sqrs[sizeof (batches)/sizeof(*batches)]; struct GNUNET_CONFIGURATION_Handle *cfg = cls; @@ -102,7 +102,7 @@ run (void *cls) memset (sqrs, 0, sizeof (sqrs)); for (unsigned int r = 0; r < ROUNDS; r++) { - for (unsigned int i = 0; i< 5; i++) + for (unsigned int i = 0; i< 6; i++) { const char *sndr = "payto://x-taler-bank/localhost:8080/1"; struct TALER_Amount value; @@ -153,7 +153,7 @@ run (void *cls) system ("./test.sh"); //DELETE AFTER TIMER } } - for (unsigned int i = 0; i< 5; i++) + for (unsigned int i = 0; i< 6; i++) { struct GNUNET_TIME_Relative avg; double avg_dbl; |