From cedcde4939d560783286b533d01fbe6163dc5766 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 22 Oct 2022 14:46:52 +0200 Subject: fix taler-auditor-sync: needs two plugins running in parallel with their own prepare counters --- src/exchangedb/pg_helper.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/exchangedb/pg_helper.h') diff --git a/src/exchangedb/pg_helper.h b/src/exchangedb/pg_helper.h index 3e9ce7b4c..4b5859662 100644 --- a/src/exchangedb/pg_helper.h +++ b/src/exchangedb/pg_helper.h @@ -108,9 +108,19 @@ struct PostgresClosure */ #define PREPARE(pg,name,sql) \ do { \ - static unsigned long long prep_cnt; \ + static struct { \ + unsigned long long cnt; \ + struct PostgresClosure *pg; \ + } preps[2]; /* 2 ctrs for taler-auditor-sync*/ \ + unsigned int off = 0; \ \ - if (prep_cnt < pg->prep_gen) \ + 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), \ @@ -124,7 +134,8 @@ struct PostgresClosure GNUNET_break (0); \ return GNUNET_DB_STATUS_HARD_ERROR; \ } \ - prep_cnt = pg->prep_gen; \ + preps[off].pg = pg; \ + preps[off].cnt = pg->prep_gen; \ } \ } while (0) -- cgit v1.2.3