gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] 02/02: fix patch from Nic and also fix various other au


From: gnunet
Subject: [taler-exchange] 02/02: fix patch from Nic and also fix various other auditor bugs found during review
Date: Wed, 28 Aug 2024 22:42:39 +0200

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

grothoff pushed a commit to branch master
in repository exchange.

commit d16350ef1085bc16f2ef04eb8fe60edeb0f6978d
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed Aug 28 22:42:33 2024 +0200

    fix patch from Nic and also fix various other auditor bugs found during 
review
---
 src/auditor/taler-helper-auditor-aggregation.c     |  8 ++++---
 src/auditor/taler-helper-auditor-coins.c           | 12 +++++++++-
 src/auditor/taler-helper-auditor-purses.c          |  9 +++----
 src/auditor/taler-helper-auditor-reserves.c        | 16 ++++++-------
 src/auditor/taler-helper-auditor-wire-debit.c      |  1 +
 ...002-auditor_amount_arithmetic_inconsistency.sql |  8 ++-----
 src/auditordb/0002-auditor_bad_sig_losses.sql      |  6 ++---
 src/auditordb/0002-auditor_closure_lags.sql        |  3 +--
 src/auditordb/0002-auditor_coin_inconsistency.sql  |  8 +++----
 ...ination_key_validity_withdraw_inconsistency.sql |  7 +++---
 .../0002-auditor_denominations_without_sigs.sql    |  2 --
 .../0002-auditor_deposit_confirmations.sql         |  1 -
 src/auditordb/0002-auditor_emergency.sql           |  9 +++----
 src/auditordb/0002-auditor_emergency_by_count.sql  |  6 ++---
 .../0002-auditor_fee_time_inconsistency.sql        |  1 -
 .../0002-auditor_historic_denomination_revenue.sql |  5 ++--
 .../0002-auditor_historic_reserve_summary.sql      |  3 ---
 ...002-auditor_misattribution_in_inconsistency.sql |  5 ++--
 src/auditordb/0002-auditor_pending_deposits.sql    |  1 -
 ...02-auditor_purse_not_closed_inconsistencies.sql |  7 +++---
 src/auditordb/0002-auditor_purses.sql              |  3 +--
 src/auditordb/0002-auditor_refreshes_hanging.sql   |  5 ++--
 ..._reserve_balance_insufficient_inconsistency.sql |  2 --
 ...reserve_balance_summary_wrong_inconsistency.sql |  5 ++--
 .../0002-auditor_reserve_in_inconsistency.sql      |  2 +-
 ...02-auditor_reserve_not_closed_inconsistency.sql |  4 +---
 src/auditordb/0002-auditor_reserves.sql            |  1 -
 src/auditordb/0002-auditor_row_inconsistency.sql   |  3 +--
 .../0002-auditor_wire_format_inconsistency.sql     |  5 ++--
 .../0002-auditor_wire_out_inconsistency.sql        |  1 -
 src/auditordb/pg_helper.c                          |  1 +
 src/auditordb/pg_helper.h                          | 28 +++++++++++-----------
 .../pg_insert_amount_arithmetic_inconsistency.c    | 20 ++++++----------
 src/auditordb/pg_insert_auditor_closure_lags.c     | 13 +++++-----
 src/auditordb/pg_insert_bad_sig_losses.c           | 22 +++++------------
 src/auditordb/pg_insert_coin_inconsistency.c       | 14 ++---------
 ...omination_key_validity_withdraw_inconsistency.c |  9 ++++---
 .../pg_insert_denominations_without_sigs.c         |  7 +-----
 src/auditordb/pg_insert_emergency.c                | 15 ++++++------
 src/auditordb/pg_insert_fee_time_inconsistency.c   | 11 ++++-----
 .../pg_insert_misattribution_in_inconsistency.c    |  1 +
 .../pg_insert_purse_not_closed_inconsistencies.c   | 13 +++-------
 src/auditordb/pg_insert_refreshes_hanging.c        | 16 +++++--------
 src/auditordb/pg_insert_row_inconsistency.c        |  1 +
 .../pg_insert_wire_format_inconsistency.c          |  9 ++++---
 src/auditordb/plugin_auditordb_postgres.c          |  2 +-
 src/include/taler_auditordb_plugin.h               |  8 +++++--
 47 files changed, 137 insertions(+), 202 deletions(-)

diff --git a/src/auditor/taler-helper-auditor-aggregation.c 
b/src/auditor/taler-helper-auditor-aggregation.c
index a6122e513..22ba23b4c 100644
--- a/src/auditor/taler-helper-auditor-aggregation.c
+++ b/src/auditor/taler-helper-auditor-aggregation.c
@@ -140,13 +140,14 @@ report_amount_arithmetic_inconsistency (
   }
 
   {
-    enum GNUNET_DB_QueryStatus qs;
     struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
+      .problem_row_id = rowid,
       .profitable = profitable,
       .operation = (char *) operation,
       .exchange_amount = *exchange,
       .auditor_amount = *auditor
     };
+    enum GNUNET_DB_QueryStatus qs;
 
     qs = TALER_ARL_adb->insert_amount_arithmetic_inconsistency (
       TALER_ARL_adb->cls,
@@ -899,7 +900,7 @@ wire_transfer_information_cb (
                              denom_pub))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "wire",
       .loss = *coin_value,
       .operation_specific_pub = coin.coin_pub.eddsa_pub
@@ -1128,6 +1129,7 @@ get_wire_fee (struct AggregationContext *ac,
                                  wfi->start_date))
   {
     struct TALER_AUDITORDB_FeeTimeInconsistency ftib = {
+      .problem_row_id = 0, /* FIXME: fetch above! */
       .diagnostic = "start date before previous end date",
       .time = wfi->start_date.abs_time,
       .type = (char *) method
@@ -1136,7 +1138,6 @@ get_wire_fee (struct AggregationContext *ac,
     qs = TALER_ARL_adb->insert_fee_time_inconsistency (
       TALER_ARL_adb->cls,
       &ftib);
-
     if (qs < 0)
     {
       GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
@@ -1150,6 +1151,7 @@ get_wire_fee (struct AggregationContext *ac,
                                  wfi->end_date))
   {
     struct TALER_AUDITORDB_FeeTimeInconsistency ftia = {
+      .problem_row_id = 0, /* FIXME: fetch above! */
       .diagnostic = "end date date after next start date",
       .time = wfi->end_date.abs_time,
       .type = (char *) method
diff --git a/src/auditor/taler-helper-auditor-coins.c 
b/src/auditor/taler-helper-auditor-coins.c
index 8a9f8f0ac..6e530ef37 100644
--- a/src/auditor/taler-helper-auditor-coins.c
+++ b/src/auditor/taler-helper-auditor-coins.c
@@ -364,6 +364,7 @@ report_amount_arithmetic_inconsistency (
   {
     struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
       .profitable = profitable,
+      .problem_row_id = rowid,
       .operation = (char *) operation,
       .exchange_amount = *exchange,
       .auditor_amount = *auditor
@@ -1207,6 +1208,7 @@ check_known_coin (
                              denom_pub))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
+      .problem_row_id = rowid,
       .operation = (char *) operation,
       .loss = *loss_potential,
       .operation_specific_pub = coin_pub->eddsa_pub
@@ -1386,6 +1388,7 @@ refresh_session_cb (void *cls,
                                   coin_sig))
     {
       struct TALER_AUDITORDB_BadSigLosses bsl = {
+        .problem_row_id = rowid,
         .operation = "melt",
         .loss = *amount_with_fee,
         .operation_specific_pub = coin_pub->eddsa_pub
@@ -1442,7 +1445,7 @@ refresh_session_cb (void *cls,
          with invalid data, even if the exchange is correctly operating. We
          still report it. */
       struct TALER_AUDITORDB_RefreshesHanging rh = {
-        .row_id = rowid,
+        .problem_row_id = rowid,
         .amount = *amount_with_fee,
         .coin_pub = coin_pub->eddsa_pub
       };
@@ -1731,6 +1734,7 @@ deposit_cb (void *cls,
                                      &deposit->csig))
     {
       struct TALER_AUDITORDB_BadSigLosses bsl = {
+        .problem_row_id = rowid,
         .operation = "deposit",
         .loss = deposit->amount_with_fee,
         .operation_specific_pub = deposit->coin.coin_pub.eddsa_pub
@@ -1867,6 +1871,7 @@ refund_cb (void *cls,
                                     merchant_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
+      .problem_row_id = rowid,
       .operation = "refund",
       .loss = *amount_with_fee,
       .operation_specific_pub = coin_pub->eddsa_pub
@@ -2145,6 +2150,7 @@ check_recoup (struct CoinContext *cc,
                              denom_pub))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
+      .problem_row_id = rowid,
       .operation = (char *) operation,
       .loss = *amount,
       .operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2217,6 +2223,7 @@ check_recoup (struct CoinContext *cc,
     if (! ds->was_revoked)
     {
       struct TALER_AUDITORDB_BadSigLosses bsldnr = {
+        .problem_row_id = rowid,
         .operation = (char *) operation,
         .loss = *amount,
         .operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2286,6 +2293,7 @@ recoup_cb (void *cls,
                                   coin_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
+      .problem_row_id = rowid,
       .operation = "recoup",
       .loss = *amount,
       .operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2416,6 +2424,7 @@ recoup_refresh_cb (void *cls,
                                           coin_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
+      .problem_row_id = rowid,
       .operation = "recoup-refresh",
       .loss = *amount,
       .operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -2607,6 +2616,7 @@ purse_deposit_cb (
         &deposit->coin_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
+      .problem_row_id = rowid,
       .operation = "purse-deposit",
       .loss = deposit->amount,
       .operation_specific_pub = deposit->coin_pub.eddsa_pub
diff --git a/src/auditor/taler-helper-auditor-purses.c 
b/src/auditor/taler-helper-auditor-purses.c
index 8d86bba85..f9988fb52 100644
--- a/src/auditor/taler-helper-auditor-purses.c
+++ b/src/auditor/taler-helper-auditor-purses.c
@@ -146,6 +146,7 @@ report_amount_arithmetic_inconsistency (
   {
     struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
       .profitable = profitable,
+      .problem_row_id = rowid,
       .operation = (char *) operation,
       .exchange_amount = *exchange,
       .auditor_amount = *auditor
@@ -504,7 +505,7 @@ handle_purse_requested (
                                         purse_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "purse-request",
       .loss = *target_amount,
       .operation_specific_pub = purse_pub->eddsa_pub
@@ -629,7 +630,7 @@ handle_purse_deposits (
                                          &deposit->coin_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "purse-deposit",
       .loss = deposit->amount,
       .operation_specific_pub = deposit->coin_pub.eddsa_pub
@@ -736,7 +737,7 @@ handle_purse_merged (
                                          merge_sig))
     {
       struct TALER_AUDITORDB_BadSigLosses bsl = {
-        .row_id = rowid,
+        .problem_row_id = rowid,
         .operation = "merge-purse",
         .loss = *amount,
         .operation_specific_pub = merge_pub->eddsa_pub
@@ -845,7 +846,7 @@ handle_account_merged (
                                          reserve_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "account-merge",
       .loss = *purse_fee,
       .operation_specific_pub = reserve_pub->eddsa_pub
diff --git a/src/auditor/taler-helper-auditor-reserves.c 
b/src/auditor/taler-helper-auditor-reserves.c
index 111290adf..54fa043f5 100644
--- a/src/auditor/taler-helper-auditor-reserves.c
+++ b/src/auditor/taler-helper-auditor-reserves.c
@@ -170,7 +170,7 @@ report_amount_arithmetic_inconsistency (
 
   {
     struct TALER_AUDITORDB_AmountArithmeticInconsistency aai = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .profitable = profitable,
       .operation = (char *) operation,
       .exchange_amount = *exchange,
@@ -581,7 +581,7 @@ handle_reserve_out (
                                  execution_date))
   {
     struct TALER_AUDITORDB_DenominationKeyValidityWithdrawInconsistency dkvwi 
={
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .execution_date = execution_date.abs_time,
       .denompub_h = *&h_denom_pub,
       .reserve_pub = *reserve_pub
@@ -609,7 +609,7 @@ handle_reserve_out (
                                     reserve_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "withdraw",
       .loss = *amount_with_fee,
       .operation_specific_pub = reserve_pub->eddsa_pub
@@ -720,7 +720,7 @@ handle_recoup_by_reserve (
                                   coin_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bslr = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "recoup",
       .loss = *amount,
       .operation_specific_pub = coin->coin_pub.eddsa_pub
@@ -799,7 +799,7 @@ handle_recoup_by_reserve (
                     "master signature invalid")))
   {
     struct TALER_AUDITORDB_BadSigLosses bslrm = {
-      .row_id = rev_rowid,
+      .problem_row_id = rev_rowid,
       .operation = "recoup-master",
       .loss = *amount,
       .operation_specific_pub = TALER_ARL_master_pub.eddsa_pub
@@ -945,7 +945,7 @@ handle_reserve_open (
                                         reserve_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "reserve-open",
       .loss = *reserve_payment,
       .operation_specific_pub = reserve_pub->eddsa_pub
@@ -1100,7 +1100,7 @@ handle_reserve_closed (
             &reserve_sig))
       {
         struct TALER_AUDITORDB_BadSigLosses bsl = {
-          .row_id = close_request_row,
+          .problem_row_id = close_request_row,
           .operation = "close-request",
           .loss = *amount_with_fee,
           .operation_specific_pub = reserve_pub->eddsa_pub
@@ -1246,7 +1246,7 @@ handle_account_merged (
                                          reserve_sig))
   {
     struct TALER_AUDITORDB_BadSigLosses bsl = {
-      .row_id = rowid,
+      .problem_row_id = rowid,
       .operation = "account-merge",
       .loss = *purse_fee,
       .operation_specific_pub = reserve_pub->eddsa_pub
diff --git a/src/auditor/taler-helper-auditor-wire-debit.c 
b/src/auditor/taler-helper-auditor-wire-debit.c
index 2a714d3f3..d3f9aacc0 100644
--- a/src/auditor/taler-helper-auditor-wire-debit.c
+++ b/src/auditor/taler-helper-auditor-wire-debit.c
@@ -455,6 +455,7 @@ check_pending_rc (void *cls,
   if (! TALER_amount_is_zero (&rc->amount))
   {
     struct TALER_AUDITORDB_ClosureLags cl = {
+      .problem_row_id = rc->rowid,
       .account = rc->receiver_account,
       .amount = rc->amount,
       .deadline = rc->execution_date.abs_time,
diff --git a/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql 
b/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql
index 286f612bc..8dcf7b742 100644
--- a/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql
+++ b/src/auditordb/0002-auditor_amount_arithmetic_inconsistency.sql
@@ -14,15 +14,11 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
--- TODO: The constraints of operation are just for testing
-
 CREATE TABLE auditor_amount_arithmetic_inconsistency
 (
-    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
+    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
     problem_row_id BIGINT NOT NULL,
-    -- TODO: correct constraintcheck, currently wrong
-    --operation BYTEA NOT NULL CHECK (LENGTH(operation)=16),
-    operation TEXT NOT NULL PRIMARY KEY,
+    operation TEXT NOT NULL,
     exchange_amount taler_amount NOT NULL,
     auditor_amount taler_amount NOT NULL,
     profitable BOOLEAN NOT NULL,
diff --git a/src/auditordb/0002-auditor_bad_sig_losses.sql 
b/src/auditordb/0002-auditor_bad_sig_losses.sql
index 8be983670..bcaaf4987 100644
--- a/src/auditordb/0002-auditor_bad_sig_losses.sql
+++ b/src/auditordb/0002-auditor_bad_sig_losses.sql
@@ -14,16 +14,14 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_bad_sig_losses
 (
-    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
+    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
     problem_row_id BIGINT NOT NULL,
     operation TEXT NOT NULL,
     loss taler_amount NOT NULL,
     operation_specific_pub BYTEA NOT NULL CHECK 
(LENGTH(operation_specific_pub)=32),
-    suppressed BOOLEAN NOT NULL DEFAULT FALSE,
-    PRIMARY KEY (operation, operation_specific_pub)
+    suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
 COMMENT ON TABLE auditor_bad_sig_losses
     IS 'Report a (serious) inconsistency with losses due to bad signatures';
diff --git a/src/auditordb/0002-auditor_closure_lags.sql 
b/src/auditordb/0002-auditor_closure_lags.sql
index d41a55eae..73743e8a1 100644
--- a/src/auditordb/0002-auditor_closure_lags.sql
+++ b/src/auditordb/0002-auditor_closure_lags.sql
@@ -14,14 +14,13 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_closure_lags
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
     problem_row_id BIGINT NOT NULL,
     amount taler_amount NOT NULL,
     deadline BIGINT NOT NULL,
-    wtid BYTEA NOT NULL,
+    wtid BYTEA NOT NULL CHECK (LENGTH(wtid)=32),
     account BYTEA NOT NULL,
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
diff --git a/src/auditordb/0002-auditor_coin_inconsistency.sql 
b/src/auditordb/0002-auditor_coin_inconsistency.sql
index c9c1b02fc..73ac1db13 100644
--- a/src/auditordb/0002-auditor_coin_inconsistency.sql
+++ b/src/auditordb/0002-auditor_coin_inconsistency.sql
@@ -14,18 +14,16 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
+
 CREATE TABLE IF NOT EXISTS auditor_coin_inconsistency
 (
-    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
-    problem_row_id BIGINT NOT NULL,
+    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
     operation TEXT NOT NULL,
     exchange_amount taler_amount NOT NULL,
     auditor_amount taler_amount NOT NULL,
     coin_pub BYTEA NOT NULL CHECK (LENGTH(coin_pub)=32),
     profitable BOOLEAN NOT NULL,
-    suppressed BOOLEAN NOT NULL DEFAULT FALSE,
-    PRIMARY KEY (operation, coin_pub)
+    suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
 COMMENT ON TABLE auditor_coin_inconsistency
     IS 'Report a (serious) inconsistency in the exchange''s database with 
respect to calculations involving amounts';
diff --git 
a/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql
 
b/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql
index 4c91eded6..6bde7400b 100644
--- 
a/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql
+++ 
b/src/auditordb/0002-auditor_denomination_key_validity_withdraw_inconsistency.sql
@@ -14,14 +14,13 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS 
auditor_denomination_key_validity_withdraw_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
     problem_row_id BIGINT NOT NULL,
-    execution_date BIGINT,
-    reserve_pub BYTEA NOT NULL,
-    denompub_h BYTEA NOT NULL,
+    execution_date BIGINT NOT NULL,
+    reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
+    denompub_h BYTEA NOT NULL CHECK (LENGTH(denompub_h)=64),
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
 COMMENT ON TABLE auditor_denomination_key_validity_withdraw_inconsistency
diff --git a/src/auditordb/0002-auditor_denominations_without_sigs.sql 
b/src/auditordb/0002-auditor_denominations_without_sigs.sql
index 77dc3b153..abd7d981f 100644
--- a/src/auditordb/0002-auditor_denominations_without_sigs.sql
+++ b/src/auditordb/0002-auditor_denominations_without_sigs.sql
@@ -14,11 +14,9 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_denominations_without_sigs
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
-    problem_row_id BIGINT NOT NULL,
     denompub_h BYTEA PRIMARY KEY,
     value taler_amount NOT NULL,
     start_time BIGINT NOT NULL,
diff --git a/src/auditordb/0002-auditor_deposit_confirmations.sql 
b/src/auditordb/0002-auditor_deposit_confirmations.sql
index 2c9bbf951..7e47b4fd1 100644
--- a/src/auditordb/0002-auditor_deposit_confirmations.sql
+++ b/src/auditordb/0002-auditor_deposit_confirmations.sql
@@ -16,7 +16,6 @@
 
 CREATE TABLE auditor_deposit_confirmations
 (deposit_confirmation_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE
-    ,problem_row_id BIGINT NOT NULL
     ,h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)
     ,h_policy BYTEA NOT NULL CHECK (LENGTH(h_policy)=64)
     ,h_wire BYTEA NOT NULL CHECK (LENGTH(h_wire)=64)
diff --git a/src/auditordb/0002-auditor_emergency.sql 
b/src/auditordb/0002-auditor_emergency.sql
index a97befc0b..90f0ca8b8 100644
--- a/src/auditordb/0002-auditor_emergency.sql
+++ b/src/auditordb/0002-auditor_emergency.sql
@@ -1,5 +1,3 @@
-
-
 --
 -- This file is part of TALER
 -- Copyright (C) 2014--2024 Taler Systems SA
@@ -16,17 +14,16 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_emergency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
     denompub_h BYTEA CHECK (LENGTH(denompub_h)=64),
     denom_risk taler_amount NOT NULL,
     denom_loss taler_amount NOT NULL,
     deposit_start BIGINT NOT NULL,
-    deposit_end BIGINT,
-    value taler_amount NOT NULL
+    deposit_end BIGINT NOT NULL,
+    value taler_amount NOT NULL,
+    suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
 COMMENT ON TABLE auditor_emergency
     IS 'Report an emergency denomination.';
diff --git a/src/auditordb/0002-auditor_emergency_by_count.sql 
b/src/auditordb/0002-auditor_emergency_by_count.sql
index 41ff89cea..6d2be80aa 100644
--- a/src/auditordb/0002-auditor_emergency_by_count.sql
+++ b/src/auditordb/0002-auditor_emergency_by_count.sql
@@ -14,17 +14,15 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_emergency_by_count
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
-    denompub_h BYTEA NOT NULL,
+    denompub_h BYTEA NOT NULL CHECK (LENGTH(denompub_h)=64),
     num_issued BIGINT NOT NULL,
     num_known BIGINT NOT NULL,
     risk taler_amount NOT NULL,
     start BIGINT NOT NULL,
-    deposit_end BIGINT,
+    deposit_end BIGINT NOT NULL,
     value taler_amount NOT NULL,
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
diff --git a/src/auditordb/0002-auditor_fee_time_inconsistency.sql 
b/src/auditordb/0002-auditor_fee_time_inconsistency.sql
index 128204bc4..b8cf3c212 100644
--- a/src/auditordb/0002-auditor_fee_time_inconsistency.sql
+++ b/src/auditordb/0002-auditor_fee_time_inconsistency.sql
@@ -14,7 +14,6 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_fee_time_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
diff --git a/src/auditordb/0002-auditor_historic_denomination_revenue.sql 
b/src/auditordb/0002-auditor_historic_denomination_revenue.sql
index 8576387a4..a902fe456 100644
--- a/src/auditordb/0002-auditor_historic_denomination_revenue.sql
+++ b/src/auditordb/0002-auditor_historic_denomination_revenue.sql
@@ -15,9 +15,8 @@
 --
 
 CREATE TABLE auditor_historic_denomination_revenue
-  (row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
-   problem_row_id BIGINT NOT NULL,
-      denom_pub_hash BYTEA PRIMARY KEY CHECK (LENGTH(denom_pub_hash)=64)
+  (row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE
+  ,denom_pub_hash BYTEA PRIMARY KEY CHECK (LENGTH(denom_pub_hash)=64)
   ,revenue_timestamp BIGINT NOT NULL
   ,revenue_balance taler_amount NOT NULL
   ,loss_balance taler_amount NOT NULL
diff --git a/src/auditordb/0002-auditor_historic_reserve_summary.sql 
b/src/auditordb/0002-auditor_historic_reserve_summary.sql
index 0c97befb2..742a59f32 100644
--- a/src/auditordb/0002-auditor_historic_reserve_summary.sql
+++ b/src/auditordb/0002-auditor_historic_reserve_summary.sql
@@ -14,16 +14,13 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_historic_reserve_summary
   (
       row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
-      problem_row_id BIGINT NOT NULL,
       start_date BIGINT NOT NULL,
       end_date BIGINT NOT NULL,
       reserve_profits taler_amount NOT NULL,
       PRIMARY KEY (start_date, end_date)
-
   );
 COMMENT ON TABLE auditor_historic_reserve_summary
   IS 'historic profits from reserves; we eventually GC 
auditor_historic_reserve_revenue, and then store the totals in here (by time 
intervals).';
diff --git a/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql 
b/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql
index d212f5768..a351f7dfd 100644
--- a/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql
+++ b/src/auditordb/0002-auditor_misattribution_in_inconsistency.sql
@@ -14,14 +14,13 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
+
 CREATE TABLE IF NOT EXISTS auditor_misattribution_in_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
     amount taler_amount NOT NULL,
     bank_row BIGINT NOT NULL,
-    reserve_pub BYTEA NOT NULL,
+    reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
 COMMENT ON TABLE auditor_misattribution_in_inconsistency
diff --git a/src/auditordb/0002-auditor_pending_deposits.sql 
b/src/auditordb/0002-auditor_pending_deposits.sql
index 847885e48..083c81fb5 100644
--- a/src/auditordb/0002-auditor_pending_deposits.sql
+++ b/src/auditordb/0002-auditor_pending_deposits.sql
@@ -17,7 +17,6 @@
 CREATE TABLE IF NOT EXISTS auditor_pending_deposits
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
     total_amount taler_amount NOT NULL,
     wire_target_payto TEXT NOT NULL,
     batch_deposit_serial_id BIGINT NOT NULL,
diff --git a/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql 
b/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql
index 470f759c6..79a6ec432 100644
--- a/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql
+++ b/src/auditordb/0002-auditor_purse_not_closed_inconsistencies.sql
@@ -14,12 +14,11 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
+
 CREATE TABLE IF NOT EXISTS auditor_purse_not_closed_inconsistencies
 (
-    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE,
-    problem_row_id BIGINT NOT NULL,
-    purse_pub BYTEA PRIMARY KEY NOT NULL,
+    row_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
+    purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32),
     amount taler_amount NOT NULL,
     expiration_date BIGINT NOT NULL,
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
diff --git a/src/auditordb/0002-auditor_purses.sql 
b/src/auditordb/0002-auditor_purses.sql
index 6a100fd6e..c9c108dc9 100644
--- a/src/auditordb/0002-auditor_purses.sql
+++ b/src/auditordb/0002-auditor_purses.sql
@@ -1,6 +1,6 @@
 --
 -- This file is part of TALER
--- Copyright (C) 2014--2022 Taler Systems SA
+-- Copyright (C) 2014--2024 Taler Systems SA
 --
 -- TALER is free software; you can redistribute it and/or modify it under the
 -- terms of the GNU General Public License as published by the Free Software
@@ -16,7 +16,6 @@
 
 CREATE TABLE auditor_purses
   (auditor_purses_rowid BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE NOT NULL
- ,problem_row_id BIGINT NOT NULL
   ,purse_pub BYTEA PRIMARY KEY CHECK(LENGTH(purse_pub)=32) NOT NULL
   ,balance taler_amount NOT NULL DEFAULT(0,0)
   ,target taler_amount NOT NULL
diff --git a/src/auditordb/0002-auditor_refreshes_hanging.sql 
b/src/auditordb/0002-auditor_refreshes_hanging.sql
index f9ef5b743..ebe3368ca 100644
--- a/src/auditordb/0002-auditor_refreshes_hanging.sql
+++ b/src/auditordb/0002-auditor_refreshes_hanging.sql
@@ -14,13 +14,12 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
+
 CREATE TABLE IF NOT EXISTS auditor_refreshes_hanging
 (
-    row_id BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY UNIQUE,
+    row_id BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
     problem_row_id BIGINT NOT NULL,
     amount taler_amount NOT NULL,
-    coin_pub BYTEA PRIMARY KEY NOT NULL,
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
 COMMENT ON TABLE auditor_refreshes_hanging
diff --git 
a/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql 
b/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql
index 00ec2fee2..83e93a4e7 100644
--- a/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_balance_insufficient_inconsistency.sql
@@ -14,11 +14,9 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_reserve_balance_insufficient_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
     reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
     inconsistency_gain BOOLEAN NOT NULL,
     inconsistency_amount taler_amount NOT NULL,
diff --git 
a/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql 
b/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql
index bd99e1dc8..7679f93f0 100644
--- a/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_balance_summary_wrong_inconsistency.sql
@@ -14,12 +14,11 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
+
 CREATE TABLE IF NOT EXISTS auditor_reserve_balance_summary_wrong_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
-    reserve_pub BYTEA NOT NULL,
+    reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
     exchange_amount taler_amount NOT NULL,
     auditor_amount taler_amount NOT NULL,
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
diff --git a/src/auditordb/0002-auditor_reserve_in_inconsistency.sql 
b/src/auditordb/0002-auditor_reserve_in_inconsistency.sql
index 088aab597..5e14f0189 100644
--- a/src/auditordb/0002-auditor_reserve_in_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_in_inconsistency.sql
@@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS auditor_reserve_in_inconsistency
     bank_row_id INT8 NOT NULL,
     amount_exchange_expected taler_amount NOT NULL,
     amount_wired taler_amount NOT NULL,
-    reserve_pub BYTEA NOT NULL,
+    reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32),
     timestamp BIGINT NOT NULL,
     account BYTEA NOT NULL,
     diagnostic BYTEA NOT NULL,
diff --git a/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql 
b/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql
index 7c588a34c..82d378a44 100644
--- a/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql
+++ b/src/auditordb/0002-auditor_reserve_not_closed_inconsistency.sql
@@ -14,12 +14,10 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
 CREATE TABLE IF NOT EXISTS auditor_reserve_not_closed_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE ,
-    problem_row_id BIGINT NOT NULL,
-    reserve_pub BYTEA PRIMARY KEY NOT NULL,
+    reserve_pub BYTEA PRIMARY KEY NOT NULL CHECK (LENGTH(reserve_pub)=32),
     balance taler_amount NOT NULL,
     expiration_time BIGINT,
     diagnostic BYTEA,
diff --git a/src/auditordb/0002-auditor_reserves.sql 
b/src/auditordb/0002-auditor_reserves.sql
index 9a7506b0f..f50653512 100644
--- a/src/auditordb/0002-auditor_reserves.sql
+++ b/src/auditordb/0002-auditor_reserves.sql
@@ -16,7 +16,6 @@
 
 CREATE TABLE auditor_reserves
   (auditor_reserves_rowid BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE
-  ,problem_row_id BIGINT NOT NULL
   ,reserve_pub BYTEA PRIMARY KEY CHECK(LENGTH(reserve_pub)=32)
   ,reserve_balance taler_amount NOT NULL
   ,reserve_loss taler_amount NOT NULL
diff --git a/src/auditordb/0002-auditor_row_inconsistency.sql 
b/src/auditordb/0002-auditor_row_inconsistency.sql
index 195d33030..c033814e4 100644
--- a/src/auditordb/0002-auditor_row_inconsistency.sql
+++ b/src/auditordb/0002-auditor_row_inconsistency.sql
@@ -14,11 +14,10 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
+
 CREATE TABLE IF NOT EXISTS auditor_row_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
     row_table TEXT NOT NULL,
     diagnostic TEXT NOT NULL,
     problem_row_id INT8 NOT NULL,
diff --git a/src/auditordb/0002-auditor_wire_format_inconsistency.sql 
b/src/auditordb/0002-auditor_wire_format_inconsistency.sql
index e77870a62..c11d8e63a 100644
--- a/src/auditordb/0002-auditor_wire_format_inconsistency.sql
+++ b/src/auditordb/0002-auditor_wire_format_inconsistency.sql
@@ -14,14 +14,13 @@
 -- TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
 --
 
-SET search_path TO auditor;
+
 CREATE TABLE IF NOT EXISTS auditor_wire_format_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
     amount taler_amount NOT NULL,
     wire_offset BIGINT NOT NULL,
-    diagnostic BYTEA,
+    diagnostic BYTEA NOT NULL,
     suppressed BOOLEAN NOT NULL DEFAULT FALSE
 );
 COMMENT ON TABLE auditor_wire_format_inconsistency
diff --git a/src/auditordb/0002-auditor_wire_out_inconsistency.sql 
b/src/auditordb/0002-auditor_wire_out_inconsistency.sql
index 9e605d068..d46c2b283 100644
--- a/src/auditordb/0002-auditor_wire_out_inconsistency.sql
+++ b/src/auditordb/0002-auditor_wire_out_inconsistency.sql
@@ -17,7 +17,6 @@
 CREATE TABLE IF NOT EXISTS auditor_wire_out_inconsistency
 (
     row_id BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE PRIMARY KEY,
-    problem_row_id BIGINT NOT NULL,
     destination_account TEXT NOT NULL,
     diagnostic TEXT NOT NULL,
     wire_out_serial_id INT8 NOT NULL,
diff --git a/src/auditordb/pg_helper.c b/src/auditordb/pg_helper.c
index f022d8e57..242b85efd 100644
--- a/src/auditordb/pg_helper.c
+++ b/src/auditordb/pg_helper.c
@@ -22,6 +22,7 @@
 #include "platform.h"
 #include "taler_auditordb_plugin.h"
 #include <ltdl.h>
+#include "pg_helper.h"
 
 
 const char *
diff --git a/src/auditordb/pg_helper.h b/src/auditordb/pg_helper.h
index 3c22dd424..9f354c2c1 100644
--- a/src/auditordb/pg_helper.h
+++ b/src/auditordb/pg_helper.h
@@ -75,27 +75,27 @@ struct PostgresClosure
  * @param name name to prepare the statement under
  * @param sql actual SQL text
  */
-#define PREPARE(pg,name,sql)                      \
+#define PREPARE(pg,name,sql)                            \
         do {                                            \
           static struct {                               \
             unsigned long long cnt;                     \
             struct PostgresClosure *pg;                 \
-          } preps[2]; /* 2 ctrs for taler-auditor-sync*/ \
-          unsigned int off = 0;                         \
-                                                  \
-          while ( (NULL != preps[off].pg) &&            \
-                  (pg != preps[off].pg) &&              \
-                  (off < sizeof(preps) / sizeof(*preps)) ) \
-          off++;                                      \
-          GNUNET_assert (off <                          \
-                         sizeof(preps) / sizeof(*preps)); \
-          if (preps[off].cnt < pg->prep_gen)            \
+          } preps_[2]; /* 2 ctrs for taler-auditor-sync*/ \
+          unsigned int off_ = 0;                        \
+                                                        \
+          while ( (NULL != preps_[off_].pg) &&          \
+                  (pg != preps_[off_].pg) &&            \
+                  (off_ < sizeof(preps_) / sizeof(*preps_)) ) \
+          off_++;                                       \
+          GNUNET_assert (off_ <                         \
+                         sizeof(preps_) / sizeof(*preps_)); \
+          if (preps_[off_].cnt < pg->prep_gen)          \
           {                                             \
             struct GNUNET_PQ_PreparedStatement ps[] = { \
               GNUNET_PQ_make_prepare (name, sql),       \
               GNUNET_PQ_PREPARED_STATEMENT_END          \
             };                                          \
-                                                  \
+                                                        \
             if (GNUNET_OK !=                            \
                 GNUNET_PQ_prepare_statements (pg->conn, \
                                               ps))      \
@@ -103,8 +103,8 @@ struct PostgresClosure
               GNUNET_break (0);                         \
               return GNUNET_DB_STATUS_HARD_ERROR;       \
             }                                           \
-            preps[off].pg = pg;                         \
-            preps[off].cnt = pg->prep_gen;              \
+            preps_[off_].pg = pg;                       \
+            preps_[off_].cnt = pg->prep_gen;            \
           }                                             \
         } while (0)
 
diff --git a/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c 
b/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c
index afc84e5ba..4a58c5985 100644
--- a/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c
+++ b/src/auditordb/pg_insert_amount_arithmetic_inconsistency.c
@@ -13,12 +13,9 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
 #include "platform.h"
 #include "taler_pq_lib.h"
-
 #include "pg_helper.h"
-
 #include "pg_insert_amount_arithmetic_inconsistency.h"
 
 enum GNUNET_DB_QueryStatus
@@ -28,12 +25,13 @@ TAH_PG_insert_amount_arithmetic_inconsistency (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
     GNUNET_PQ_query_param_string (dc->operation),
-    TALER_PQ_query_param_amount (pg->conn, &dc->exchange_amount),
-    TALER_PQ_query_param_amount (pg->conn, &dc->auditor_amount),
+    GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->exchange_amount),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->auditor_amount),
     GNUNET_PQ_query_param_bool (dc->profitable),
-
     GNUNET_PQ_query_param_end
   };
 
@@ -41,15 +39,11 @@ TAH_PG_insert_amount_arithmetic_inconsistency (
            "auditor_amount_arithmetic_inconsistency_insert",
            "INSERT INTO auditor_amount_arithmetic_inconsistency "
            "(operation"
+           ",problem_row_id"
            ",exchange_amount"
            ",auditor_amount"
            ",profitable"
-           ") VALUES ($1,$2,$3,$4)"
-           " ON CONFLICT (operation) DO UPDATE"
-           " SET exchange_amount = excluded.exchange_amount,"
-           " auditor_amount = excluded.auditor_amount,"
-           " profitable = excluded.profitable,"
-           " suppressed = false;"
+           ") VALUES ($1,$2,$3,$4,$5);"
            );
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              
"auditor_amount_arithmetic_inconsistency_insert",
diff --git a/src/auditordb/pg_insert_auditor_closure_lags.c 
b/src/auditordb/pg_insert_auditor_closure_lags.c
index e858f5ac7..b437a5d7f 100644
--- a/src/auditordb/pg_insert_auditor_closure_lags.c
+++ b/src/auditordb/pg_insert_auditor_closure_lags.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_auditor_closure_lags.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_auditor_closure_lags (
   void *cls,
@@ -28,12 +26,12 @@ TAH_PG_insert_auditor_closure_lags (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
-    TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->amount),
+    GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
     GNUNET_PQ_query_param_absolute_time (&dc->deadline),
     GNUNET_PQ_query_param_auto_from_type (&dc->wtid),
     GNUNET_PQ_query_param_string (dc->account),
-
     GNUNET_PQ_query_param_end
   };
 
@@ -41,10 +39,11 @@ TAH_PG_insert_auditor_closure_lags (
            "auditor_closure_lags_insert",
            "INSERT INTO auditor_closure_lags "
            "(amount"
+           ",problem_row_id"
            ",deadline"
            ",wtid"
            ",account"
-           ") VALUES ($1,$2,$3,$4);");
+           ") VALUES ($1,$2,$3,$4,$5);");
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              "auditor_closure_lags_insert",
                                              params);
diff --git a/src/auditordb/pg_insert_bad_sig_losses.c 
b/src/auditordb/pg_insert_bad_sig_losses.c
index 88ce7d2aa..7cf7cf5cc 100644
--- a/src/auditordb/pg_insert_bad_sig_losses.c
+++ b/src/auditordb/pg_insert_bad_sig_losses.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_bad_sig_losses.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_bad_sig_losses (
   void *cls,
@@ -28,30 +26,22 @@ TAH_PG_insert_bad_sig_losses (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
     GNUNET_PQ_query_param_string (dc->operation),
-    TALER_PQ_query_param_amount (pg->conn, &dc->loss),
+    GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->loss),
     GNUNET_PQ_query_param_auto_from_type (&dc->operation_specific_pub),
-
     GNUNET_PQ_query_param_end
   };
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--storing new bsl\n");
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--operation %s\n", dc->operation);
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--loss %s\n", TALER_amount_to_string (
-                &dc->loss));
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "--operation_specific_pub %s\n",
-              TALER_B2S (&dc->operation_specific_pub));
 
   PREPARE (pg,
            "auditor_bad_sig_losses_insert",
            "INSERT INTO auditor_bad_sig_losses "
            "(operation"
+           ",problem_row_id"
            ",loss"
            ",operation_specific_pub"
-           ") VALUES ($1,$2,$3)"
-           " ON CONFLICT (operation, operation_specific_pub) DO UPDATE"
-           " SET loss = excluded.loss,"
-           " suppressed = false;"
+           ") VALUES ($1,$2,$3,$4);"
            );
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              "auditor_bad_sig_losses_insert",
diff --git a/src/auditordb/pg_insert_coin_inconsistency.c 
b/src/auditordb/pg_insert_coin_inconsistency.c
index 32c57a3c8..70d105175 100644
--- a/src/auditordb/pg_insert_coin_inconsistency.c
+++ b/src/auditordb/pg_insert_coin_inconsistency.c
@@ -13,13 +13,9 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
-
 #include "pg_helper.h"
-
 #include "pg_insert_coin_inconsistency.h"
 
 
@@ -30,7 +26,6 @@ TAH_PG_insert_coin_inconsistency (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
     GNUNET_PQ_query_param_string (dc->operation),
     TALER_PQ_query_param_amount (pg->conn,
                                  &dc->exchange_amount),
@@ -38,7 +33,6 @@ TAH_PG_insert_coin_inconsistency (
                                  &dc->auditor_amount),
     GNUNET_PQ_query_param_auto_from_type (&dc->coin_pub),
     GNUNET_PQ_query_param_bool (dc->profitable),
-
     GNUNET_PQ_query_param_end
   };
 
@@ -46,16 +40,12 @@ TAH_PG_insert_coin_inconsistency (
            "auditor_coin_inconsistency_insert",
            "INSERT INTO auditor_coin_inconsistency "
            "(operation"
+           ",problem_row_id"
            ",exchange_amount"
            ",auditor_amount"
            ",coin_pub"
            ",profitable"
-           ") VALUES ($1,$2,$3,$4,$5)"
-           " ON CONFLICT (operation, coin_pub) DO UPDATE"
-           " SET exchange_amount = excluded.exchange_amount,"
-           " auditor_amount = excluded.auditor_amount,"
-           " profitable = excluded.profitable,"
-           " suppressed = false;"
+           ") VALUES ($1,$2,$3,$4,$5,$6)"
            );
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              
"auditor_coin_inconsistency_insert",
diff --git 
a/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c 
b/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c
index 2d0cb3cf5..9755739f3 100644
--- a/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c
+++ b/src/auditordb/pg_insert_denomination_key_validity_withdraw_inconsistency.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_denomination_key_validity_withdraw_inconsistency.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_denomination_key_validity_withdraw_inconsistency (
   void *cls,
@@ -28,8 +26,8 @@ 
TAH_PG_insert_denomination_key_validity_withdraw_inconsistency (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
     GNUNET_PQ_query_param_absolute_time (&dc->execution_date),
+    GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
     GNUNET_PQ_query_param_auto_from_type (&dc->reserve_pub),
     GNUNET_PQ_query_param_auto_from_type (&dc->denompub_h),
 
@@ -40,9 +38,10 @@ 
TAH_PG_insert_denomination_key_validity_withdraw_inconsistency (
            "auditor_denomination_key_validity_withdraw_inconsistency_insert",
            "INSERT INTO 
auditor_denomination_key_validity_withdraw_inconsistency "
            "(execution_date"
+           ",problem_row_id"
            ",reserve_pub"
            ",denompub_h"
-           ") VALUES ($1,$2,$3);");
+           ") VALUES ($1,$2,$3,$4);");
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              
"auditor_denomination_key_validity_withdraw_inconsistency_insert",
                                              params);
diff --git a/src/auditordb/pg_insert_denominations_without_sigs.c 
b/src/auditordb/pg_insert_denominations_without_sigs.c
index f06034602..d8aacbd0b 100644
--- a/src/auditordb/pg_insert_denominations_without_sigs.c
+++ b/src/auditordb/pg_insert_denominations_without_sigs.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_denominations_without_sigs.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_denominations_without_sigs (
   void *cls,
@@ -28,13 +26,10 @@ TAH_PG_insert_denominations_without_sigs (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
     GNUNET_PQ_query_param_auto_from_type (&dc->denompub_h),
     TALER_PQ_query_param_amount (pg->conn, &dc->value),
     GNUNET_PQ_query_param_absolute_time (&dc->start_time),
     GNUNET_PQ_query_param_absolute_time (&dc->end_time),
-
-
     GNUNET_PQ_query_param_end
   };
 
diff --git a/src/auditordb/pg_insert_emergency.c 
b/src/auditordb/pg_insert_emergency.c
index a966be43b..6af7c527f 100644
--- a/src/auditordb/pg_insert_emergency.c
+++ b/src/auditordb/pg_insert_emergency.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_emergency.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_emergency (
   void *cls,
@@ -28,14 +26,15 @@ TAH_PG_insert_emergency (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
     GNUNET_PQ_query_param_auto_from_type (&dc->denompub_h),
-    TALER_PQ_query_param_amount (pg->conn, &dc->denom_risk),
-    TALER_PQ_query_param_amount (pg->conn, &dc->denom_loss),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->denom_risk),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->denom_loss),
     GNUNET_PQ_query_param_absolute_time (&dc->deposit_start),
     GNUNET_PQ_query_param_absolute_time (&dc->deposit_end),
-    TALER_PQ_query_param_amount (pg->conn,&dc->value),
-
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->value),
     GNUNET_PQ_query_param_end
   };
 
diff --git a/src/auditordb/pg_insert_fee_time_inconsistency.c 
b/src/auditordb/pg_insert_fee_time_inconsistency.c
index ad1a8b25f..852e58018 100644
--- a/src/auditordb/pg_insert_fee_time_inconsistency.c
+++ b/src/auditordb/pg_insert_fee_time_inconsistency.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_fee_time_inconsistency.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_fee_time_inconsistency (
   void *cls,
@@ -28,12 +26,10 @@ TAH_PG_insert_fee_time_inconsistency (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
-
     GNUNET_PQ_query_param_string (dc->type),
+    GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
     GNUNET_PQ_query_param_absolute_time (&dc->time),
     GNUNET_PQ_query_param_string (dc->diagnostic),
-
     GNUNET_PQ_query_param_end
   };
 
@@ -41,9 +37,10 @@ TAH_PG_insert_fee_time_inconsistency (
            "auditor_fee_time_inconsistency_insert",
            "INSERT INTO auditor_fee_time_inconsistency "
            "(type"
+           ",problem_row_id"
            ",time"
            ",diagnostic"
-           ") VALUES ($1,$2,$3);");
+           ") VALUES ($1,$2,$3,$4);");
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              
"auditor_fee_time_inconsistency_insert",
                                              params);
diff --git a/src/auditordb/pg_insert_misattribution_in_inconsistency.c 
b/src/auditordb/pg_insert_misattribution_in_inconsistency.c
index c557160da..e1641c61c 100644
--- a/src/auditordb/pg_insert_misattribution_in_inconsistency.c
+++ b/src/auditordb/pg_insert_misattribution_in_inconsistency.c
@@ -18,6 +18,7 @@
 #include "pg_helper.h"
 #include "pg_insert_misattribution_in_inconsistency.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_misattribution_in_inconsistency (
   void *cls,
diff --git a/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c 
b/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c
index 7ae2dc7d8..ff8100376 100644
--- a/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c
+++ b/src/auditordb/pg_insert_purse_not_closed_inconsistencies.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_purse_not_closed_inconsistencies.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_purse_not_closed_inconsistencies (
   void *cls,
@@ -28,11 +26,10 @@ TAH_PG_insert_purse_not_closed_inconsistencies (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
     GNUNET_PQ_query_param_auto_from_type (&dc->purse_pub),
-    TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->amount),
     GNUNET_PQ_query_param_absolute_time (&dc->expiration_date),
-
     GNUNET_PQ_query_param_end
   };
 
@@ -43,10 +40,6 @@ TAH_PG_insert_purse_not_closed_inconsistencies (
            ",amount"
            ",expiration_date"
            ") VALUES ($1,$2,$3)"
-           " ON CONFLICT (purse_pub) DO UPDATE"
-           " SET amount = excluded.amount,"
-           " expiration_date = excluded.expiration_date,"
-           " suppressed = false;"
            );
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              
"auditor_purse_not_closed_inconsistencies_insert",
diff --git a/src/auditordb/pg_insert_refreshes_hanging.c 
b/src/auditordb/pg_insert_refreshes_hanging.c
index 5a7fe018c..fead922cf 100644
--- a/src/auditordb/pg_insert_refreshes_hanging.c
+++ b/src/auditordb/pg_insert_refreshes_hanging.c
@@ -13,14 +13,12 @@
    You should have received a copy of the GNU General Public License along with
    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
  */
-
-
 #include "platform.h"
 #include "taler_pq_lib.h"
 #include "pg_helper.h"
-
 #include "pg_insert_refreshes_hanging.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_refreshes_hanging (
   void *cls,
@@ -28,10 +26,10 @@ TAH_PG_insert_refreshes_hanging (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
-    TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->amount),
+    GNUNET_PQ_query_param_uint64 (&dc->problem_row_id),
     GNUNET_PQ_query_param_auto_from_type (&dc->coin_pub),
-
     GNUNET_PQ_query_param_end
   };
 
@@ -39,11 +37,9 @@ TAH_PG_insert_refreshes_hanging (
            "auditor_refreshes_hanging_insert",
            "INSERT INTO auditor_refreshes_hanging "
            "(amount"
+           ",problem_row_id"
            ",coin_pub"
-           ") VALUES ($1,$2)"
-           " ON CONFLICT (coin_pub) DO UPDATE"
-           " SET amount = excluded.amount,"
-           " suppressed = false;"
+           ") VALUES ($1,$2);"
            );
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              
"auditor_refreshes_hanging_insert",
diff --git a/src/auditordb/pg_insert_row_inconsistency.c 
b/src/auditordb/pg_insert_row_inconsistency.c
index 8ab92dbb7..f5cc630f2 100644
--- a/src/auditordb/pg_insert_row_inconsistency.c
+++ b/src/auditordb/pg_insert_row_inconsistency.c
@@ -19,6 +19,7 @@
 #include "pg_helper.h"
 #include "pg_insert_row_inconsistency.h"
 
+
 enum GNUNET_DB_QueryStatus
 TAH_PG_insert_row_inconsistency (
   void *cls,
diff --git a/src/auditordb/pg_insert_wire_format_inconsistency.c 
b/src/auditordb/pg_insert_wire_format_inconsistency.c
index 73fe677b4..a824ae76d 100644
--- a/src/auditordb/pg_insert_wire_format_inconsistency.c
+++ b/src/auditordb/pg_insert_wire_format_inconsistency.c
@@ -26,8 +26,8 @@ TAH_PG_insert_wire_format_inconsistency (
 {
   struct PostgresClosure *pg = cls;
   struct GNUNET_PQ_QueryParam params[] = {
-
-    TALER_PQ_query_param_amount (pg->conn, &dc->amount),
+    TALER_PQ_query_param_amount (pg->conn,
+                                 &dc->amount),
     GNUNET_PQ_query_param_uint64 (&dc->wire_offset),
     GNUNET_PQ_query_param_auto_from_type (&dc->diagnostic),
     GNUNET_PQ_query_param_end
@@ -36,11 +36,10 @@ TAH_PG_insert_wire_format_inconsistency (
   PREPARE (pg,
            "auditor_wire_format_inconsistency_insert",
            "INSERT INTO auditor_wire_format_inconsistency "
-           "(row_id,"
-           " amount,"
+           "(amount,"
            " wire_offset,"
            " diagnostic"
-           ") VALUES ($1,$2,$3,$4);"
+           ") VALUES ($1,$2,$3);"
            );
   return GNUNET_PQ_eval_prepared_non_select (pg->conn,
                                              
"auditor_wire_format_inconsistency_insert",
diff --git a/src/auditordb/plugin_auditordb_postgres.c 
b/src/auditordb/plugin_auditordb_postgres.c
index 5c55e65e6..14d2e4377 100644
--- a/src/auditordb/plugin_auditordb_postgres.c
+++ b/src/auditordb/plugin_auditordb_postgres.c
@@ -477,7 +477,7 @@ postgres_rollback (void *cls)
  * @param cls the `struct PostgresClosure` with the plugin-specific state
  * @return transaction status code
  */
-enum GNUNET_DB_QueryStatus
+static enum GNUNET_DB_QueryStatus
 postgres_commit (void *cls)
 {
   struct PostgresClosure *pg = cls;
diff --git a/src/include/taler_auditordb_plugin.h 
b/src/include/taler_auditordb_plugin.h
index 176e1b45b..5a7bd61ed 100644
--- a/src/include/taler_auditordb_plugin.h
+++ b/src/include/taler_auditordb_plugin.h
@@ -215,8 +215,8 @@ struct TALER_AUDITORDB_Generic_Update
  */
 struct TALER_AUDITORDB_AmountArithmeticInconsistency
 {
-  // FIXME: which row?
   uint64_t row_id;
+  uint64_t problem_row_id;
   char *operation;
   struct TALER_Amount exchange_amount;
   struct TALER_Amount auditor_amount;
@@ -253,6 +253,7 @@ struct TALER_AUDITORDB_RowInconsistency
 struct TALER_AUDITORDB_BadSigLosses
 {
   uint64_t row_id;
+  uint64_t problem_row_id;
   char *operation;
   struct TALER_Amount loss;
   struct GNUNET_CRYPTO_EddsaPublicKey operation_specific_pub;
@@ -264,6 +265,7 @@ struct TALER_AUDITORDB_BadSigLosses
 struct TALER_AUDITORDB_ClosureLags
 {
   uint64_t row_id;
+  uint64_t problem_row_id;
   struct TALER_Amount amount;
   struct GNUNET_TIME_Absolute deadline;
   struct TALER_WireTransferIdentifierRawP wtid;
@@ -316,6 +318,7 @@ struct TALER_AUDITORDB_Progress
 struct TALER_AUDITORDB_RefreshesHanging
 {
   uint64_t row_id;
+  uint64_t problem_row_id;
   struct TALER_Amount amount;
   struct GNUNET_CRYPTO_EddsaPublicKey coin_pub;
 };
@@ -326,6 +329,7 @@ struct TALER_AUDITORDB_RefreshesHanging
 struct TALER_AUDITORDB_FeeTimeInconsistency
 {
   uint64_t row_id;
+  uint64_t problem_row_id;
   char *type;
   struct GNUNET_TIME_Absolute time;
   char *diagnostic;
@@ -337,6 +341,7 @@ struct TALER_AUDITORDB_FeeTimeInconsistency
 struct TALER_AUDITORDB_DenominationKeyValidityWithdrawInconsistency
 {
   uint64_t row_id;
+  uint64_t problem_row_id;
   struct GNUNET_TIME_Absolute execution_date;
   struct TALER_ReservePublicKeyP reserve_pub;
   struct TALER_DenominationHashP denompub_h;
@@ -688,7 +693,6 @@ struct TALER_AUDITORDB_DenominationsWithoutSigs
   struct GNUNET_TIME_Absolute start_time;
   struct GNUNET_TIME_Absolute end_time;
   bool suppressed;
-
 };
 
 struct TALER_AUDITORDB_MisattributionInInconsistency

-- 
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]