gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-exchange] branch master updated: revise exchangedb s


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated: revise exchangedb structure eliminating duplicated wire transfer date from aggregations, instead joining it from wire_out when needed
Date: Sun, 19 Mar 2017 01:37:33 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new c75ac3b  revise exchangedb structure eliminating duplicated wire 
transfer date from aggregations, instead joining it from wire_out when needed
c75ac3b is described below

commit c75ac3b61295e380f8ea59a75d26426fefe2e4f9
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Mar 19 01:36:15 2017 +0100

    revise exchangedb structure eliminating duplicated wire transfer date from 
aggregations, instead joining it from wire_out when needed
---
 src/exchange/taler-exchange-aggregator.c    |  6 ++--
 src/exchangedb/plugin_exchangedb_postgres.c | 27 +++++++-------
 src/exchangedb/test_exchangedb.c            | 56 +++++++++++++----------------
 src/include/taler_exchangedb_plugin.h       |  4 +--
 4 files changed, 40 insertions(+), 53 deletions(-)

diff --git a/src/exchange/taler-exchange-aggregator.c 
b/src/exchange/taler-exchange-aggregator.c
index 44154d2..73c15e4 100644
--- a/src/exchange/taler-exchange-aggregator.c
+++ b/src/exchange/taler-exchange-aggregator.c
@@ -551,8 +551,7 @@ deposit_cb (void *cls,
       db_plugin->insert_aggregation_tracking (db_plugin->cls,
                                               au->session,
                                               &au->wtid,
-                                              row_id,
-                                              au->execution_time))
+                                              row_id))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
@@ -643,8 +642,7 @@ aggregate_cb (void *cls,
       db_plugin->insert_aggregation_tracking (db_plugin->cls,
                                               au->session,
                                               &au->wtid,
-                                              row_id,
-                                              au->execution_time))
+                                              row_id))
   {
     GNUNET_break (0);
     return GNUNET_SYSERR;
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index c975edc..f57ac5a 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -226,11 +226,11 @@ postgres_drop_tables (void *cls)
   SQLEXEC_ (conn,
             "DROP TABLE IF EXISTS aggregation_tracking;");
   SQLEXEC_ (conn,
-            "DROP TABLE IF EXISTS wire_out;");
+            "DROP TABLE IF EXISTS wire_out CASCADE;");
   SQLEXEC_ (conn,
             "DROP TABLE IF EXISTS wire_fee;");
   SQLEXEC_ (conn,
-            "DROP TABLE IF EXISTS deposits;");
+            "DROP TABLE IF EXISTS deposits CASCADE;");
   SQLEXEC_ (conn,
             "DROP TABLE IF EXISTS refresh_out;");
   SQLEXEC_ (conn,
@@ -250,7 +250,7 @@ postgres_drop_tables (void *cls)
   SQLEXEC_ (conn,
             "DROP TABLE IF EXISTS reserves_in;");
   SQLEXEC_ (conn,
-            "DROP TABLE IF EXISTS reserves;");
+            "DROP TABLE IF EXISTS reserves CASCADE;");
   SQLEXEC_ (conn,
             "DROP TABLE IF EXISTS denominations CASCADE;");
   PQfinish (conn);
@@ -493,7 +493,6 @@ postgres_create_tables (void *cls)
           "(aggregation_serial_id BIGSERIAL"
           ",deposit_serial_id INT8 PRIMARY KEY REFERENCES deposits 
(deposit_serial_id) ON DELETE CASCADE"
           ",wtid_raw BYTEA  CONSTRAINT wire_out_ref REFERENCES 
wire_out(wtid_raw) ON DELETE CASCADE DEFERRABLE"
-          ",execution_time INT8 NOT NULL"
           ")");
   /* Index for lookup_transactions statement on wtid */
   SQLEXEC_INDEX("CREATE INDEX aggregation_tracking_wtid_index "
@@ -1242,7 +1241,7 @@ postgres_prepare (PGconn *db_conn)
            ",deposits.h_wire"
            ",deposits.coin_pub"
            ",deposits.merchant_pub"
-           ",execution_time"
+           ",wire_out.execution_date"
            ",deposits.amount_with_fee_val"
            ",deposits.amount_with_fee_frac"
            ",deposits.amount_with_fee_curr"
@@ -1253,6 +1252,7 @@ postgres_prepare (PGconn *db_conn)
            "    JOIN deposits USING (deposit_serial_id)"
            "    JOIN known_coins USING (coin_pub)"
            "    JOIN denominations denom USING (denom_pub)"
+           "    JOIN wire_out USING (wtid_raw)"
            " WHERE wtid_raw=$1",
            1, NULL);
 
@@ -1260,7 +1260,7 @@ postgres_prepare (PGconn *db_conn)
   PREPARE ("lookup_deposit_wtid",
            "SELECT"
            " aggregation_tracking.wtid_raw"
-           ",aggregation_tracking.execution_time"
+           ",wire_out.execution_date"
            ",amount_with_fee_val"
            ",amount_with_fee_frac"
            ",amount_with_fee_curr"
@@ -1271,6 +1271,7 @@ postgres_prepare (PGconn *db_conn)
            "    JOIN aggregation_tracking USING (deposit_serial_id)"
            "    JOIN known_coins USING (coin_pub)"
            "    JOIN denominations denom USING (denom_pub)"
+           "    JOIN wire_out USING (wtid_raw)"
            " WHERE coin_pub=$1"
            "  AND h_proposal_data=$2"
            "  AND h_wire=$3"
@@ -1282,10 +1283,9 @@ postgres_prepare (PGconn *db_conn)
            "INSERT INTO aggregation_tracking "
            "(deposit_serial_id"
            ",wtid_raw"
-           ",execution_time" /* TODO: this field should be eliminated and 
obtained from wire_out */
            ") VALUES "
-           "($1, $2, $3)",
-           3, NULL);
+           "($1, $2)",
+           2, NULL);
 
   /* Used in #postgres_get_wire_fee() */
   PREPARE ("get_wire_fee",
@@ -4087,7 +4087,7 @@ 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_absolute_time ("execution_time", &exec_time),
+      GNUNET_PQ_result_spec_absolute_time ("execution_date", &exec_time),
       TALER_PQ_result_spec_amount ("amount_with_fee", &amount_with_fee),
       TALER_PQ_result_spec_amount ("fee_deposit", &deposit_fee),
       GNUNET_PQ_result_spec_end
@@ -4261,7 +4261,7 @@ postgres_wire_lookup_deposit_wtid (void *cls,
     struct TALER_Amount deposit_fee;
     struct GNUNET_PQ_ResultSpec rs[] = {
       GNUNET_PQ_result_spec_auto_from_type ("wtid_raw", &wtid),
-      GNUNET_PQ_result_spec_absolute_time ("execution_time", &exec_time),
+      GNUNET_PQ_result_spec_absolute_time ("execution_date", &exec_time),
       TALER_PQ_result_spec_amount ("amount_with_fee", &amount_with_fee),
       TALER_PQ_result_spec_amount ("fee_deposit", &deposit_fee),
       GNUNET_PQ_result_spec_end
@@ -4293,21 +4293,18 @@ postgres_wire_lookup_deposit_wtid (void *cls,
  * @param session database connection
  * @param wtid the raw wire transfer identifier we used
  * @param deposit_serial_id row in the deposits table for which this is 
aggregation data
- * @param execution_time when did we execute the transaction
  * @return #GNUNET_OK on success, #GNUNET_SYSERR on DB errors
  */
 static int
 postgres_insert_aggregation_tracking (void *cls,
                                       struct TALER_EXCHANGEDB_Session *session,
                                       const struct 
TALER_WireTransferIdentifierRawP *wtid,
-                                      unsigned long long deposit_serial_id,
-                                      struct GNUNET_TIME_Absolute 
execution_time)
+                                      unsigned long long deposit_serial_id)
 {
   uint64_t rid = deposit_serial_id;
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_uint64 (&rid),
     GNUNET_PQ_query_param_auto_from_type (wtid),
-    GNUNET_PQ_query_param_absolute_time (&execution_time),
     GNUNET_PQ_query_param_end
   };
   PGresult *result;
diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c
index 93614ec..d645abe 100644
--- a/src/exchangedb/test_exchangedb.c
+++ b/src/exchangedb/test_exchangedb.c
@@ -787,8 +787,8 @@ static struct TALER_CoinSpendPublicKeyP coin_pub_wt;
 static struct TALER_Amount coin_value_wt;
 static struct TALER_Amount coin_fee_wt;
 static struct TALER_Amount transfer_value_wt;
-static struct GNUNET_TIME_Absolute execution_time_wt;
-static struct TALER_WireTransferIdentifierRawP wtid_wt;
+static struct GNUNET_TIME_Absolute wire_out_date;
+static struct TALER_WireTransferIdentifierRawP wire_out_wtid;
 
 
 /**
@@ -815,7 +815,7 @@ cb_wt_check (void *cls,
   GNUNET_assert (0 == memcmp (h_wire,
                               &h_wire_wt,
                               sizeof (struct GNUNET_HashCode)));
-  GNUNET_assert (exec_time.abs_value_us == execution_time_wt.abs_value_us);
+  GNUNET_assert (exec_time.abs_value_us == wire_out_date.abs_value_us);
   GNUNET_assert (0 == memcmp (h_proposal_data,
                               &h_proposal_data_wt,
                               sizeof (struct GNUNET_HashCode)));
@@ -841,10 +841,10 @@ cb_wtid_check (void *cls,
 {
   GNUNET_assert (cls == &cb_wtid_never);
   GNUNET_assert (0 == memcmp (wtid,
-                              &wtid_wt,
+                              &wire_out_wtid,
                               sizeof (struct 
TALER_WireTransferIdentifierRawP)));
   GNUNET_assert (execution_time.abs_value_us ==
-                 execution_time_wt.abs_value_us);
+                 wire_out_date.abs_value_us);
   GNUNET_assert (0 == TALER_amount_cmp (coin_contribution,
                                         &coin_value_wt));
   GNUNET_assert (0 == TALER_amount_cmp (coin_fee,
@@ -1185,10 +1185,6 @@ test_wire_fees (struct TALER_EXCHANGEDB_Session *session)
 }
 
 
-static struct GNUNET_TIME_Absolute wire_out_date;
-
-static struct TALER_WireTransferIdentifierRawP wire_out_wtid;
-
 static json_t *wire_out_account;
 
 static  struct TALER_Amount wire_out_amount;
@@ -1256,7 +1252,7 @@ test_wire_out (struct TALER_EXCHANGEDB_Session *session,
   h_wire_wt = deposit->h_wire;
   h_proposal_data_wt = deposit->h_proposal_data;
   coin_pub_wt = deposit->coin.coin_pub;
-  execution_time_wt = GNUNET_TIME_absolute_get ();
+
   coin_value_wt = deposit->amount_with_fee;
   coin_fee_wt = fee_deposit;
   GNUNET_assert (GNUNET_OK ==
@@ -1266,7 +1262,7 @@ test_wire_out (struct TALER_EXCHANGEDB_Session *session,
   FAILIF (GNUNET_NO !=
           plugin->lookup_wire_transfer (plugin->cls,
                                         session,
-                                        &wtid_wt,
+                                        &wire_out_wtid,
                                         &cb_wt_never,
                                         NULL));
 
@@ -1284,18 +1280,31 @@ test_wire_out (struct TALER_EXCHANGEDB_Session *session,
                                               &cb_wtid_never,
                                               NULL));
   }
-  wtid_wt = wire_out_wtid; /* to statisfy foreign constraint */
   /* insert WT data */
   FAILIF (GNUNET_OK !=
           plugin->insert_aggregation_tracking (plugin->cls,
                                                session,
-                                               &wtid_wt,
-                                               deposit_rowid,
-                                               execution_time_wt));
+                                               &wire_out_wtid,
+                                               deposit_rowid));
+
+  /* Now let's fix the transient constraint violation by
+     putting in the WTID into the wire_out table */
+  FAILIF (GNUNET_OK !=
+          plugin->store_wire_transfer_out (plugin->cls,
+                                           session,
+                                           wire_out_date,
+                                           &wire_out_wtid,
+                                           wire_out_account,
+                                           &wire_out_amount));
+  /* And now the commit should still succeed! */
+  FAILIF (GNUNET_OK !=
+          plugin->commit (plugin->cls,
+                          session));
+
   FAILIF (GNUNET_OK !=
           plugin->lookup_wire_transfer (plugin->cls,
                                         session,
-                                        &wtid_wt,
+                                        &wire_out_wtid,
                                         &cb_wt_check,
                                         &cb_wt_never));
   FAILIF (GNUNET_OK !=
@@ -1307,16 +1316,6 @@ test_wire_out (struct TALER_EXCHANGEDB_Session *session,
                                             &merchant_pub_wt,
                                             &cb_wtid_check,
                                             &cb_wtid_never));
-
-  /* Now let's fix the transient constraint violation by
-     putting in the WTID into the wire_out table */
-  FAILIF (GNUNET_OK !=
-          plugin->store_wire_transfer_out (plugin->cls,
-                                           session,
-                                           wire_out_date,
-                                           &wire_out_wtid,
-                                           wire_out_account,
-                                           &wire_out_amount));
   FAILIF (GNUNET_OK !=
           plugin->select_wire_out_above_serial_id (plugin->cls,
                                                    session,
@@ -1325,11 +1324,6 @@ test_wire_out (struct TALER_EXCHANGEDB_Session *session,
                                                    NULL));
   FAILIF (1 != auditor_row_cnt);
 
-  /* And now the commit should still succeed! */
-  FAILIF (GNUNET_OK !=
-          plugin->commit (plugin->cls,
-                          session));
-
   return GNUNET_OK;
  drop:
   return GNUNET_SYSERR;
diff --git a/src/include/taler_exchangedb_plugin.h 
b/src/include/taler_exchangedb_plugin.h
index 3dae489..970a57f 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -1531,15 +1531,13 @@ struct TALER_EXCHANGEDB_Plugin
    * @param session database connection
    * @param wtid the raw wire transfer identifier we used
    * @param deposit_serial_id row in the deposits table for which this is 
aggregation data
-   * @param execution_time when did we execute the transaction
    * @return #GNUNET_OK on success, #GNUNET_SYSERR on DB errors
    */
   int
   (*insert_aggregation_tracking)(void *cls,
                                  struct TALER_EXCHANGEDB_Session *session,
                                  const struct TALER_WireTransferIdentifierRawP 
*wtid,
-                                 unsigned long long deposit_serial_id,
-                                 struct GNUNET_TIME_Absolute execution_time);
+                                 unsigned long long deposit_serial_id);
 
 
   /**

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



reply via email to

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