diff options
Diffstat (limited to 'src/exchangedb/plugin_exchangedb_postgres.c')
-rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 72 |
1 files changed, 15 insertions, 57 deletions
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 69a1cae34..0d731dfac 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -427,7 +427,6 @@ postgres_create_tables (void *cls) SQLEXEC("CREATE TABLE IF NOT EXISTS deposits " "(deposit_serial_id BIGSERIAL PRIMARY KEY" ",coin_pub BYTEA NOT NULL REFERENCES known_coins (coin_pub) ON DELETE CASCADE" - ",transaction_id INT8 NOT NULL" ",amount_with_fee_val INT8 NOT NULL" ",amount_with_fee_frac INT4 NOT NULL" ",amount_with_fee_curr VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL" @@ -441,11 +440,11 @@ postgres_create_tables (void *cls) ",wire TEXT NOT NULL" ",tiny BOOLEAN NOT NULL DEFAULT false" ",done BOOLEAN NOT NULL DEFAULT false" - ",UNIQUE (coin_pub, transaction_id, merchant_pub)" + ",UNIQUE (coin_pub, h_proposal_data, merchant_pub)" ")"); - /* Index for get_deposit statement on coin_pub, transaction_id and merchant_pub */ + /* Index for get_deposit statement on coin_pub, h_proposal_data and merchant_pub */ SQLEXEC_INDEX("CREATE INDEX deposits_coin_pub_index " - "ON deposits(coin_pub, transaction_id, merchant_pub)"); + "ON deposits(coin_pub, h_proposal_data, merchant_pub)"); /* Table with information about coins that have been refunded. (Technically one of the deposit operations that a coin was involved with is refunded.)*/ @@ -455,12 +454,11 @@ postgres_create_tables (void *cls) ",merchant_pub BYTEA NOT NULL CHECK(LENGTH(merchant_pub)=32)" ",merchant_sig BYTEA NOT NULL CHECK(LENGTH(merchant_sig)=64)" ",h_proposal_data BYTEA NOT NULL CHECK(LENGTH(h_proposal_data)=64)" - ",transaction_id INT8 NOT NULL" ",rtransaction_id INT8 NOT NULL" ",amount_with_fee_val INT8 NOT NULL" ",amount_with_fee_frac INT4 NOT NULL" ",amount_with_fee_curr VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL" - ",PRIMARY KEY (coin_pub, merchant_pub, transaction_id, rtransaction_id)" /* this combo must be unique, and we usually select by coin_pub */ + ",PRIMARY KEY (coin_pub, merchant_pub, h_proposal_data, rtransaction_id)" /* this combo must be unique, and we usually select by coin_pub */ ") "); /* Table for the tracking API, mapping from wire transfer identifiers @@ -863,7 +861,6 @@ postgres_prepare (PGconn *db_conn) " merchant_pub" ",merchant_sig" ",h_proposal_data" - ",transaction_id" ",rtransaction_id" ",coin_pub" ",amount_with_fee_val" @@ -881,7 +878,6 @@ postgres_prepare (PGconn *db_conn) " merchant_pub" ",merchant_sig" ",h_proposal_data" - ",transaction_id" ",rtransaction_id" ",amount_with_fee_val" ",amount_with_fee_frac" @@ -942,7 +938,6 @@ postgres_prepare (PGconn *db_conn) PREPARE ("insert_deposit", "INSERT INTO deposits " "(coin_pub" - ",transaction_id" ",amount_with_fee_val" ",amount_with_fee_frac" ",amount_with_fee_curr" @@ -966,7 +961,6 @@ postgres_prepare (PGconn *db_conn) ",merchant_pub " ",merchant_sig " ",h_proposal_data " - ",transaction_id " ",rtransaction_id " ",amount_with_fee_val " ",amount_with_fee_frac " @@ -990,7 +984,7 @@ postgres_prepare (PGconn *db_conn) " FROM deposits" " WHERE (" " (coin_pub=$1) AND" - " (transaction_id=$2) AND" + " (h_proposal_data=$2) AND" " (merchant_pub=$3)" " )", 3, NULL); @@ -1005,7 +999,6 @@ postgres_prepare (PGconn *db_conn) ",merchant_pub" ",coin_pub" ",coin_sig" - ",transaction_id" ",refund_deadline" ",wire_deadline" ",h_proposal_data" @@ -1035,12 +1028,11 @@ postgres_prepare (PGconn *db_conn) " JOIN denominations denom USING (denom_pub)" " WHERE (" " (coin_pub=$1) AND" - " (transaction_id=$2) AND" - " (merchant_pub=$3) AND" - " (h_proposal_data=$4) AND" - " (h_wire=$5)" + " (merchant_pub=$2) AND" + " (h_proposal_data=$3) AND" + " (h_wire=$4)" " )", - 5, NULL); + 4, NULL); /* Used in #postgres_get_ready_deposit() */ PREPARE ("deposits_get_ready", @@ -1053,7 +1045,6 @@ postgres_prepare (PGconn *db_conn) ",denom.fee_deposit_frac" ",denom.fee_deposit_curr" ",wire_deadline" - ",transaction_id" ",h_proposal_data" ",wire" ",merchant_pub" @@ -1081,7 +1072,6 @@ postgres_prepare (PGconn *db_conn) ",denom.fee_deposit_frac" ",denom.fee_deposit_curr" ",wire_deadline" - ",transaction_id" ",h_proposal_data" ",coin_pub" " FROM deposits" @@ -1114,17 +1104,15 @@ postgres_prepare (PGconn *db_conn) "SELECT done" " FROM deposits" " WHERE coin_pub=$1" - " AND transaction_id=$2" - " AND merchant_pub=$3" - " AND h_proposal_data=$4" - " AND h_wire=$5", + " AND merchant_pub=$2" + " AND h_proposal_data=$3" + " AND h_wire=$4", 5, NULL); /* Used in #postgres_get_coin_transactions() to obtain information about how a coin has been spend with /deposit requests. */ PREPARE ("get_deposit_with_coin_pub", "SELECT" - " transaction_id" ",amount_with_fee_val" ",amount_with_fee_frac" ",amount_with_fee_curr" @@ -1208,7 +1196,6 @@ postgres_prepare (PGconn *db_conn) ",deposits.h_wire" ",deposits.coin_pub" ",deposits.merchant_pub" - ",deposits.transaction_id" ",execution_time" ",deposits.amount_with_fee_val" ",deposits.amount_with_fee_frac" @@ -1241,9 +1228,8 @@ postgres_prepare (PGconn *db_conn) " WHERE coin_pub=$1" " AND h_proposal_data=$2" " AND h_wire=$3" - " AND transaction_id=$4" - " AND merchant_pub=$5", - 5, NULL); + " AND merchant_pub=$4", + 4, NULL); /* Used in #postgres_insert_aggregation_tracking */ PREPARE ("insert_aggregation_tracking", @@ -2229,7 +2215,7 @@ postgres_have_deposit (void *cls, { struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_auto_from_type (&deposit->coin.coin_pub), - GNUNET_PQ_query_param_uint64 (&deposit->transaction_id), + GNUNET_PQ_query_param_auto_from_type (&deposit->h_proposal_data), GNUNET_PQ_query_param_auto_from_type (&deposit->merchant_pub), GNUNET_PQ_query_param_end }; @@ -2358,7 +2344,6 @@ postgres_test_deposit_done (void *cls, { struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_auto_from_type (&deposit->coin.coin_pub), - GNUNET_PQ_query_param_uint64 (&deposit->transaction_id), GNUNET_PQ_query_param_auto_from_type (&deposit->merchant_pub), GNUNET_PQ_query_param_auto_from_type (&deposit->h_proposal_data), GNUNET_PQ_query_param_auto_from_type (&deposit->h_wire), @@ -2497,14 +2482,11 @@ postgres_get_ready_deposit (void *cls, struct GNUNET_HashCode h_proposal_data; struct TALER_MerchantPublicKeyP merchant_pub; struct TALER_CoinSpendPublicKeyP coin_pub; - uint64_t transaction_id; uint64_t serial_id; json_t *wire; struct GNUNET_PQ_ResultSpec rs[] = { GNUNET_PQ_result_spec_uint64 ("deposit_serial_id", &serial_id), - GNUNET_PQ_result_spec_uint64 ("transaction_id", - &transaction_id), TALER_PQ_result_spec_amount ("amount_with_fee", &amount_with_fee), TALER_PQ_result_spec_amount ("fee_deposit", @@ -2537,7 +2519,6 @@ postgres_get_ready_deposit (void *cls, &coin_pub, &amount_with_fee, &deposit_fee, - transaction_id, &h_proposal_data, wire_deadline, wire); @@ -2604,14 +2585,11 @@ postgres_iterate_matching_deposits (void *cls, struct GNUNET_TIME_Absolute wire_deadline; struct GNUNET_HashCode h_proposal_data; struct TALER_CoinSpendPublicKeyP coin_pub; - uint64_t transaction_id; uint64_t serial_id; int ret; struct GNUNET_PQ_ResultSpec rs[] = { GNUNET_PQ_result_spec_uint64 ("deposit_serial_id", &serial_id), - GNUNET_PQ_result_spec_uint64 ("transaction_id", - &transaction_id), TALER_PQ_result_spec_amount ("amount_with_fee", &amount_with_fee), TALER_PQ_result_spec_amount ("fee_deposit", @@ -2639,7 +2617,6 @@ postgres_iterate_matching_deposits (void *cls, &coin_pub, &amount_with_fee, &deposit_fee, - transaction_id, &h_proposal_data, wire_deadline, NULL); @@ -2774,7 +2751,6 @@ postgres_insert_deposit (void *cls, int ret; struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_auto_from_type (&deposit->coin.coin_pub), - GNUNET_PQ_query_param_uint64 (&deposit->transaction_id), TALER_PQ_query_param_amount (&deposit->amount_with_fee), GNUNET_PQ_query_param_absolute_time (&deposit->timestamp), GNUNET_PQ_query_param_absolute_time (&deposit->refund_deadline), @@ -2846,7 +2822,6 @@ postgres_insert_refund (void *cls, GNUNET_PQ_query_param_auto_from_type (&refund->merchant_pub), GNUNET_PQ_query_param_auto_from_type (&refund->merchant_sig), GNUNET_PQ_query_param_auto_from_type (&refund->h_proposal_data), - GNUNET_PQ_query_param_uint64 (&refund->transaction_id), GNUNET_PQ_query_param_uint64 (&refund->rtransaction_id), TALER_PQ_query_param_amount (&refund->refund_amount), GNUNET_PQ_query_param_end @@ -3744,8 +3719,6 @@ postgres_get_coin_transactions (void *cls, deposit = GNUNET_new (struct TALER_EXCHANGEDB_Deposit); { struct GNUNET_PQ_ResultSpec rs[] = { - GNUNET_PQ_result_spec_uint64 ("transaction_id", - &deposit->transaction_id), TALER_PQ_result_spec_amount ("amount_with_fee", &deposit->amount_with_fee), TALER_PQ_result_spec_amount ("fee_deposit", @@ -3904,8 +3877,6 @@ postgres_get_coin_transactions (void *cls, &refund->merchant_sig), GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data", &refund->h_proposal_data), - GNUNET_PQ_result_spec_uint64 ("transaction_id", - &refund->transaction_id), GNUNET_PQ_result_spec_uint64 ("rtransaction_id", &refund->rtransaction_id), TALER_PQ_result_spec_amount ("amount_with_fee", @@ -4006,7 +3977,6 @@ postgres_lookup_wire_transfer (void *cls, struct GNUNET_HashCode h_wire; struct TALER_CoinSpendPublicKeyP coin_pub; struct TALER_MerchantPublicKeyP merchant_pub; - uint64_t transaction_id; struct GNUNET_TIME_Absolute exec_time; struct TALER_Amount amount_with_fee; struct TALER_Amount deposit_fee; @@ -4015,7 +3985,6 @@ postgres_lookup_wire_transfer (void *cls, GNUNET_PQ_result_spec_auto_from_type ("h_wire", &h_wire), GNUNET_PQ_result_spec_auto_from_type ("coin_pub", &coin_pub), GNUNET_PQ_result_spec_auto_from_type ("merchant_pub", &merchant_pub), - GNUNET_PQ_result_spec_uint64 ("transaction_id", &transaction_id), GNUNET_PQ_result_spec_absolute_time ("execution_time", &exec_time), TALER_PQ_result_spec_amount ("amount_with_fee", &amount_with_fee), TALER_PQ_result_spec_amount ("fee_deposit", &deposit_fee), @@ -4035,7 +4004,6 @@ postgres_lookup_wire_transfer (void *cls, &h_wire, exec_time, &h_proposal_data, - transaction_id, &coin_pub, &amount_with_fee, &deposit_fee); @@ -4056,7 +4024,6 @@ postgres_lookup_wire_transfer (void *cls, * @param h_wire hash of merchant wire details * @param coin_pub public key of deposited coin * @param merchant_pub merchant public key - * @param transaction_id transaction identifier * @param cb function to call with the result * @param cb_cls closure to pass to @a cb * @return #GNUNET_OK on success, #GNUNET_SYSERR on DB errors, @@ -4069,7 +4036,6 @@ postgres_wire_lookup_deposit_wtid (void *cls, const struct GNUNET_HashCode *h_wire, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_MerchantPublicKeyP *merchant_pub, - uint64_t transaction_id, TALER_EXCHANGEDB_TrackTransactionCallback cb, void *cb_cls) { @@ -4078,7 +4044,6 @@ postgres_wire_lookup_deposit_wtid (void *cls, GNUNET_PQ_query_param_auto_from_type (coin_pub), GNUNET_PQ_query_param_auto_from_type (h_proposal_data), GNUNET_PQ_query_param_auto_from_type (h_wire), - GNUNET_PQ_query_param_uint64 (&transaction_id), GNUNET_PQ_query_param_auto_from_type (merchant_pub), GNUNET_PQ_query_param_end }; @@ -4107,7 +4072,6 @@ postgres_wire_lookup_deposit_wtid (void *cls, { struct GNUNET_PQ_QueryParam params2[] = { GNUNET_PQ_query_param_auto_from_type (coin_pub), - GNUNET_PQ_query_param_uint64 (&transaction_id), GNUNET_PQ_query_param_auto_from_type (merchant_pub), GNUNET_PQ_query_param_auto_from_type (h_proposal_data), GNUNET_PQ_query_param_auto_from_type (h_wire), @@ -4532,8 +4496,6 @@ postgres_select_deposits_above_serial_id (void *cls, &deposit.coin.coin_pub), GNUNET_PQ_result_spec_auto_from_type ("coin_sig", &deposit.csig), - GNUNET_PQ_result_spec_uint64 ("transaction_id", - &deposit.transaction_id), GNUNET_PQ_result_spec_absolute_time ("refund_deadline", &deposit.refund_deadline), GNUNET_PQ_result_spec_absolute_time ("wire_deadline", @@ -4563,7 +4525,6 @@ postgres_select_deposits_above_serial_id (void *cls, &deposit.coin.coin_pub, &deposit.csig, &deposit.amount_with_fee, - deposit.transaction_id, &deposit.h_proposal_data, deposit.refund_deadline, deposit.wire_deadline, @@ -4725,8 +4686,6 @@ postgres_select_refunds_above_serial_id (void *cls, &refund.merchant_sig), GNUNET_PQ_result_spec_auto_from_type ("h_proposal_data", &refund.h_proposal_data), - GNUNET_PQ_result_spec_uint64 ("transaction_id", - &refund.transaction_id), GNUNET_PQ_result_spec_uint64 ("rtransaction_id", &refund.rtransaction_id), GNUNET_PQ_result_spec_auto_from_type ("coin_pub", @@ -4752,7 +4711,6 @@ postgres_select_refunds_above_serial_id (void *cls, &refund.merchant_pub, &refund.merchant_sig, &refund.h_proposal_data, - refund.transaction_id, refund.rtransaction_id, &refund.refund_amount); } |