summaryrefslogtreecommitdiff
path: root/src/exchangedb/pg_get_link_data.c
diff options
context:
space:
mode:
authorJoseph <Joseph.xu@efrei.net>2023-01-30 08:43:38 -0500
committerJoseph <Joseph.xu@efrei.net>2023-01-30 08:45:51 -0500
commit4bb96abc975aa6753828731a015b8ea7c00684f1 (patch)
tree92c0652ba29221eb3e0bbd1cb7038c2f3558965e /src/exchangedb/pg_get_link_data.c
parenta1c0c2fafde7f516223eabac8002f443dbef86ea (diff)
downloadexchange-4bb96abc975aa6753828731a015b8ea7c00684f1.tar.gz
exchange-4bb96abc975aa6753828731a015b8ea7c00684f1.tar.bz2
exchange-4bb96abc975aa6753828731a015b8ea7c00684f1.zip
test for link data
Diffstat (limited to 'src/exchangedb/pg_get_link_data.c')
-rw-r--r--src/exchangedb/pg_get_link_data.c70
1 files changed, 59 insertions, 11 deletions
diff --git a/src/exchangedb/pg_get_link_data.c b/src/exchangedb/pg_get_link_data.c
index 9bc4c9b04..26225a13d 100644
--- a/src/exchangedb/pg_get_link_data.c
+++ b/src/exchangedb/pg_get_link_data.c
@@ -177,11 +177,35 @@ TEH_PG_get_link_data (void *cls,
};
enum GNUNET_DB_QueryStatus qs;
struct LinkDataContext ldctx;
+ static int percent_refund = -2;
+ const char *query;
- if (NULL == getenv ("NEW_LOGIC"))
+ if (-2 == percent_refund)
{
+ const char *mode = getenv ("NEW_LOGIC");
+ char dummy;
+
+ if ( (NULL==mode) ||
+ (1 != sscanf (mode,
+ "%d%c",
+ &percent_refund,
+ &dummy)) )
+ {
+ if (NULL != mode)
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Bad mode `%s' specified\n",
+ mode);
+ }
+ if (NULL==mode)
+ percent_refund=0;
+ }
+
+ switch (percent_refund)
+ {
+ case 0:
+ query="get_link";
PREPARE (pg,
- "get_link",
+ query,
"SELECT "
" tp.transfer_pub"
",denoms.denom_pub"
@@ -199,15 +223,15 @@ TEH_PG_get_link_data (void *cls,
" ON (rrc.denominations_serial = denoms.denominations_serial)"
" WHERE old_coin_pub=$1"
" ORDER BY tp.transfer_pub, rrc.freshcoin_index ASC");
- }
-
- else
- {
+ break;
+ case 1:
+ query="get_link_v1";
PREPARE (pg,
- "get_link",
+ query,
"WITH rc AS MATERIALIZED ("
"SELECT"
- "* FROM refresh_commitments"
+ " melt_serial_id"
+ " FROM refresh_commitments"
" WHERE old_coin_pub=$1"
")"
"SELECT "
@@ -217,13 +241,37 @@ TEH_PG_get_link_data (void *cls,
",rrc.ewv"
",rrc.link_sig"
",rrc.freshcoin_index"
- ",rrc.coin_ev"
- " FROM refresh_revealed_coins rrc"
+ ",rrc.coin_ev "
+ "FROM "
+ "refresh_revealed_coins rrc"
" JOIN refresh_transfer_keys tp"
" USING (melt_serial_id)"
" JOIN denominations denoms"
" USING (denominations_serial)"
+ " WHERE rrc.melt_serial_id = (SELECT melt_serial_id FROM rc)"
" ORDER BY tp.transfer_pub, rrc.freshcoin_index ASC");
+ break;
+ case 2:
+ query="get_link_v2";
+ PREPARE (pg,
+ query,
+ "SELECT"
+ " *"
+ " FROM"
+ " exchange_do_get_link_data"
+ " ($1) "
+ " AS "
+ " (transfer_pub BYTEA"
+ " ,denom_pub BYTEA"
+ " ,ev_sig BYTEA"
+ " ,ewv BYTEA"
+ " ,link_sig BYTEA"
+ " ,freshcoin_index INT4"
+ " ,coin_ev BYTEA);");
+ break;
+ default:
+ GNUNET_break (0);
+ return GNUNET_DB_STATUS_HARD_ERROR;
}
ldctx.ldc = ldc;
@@ -231,7 +279,7 @@ TEH_PG_get_link_data (void *cls,
ldctx.last = NULL;
ldctx.status = GNUNET_OK;
qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
- "get_link",
+ query,
params,
&add_ldl,
&ldctx);