gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-exchange] 01/02: need the hash of coin_ev with an in


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] 01/02: need the hash of coin_ev with an index for select
Date: Wed, 24 Jul 2019 00:30:14 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

commit e75d552227a4c06faad0a0eae7539458ff58f9af
Author: Christian Grothoff <address@hidden>
AuthorDate: Tue Jul 23 23:25:24 2019 +0200

    need the hash of coin_ev with an index for select
---
 src/exchange/taler-exchange-httpd_payback.c |  4 +++-
 src/exchangedb/plugin_exchangedb_postgres.c | 20 ++++++++++++++------
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_payback.c 
b/src/exchange/taler-exchange-httpd_payback.c
index 45f8c2fc..195e5613 100644
--- a/src/exchange/taler-exchange-httpd_payback.c
+++ b/src/exchange/taler-exchange-httpd_payback.c
@@ -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;
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index b308f774..56e9202b 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -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);

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]