gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] 56/130: SQL fixes


From: gnunet
Subject: [taler-exchange] 56/130: SQL fixes
Date: Wed, 17 Nov 2021 12:25:04 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

commit 1d5edc6882588e10db9cc18c0d0daeb7fedbc5b4
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Oct 31 13:58:20 2021 +0100

    SQL fixes
---
 src/exchangedb/plugin_exchangedb_postgres.c | 53 ++++++++++++++++++++++-------
 1 file changed, 40 insertions(+), 13 deletions(-)

diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index 6eaf3a41..ed63be87 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -405,24 +405,23 @@ prepare_statements (struct PostgresClosure *pg)
       " wire_target_serial_id=$1",
       1),
     /* Used in #postgres_inselect_wallet_kyc_status() */
-    // FIXME: Note that this statement has not been debugged at all...
-    // It just represents the _idea_.
     GNUNET_PQ_make_prepare (
-      "inselect_wallet_kyc_status",
-      "WITH cte AS ("
-      "  INSERT INTO wire_targets"
+      "insert_kyc_status",
+      "INSERT INTO wire_targets"
       "  (h_payto"
       "  ,payto_uri"
       "  ) VALUES "
       "  ($1, $2)"
-      "  ON CONFLICT (wire_target_serial_id) DO NOTHING"
-      ") "
+      " RETURNING wire_target_serial_id",
+      2),
+    GNUNET_PQ_make_prepare (
+      "select_kyc_status_by_payto",
       "SELECT "
       " kyc_ok"
       ",wire_target_serial_id"
       " FROM wire_targets"
       " WHERE h_payto=$1;",
-      2),
+      1),
     /* Used in #reserves_get() */
     GNUNET_PQ_make_prepare (
       "reserves_get",
@@ -3901,7 +3900,6 @@ inselect_account_kyc_status (
   {
     struct GNUNET_PQ_QueryParam params[] = {
       GNUNET_PQ_query_param_auto_from_type (&h_payto),
-      GNUNET_PQ_query_param_string (payto_uri),
       GNUNET_PQ_query_param_end
     };
     uint8_t ok8 = 0;
@@ -3914,10 +3912,36 @@ inselect_account_kyc_status (
     };
 
     qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
-                                                   
"inselect_wallet_kyc_status",
+                                                   
"select_kyc_status_by_payto",
                                                    params,
                                                    rs);
-    kyc->ok = (0 != ok8);
+    if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
+    {
+      struct GNUNET_PQ_QueryParam iparams[] = {
+        GNUNET_PQ_query_param_auto_from_type (&h_payto),
+        GNUNET_PQ_query_param_string (payto_uri),
+        GNUNET_PQ_query_param_end
+      };
+      struct GNUNET_PQ_ResultSpec irs[] = {
+        GNUNET_PQ_result_spec_uint64 ("wire_target_serial_id",
+                                      &kyc->payment_target_uuid),
+        GNUNET_PQ_result_spec_end
+      };
+
+      qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
+                                                     "insert_kyc_status",
+                                                     iparams,
+                                                     irs);
+      if (qs < 0)
+        return qs;
+      if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
+        return GNUNET_DB_STATUS_SOFT_ERROR;
+      kyc->ok = false;
+    }
+    else
+    {
+      kyc->ok = (0 != ok8);
+    }
   }
   kyc->type = TALER_EXCHANGEDB_KYC_BALANCE;
   return qs;
@@ -4150,15 +4174,18 @@ postgres_reserves_in_insert (void *cls,
     struct TALER_EXCHANGEDB_KycStatus kyc;
     enum GNUNET_DB_QueryStatus qs3;
 
+    memset (&kyc,
+            0,
+            sizeof (kyc));
     qs3 = inselect_account_kyc_status (pg,
                                        sender_account_details,
                                        &kyc);
     if (qs3 <= 0)
     {
-      GNUNET_break (GNUNET_DB_STATUS_HARD_ERROR == qs3);
       GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs3);
       return qs3;
     }
+    GNUNET_assert (0 != kyc.payment_target_uuid);
     if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs1)
     {
       struct GNUNET_PQ_QueryParam params[] = {
@@ -4968,7 +4995,7 @@ postgres_select_withdraw_amounts_by_account (
 
   qs = GNUNET_PQ_eval_prepared_multi_select (
     pg->conn,
-    "select_XXX",
+    "select_XXX_FIXME",
     params,
     &withdraw_amount_by_account_cb,
     &wac);

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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