diff options
| author | Marco Boss <bossm8@bfh.ch> | 2022-03-04 13:22:28 +0100 | 
|---|---|---|
| committer | Marco Boss <bossm8@bfh.ch> | 2022-03-04 13:22:28 +0100 | 
| commit | f5e1cf5e6d597a0d0026941691de3ed1bdc5dbb0 (patch) | |
| tree | 5985f2944c241230569e2ae9b858194073e7ad70 /src/exchangedb | |
| parent | f9a2808ed02535427e4d2a8a45bcdc9777b8caf5 (diff) | |
rewrite query for recoup_by_reserve
Diffstat (limited to 'src/exchangedb')
| -rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 38 | 
1 files changed, 20 insertions, 18 deletions
| diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index bdb15c4e..754654e3 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -1579,27 +1579,29 @@ prepare_statements (struct PostgresClosure *pg)        " ORDER BY close_uuid ASC;",        1),      /* Used in #postgres_get_reserve_history() to obtain recoup transactions -       for a reserve */ +       for a reserve - query optimization should be disabled i.e. +       BEGIN; SET LOCAL join_collapse_limit=1; query; COMMIT; */      GNUNET_PQ_make_prepare (        "recoup_by_reserve", -      "SELECT" -      " coins.coin_pub" -      ",coin_sig" -      ",coin_blind" -      ",amount_val" -      ",amount_frac" -      ",recoup_timestamp" -      ",denoms.denom_pub_hash" -      ",coins.denom_sig" -      " FROM reserves" -      " JOIN reserves_out ro" -      "   USING (reserve_uuid)" -      " JOIN recoup" -      "   USING (reserve_out_serial_id)" +      "SELECT " +      "  coins.coin_pub," +      "  coin_sig," +      "  coin_blind," +      "  amount_val," +      "  amount_frac," +      "  recoup_timestamp," +      "  denoms.denom_pub_hash," +      "  coins.denom_sig" +      " FROM denominations denoms"        " JOIN known_coins coins" -      "     USING (known_coin_id)" -      " JOIN denominations denoms" -      "   ON (coins.denominations_serial = denoms.denominations_serial)" +      "  ON (coins.denominations_serial = denoms.denominations_serial)" +      " JOIN recoup" +      "  USING (known_coin_id)" +      " JOIN (" +      "  reserves_out" +      "   JOIN reserves" +      "    USING (reserve_uuid)" +      "  ) USING (reserve_out_serial_id)"        " WHERE reserve_pub=$1;",        1),      /* Used in #postgres_get_coin_transactions() to obtain recoup transactions | 
