need the hash of coin_ev with an index for select

This commit is contained in:
Christian Grothoff 2019-07-23 23:25:24 +02:00
parent 05d5b735fe
commit e75d552227
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 17 additions and 7 deletions

View File

@ -281,7 +281,9 @@ payback_transaction (void *cls,
}
if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
{
GNUNET_break_op (0);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Payback requested for unknown envelope %s\n",
GNUNET_h2s (&pc->h_blind));
*mhd_ret = reply_payback_unknown (connection,
TALER_EC_PAYBACK_WITHDRAW_NOT_FOUND);
return GNUNET_DB_STATUS_HARD_ERROR;

View File

@ -266,7 +266,7 @@ postgres_create_tables (void *cls)
(as they really must be unique). */
GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS reserves_out"
"(reserve_out_serial_id BIGSERIAL UNIQUE"
",h_blind_ev BYTEA PRIMARY KEY"
",h_blind_ev BYTEA PRIMARY KEY CHECK (LENGTH(h_blind_ev)=64)"
",denom_pub_hash BYTEA NOT NULL REFERENCES denominations (denom_pub_hash)" /* do NOT CASCADE on DELETE, we may keep the denomination key alive! */
",denom_sig BYTEA NOT NULL"
",reserve_pub BYTEA NOT NULL REFERENCES reserves (reserve_pub) ON DELETE CASCADE"
@ -319,11 +319,14 @@ postgres_create_tables (void *cls)
",link_sig BYTEA NOT NULL CHECK(LENGTH(link_sig)=64)"
",denom_pub_hash BYTEA NOT NULL REFERENCES denominations (denom_pub_hash) ON DELETE CASCADE"
",coin_ev BYTEA UNIQUE NOT NULL"
",h_coin_ev BYTEA NOT NULL CHECK(LENGTH(h_coin_ev)=64)"
",ev_sig BYTEA NOT NULL"
",PRIMARY KEY (rc, newcoin_index)"
");"),
GNUNET_PQ_make_try_execute ("CREATE INDEX refresh_revealed_coins_coin_pub_index ON "
"refresh_revealed_coins (denom_pub_hash);"),
GNUNET_PQ_make_try_execute ("CREATE INDEX refresh_revealed_coins_h_coin_ev_index ON "
"refresh_revealed_coins (h_coin_ev);"),
/* Table with the transfer keys of a refresh operation; includes
the rc for which this is the link information, the
@ -460,7 +463,7 @@ postgres_create_tables (void *cls)
",amount_frac INT4 NOT NULL"
",amount_curr VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL"
",timestamp INT8 NOT NULL"
",h_blind_ev BYTEA NOT NULL REFERENCES refresh_revealed_coins (coin_ev) ON DELETE CASCADE"
",h_blind_ev BYTEA NOT NULL REFERENCES refresh_revealed_coins (h_coin_ev) ON DELETE CASCADE"
");"),
GNUNET_PQ_make_try_execute("CREATE INDEX payback_refresh_by_coin_index "
"ON payback_refresh(coin_pub);"),
@ -977,10 +980,11 @@ postgres_prepare (PGconn *db_conn)
",link_sig "
",denom_pub_hash "
",coin_ev"
",h_coin_ev"
",ev_sig"
") VALUES "
"($1, $2, $3, $4, $5, $6);",
6),
"($1, $2, $3, $4, $5, $6, $7);",
7),
/* Obtain information about the coins created in a refresh
operation, used in #postgres_get_refresh_reveal() */
GNUNET_PQ_make_prepare ("get_refresh_revealed_coins",
@ -1768,7 +1772,7 @@ postgres_prepare (PGconn *db_conn)
" FROM refresh_revealed_coins"
" JOIN refresh_commitments rcom"
" USING (rc)"
" WHERE coin_ev=$1"
" WHERE h_coin_ev=$1"
" LIMIT 1"
" FOR UPDATE;",
1),
@ -3921,6 +3925,7 @@ postgres_insert_refresh_reveal (void *cls,
{
const struct TALER_EXCHANGEDB_RefreshRevealedCoin *rrc = &rrcs[i];
struct GNUNET_HashCode denom_pub_hash;
struct GNUNET_HashCode h_coin_ev;
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (rc),
GNUNET_PQ_query_param_uint32 (&i),
@ -3928,6 +3933,7 @@ postgres_insert_refresh_reveal (void *cls,
GNUNET_PQ_query_param_auto_from_type (&denom_pub_hash),
GNUNET_PQ_query_param_fixed_size (rrc->coin_ev,
rrc->coin_ev_size),
GNUNET_PQ_query_param_auto_from_type (&h_coin_ev),
GNUNET_PQ_query_param_rsa_signature (rrc->coin_sig.rsa_signature),
GNUNET_PQ_query_param_end
};
@ -3935,7 +3941,9 @@ postgres_insert_refresh_reveal (void *cls,
GNUNET_CRYPTO_rsa_public_key_hash (rrc->denom_pub.rsa_public_key,
&denom_pub_hash);
GNUNET_CRYPTO_hash (rrc->coin_ev,
rrc->coin_ev_size,
&h_coin_ev);
qs = GNUNET_PQ_eval_prepared_non_select (session->conn,
"insert_refresh_revealed_coin",
params);