need the hash of coin_ev with an index for select
This commit is contained in:
parent
05d5b735fe
commit
e75d552227
@ -281,7 +281,9 @@ payback_transaction (void *cls,
|
|||||||
}
|
}
|
||||||
if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
|
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,
|
*mhd_ret = reply_payback_unknown (connection,
|
||||||
TALER_EC_PAYBACK_WITHDRAW_NOT_FOUND);
|
TALER_EC_PAYBACK_WITHDRAW_NOT_FOUND);
|
||||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||||
|
@ -266,7 +266,7 @@ postgres_create_tables (void *cls)
|
|||||||
(as they really must be unique). */
|
(as they really must be unique). */
|
||||||
GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS reserves_out"
|
GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS reserves_out"
|
||||||
"(reserve_out_serial_id BIGSERIAL UNIQUE"
|
"(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_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"
|
",denom_sig BYTEA NOT NULL"
|
||||||
",reserve_pub BYTEA NOT NULL REFERENCES reserves (reserve_pub) ON DELETE CASCADE"
|
",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)"
|
",link_sig BYTEA NOT NULL CHECK(LENGTH(link_sig)=64)"
|
||||||
",denom_pub_hash BYTEA NOT NULL REFERENCES denominations (denom_pub_hash) ON DELETE CASCADE"
|
",denom_pub_hash BYTEA NOT NULL REFERENCES denominations (denom_pub_hash) ON DELETE CASCADE"
|
||||||
",coin_ev BYTEA UNIQUE NOT NULL"
|
",coin_ev BYTEA UNIQUE NOT NULL"
|
||||||
|
",h_coin_ev BYTEA NOT NULL CHECK(LENGTH(h_coin_ev)=64)"
|
||||||
",ev_sig BYTEA NOT NULL"
|
",ev_sig BYTEA NOT NULL"
|
||||||
",PRIMARY KEY (rc, newcoin_index)"
|
",PRIMARY KEY (rc, newcoin_index)"
|
||||||
");"),
|
");"),
|
||||||
GNUNET_PQ_make_try_execute ("CREATE INDEX refresh_revealed_coins_coin_pub_index ON "
|
GNUNET_PQ_make_try_execute ("CREATE INDEX refresh_revealed_coins_coin_pub_index ON "
|
||||||
"refresh_revealed_coins (denom_pub_hash);"),
|
"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
|
/* Table with the transfer keys of a refresh operation; includes
|
||||||
the rc for which this is the link information, the
|
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_frac INT4 NOT NULL"
|
||||||
",amount_curr VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL"
|
",amount_curr VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL"
|
||||||
",timestamp INT8 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 "
|
GNUNET_PQ_make_try_execute("CREATE INDEX payback_refresh_by_coin_index "
|
||||||
"ON payback_refresh(coin_pub);"),
|
"ON payback_refresh(coin_pub);"),
|
||||||
@ -977,10 +980,11 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
",link_sig "
|
",link_sig "
|
||||||
",denom_pub_hash "
|
",denom_pub_hash "
|
||||||
",coin_ev"
|
",coin_ev"
|
||||||
|
",h_coin_ev"
|
||||||
",ev_sig"
|
",ev_sig"
|
||||||
") VALUES "
|
") VALUES "
|
||||||
"($1, $2, $3, $4, $5, $6);",
|
"($1, $2, $3, $4, $5, $6, $7);",
|
||||||
6),
|
7),
|
||||||
/* Obtain information about the coins created in a refresh
|
/* Obtain information about the coins created in a refresh
|
||||||
operation, used in #postgres_get_refresh_reveal() */
|
operation, used in #postgres_get_refresh_reveal() */
|
||||||
GNUNET_PQ_make_prepare ("get_refresh_revealed_coins",
|
GNUNET_PQ_make_prepare ("get_refresh_revealed_coins",
|
||||||
@ -1768,7 +1772,7 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
" FROM refresh_revealed_coins"
|
" FROM refresh_revealed_coins"
|
||||||
" JOIN refresh_commitments rcom"
|
" JOIN refresh_commitments rcom"
|
||||||
" USING (rc)"
|
" USING (rc)"
|
||||||
" WHERE coin_ev=$1"
|
" WHERE h_coin_ev=$1"
|
||||||
" LIMIT 1"
|
" LIMIT 1"
|
||||||
" FOR UPDATE;",
|
" FOR UPDATE;",
|
||||||
1),
|
1),
|
||||||
@ -3921,6 +3925,7 @@ postgres_insert_refresh_reveal (void *cls,
|
|||||||
{
|
{
|
||||||
const struct TALER_EXCHANGEDB_RefreshRevealedCoin *rrc = &rrcs[i];
|
const struct TALER_EXCHANGEDB_RefreshRevealedCoin *rrc = &rrcs[i];
|
||||||
struct GNUNET_HashCode denom_pub_hash;
|
struct GNUNET_HashCode denom_pub_hash;
|
||||||
|
struct GNUNET_HashCode h_coin_ev;
|
||||||
struct GNUNET_PQ_QueryParam params[] = {
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
GNUNET_PQ_query_param_auto_from_type (rc),
|
GNUNET_PQ_query_param_auto_from_type (rc),
|
||||||
GNUNET_PQ_query_param_uint32 (&i),
|
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_auto_from_type (&denom_pub_hash),
|
||||||
GNUNET_PQ_query_param_fixed_size (rrc->coin_ev,
|
GNUNET_PQ_query_param_fixed_size (rrc->coin_ev,
|
||||||
rrc->coin_ev_size),
|
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_rsa_signature (rrc->coin_sig.rsa_signature),
|
||||||
GNUNET_PQ_query_param_end
|
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,
|
GNUNET_CRYPTO_rsa_public_key_hash (rrc->denom_pub.rsa_public_key,
|
||||||
&denom_pub_hash);
|
&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,
|
qs = GNUNET_PQ_eval_prepared_non_select (session->conn,
|
||||||
"insert_refresh_revealed_coin",
|
"insert_refresh_revealed_coin",
|
||||||
params);
|
params);
|
||||||
|
Loading…
Reference in New Issue
Block a user