exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 58fa8d9b37b39b728ca0a766b87c9cfd0184f943
parent 366524f890d5f1d34a58e6cbc8f7f8095312e4f4
Author: Christian Grothoff <christian@grothoff.org>
Date:   Thu, 11 Jun 2026 01:24:09 +0200

fix test_pq

Diffstat:
Mmeson.build | 2+-
Msrc/include/taler/taler_pq_lib.h | 3+++
Msrc/pq/pq_query_helper.c | 14++++++++++++--
Msrc/pq/test_pq.c | 18++++++++++++------
4 files changed, 28 insertions(+), 9 deletions(-)

diff --git a/meson.build b/meson.build @@ -307,7 +307,7 @@ if not get_option('only-doc') ['libtalerutil', '13:0:0'], ['libtalerjson', '7:0:3'], ['libtalercurl', '0:1:0'], - ['libtalerpq', '0:1:0'], + ['libtalerpq', '1:0:0'], ['libtalersq', '0:0:0'], ['libtalermhd', '8:0:1'], ['libtalermhd2', '0:0:0'], diff --git a/src/include/taler/taler_pq_lib.h b/src/include/taler/taler_pq_lib.h @@ -216,12 +216,15 @@ TALER_PQ_query_param_array_amount ( * * @param num of elements in @e amounts * @param amounts continuous array of amounts + * @param schema which schema to take the taler_amount_currency data + * type from, NULL to use the search_path * @param db context for db-connection, needed for OID-lookup */ struct GNUNET_PQ_QueryParam TALER_PQ_query_param_array_amount_with_currency ( size_t num, const struct TALER_Amount *amounts, + const char *schema, struct GNUNET_PQ_Context *db); /** diff --git a/src/pq/pq_query_helper.c b/src/pq/pq_query_helper.c @@ -1150,14 +1150,24 @@ struct GNUNET_PQ_QueryParam TALER_PQ_query_param_array_amount_with_currency ( size_t num, const struct TALER_Amount *amounts, + const char *schema, struct GNUNET_PQ_Context *db) { Oid oid; - + char *tn; + + if (NULL != schema) + GNUNET_asprintf (&tn, + "%s.taler_amount_currency", + schema); + else + GNUNET_asprintf (&tn, + "taler_amount_currency"); GNUNET_assert (GNUNET_OK == GNUNET_PQ_get_oid_by_name (db, - "merchant.taler_amount_currency", + tn, &oid)); + GNUNET_free (tn); return query_param_array_generic ( num, true, diff --git a/src/pq/test_pq.c b/src/pq/test_pq.c @@ -136,6 +136,7 @@ run_queries (struct GNUNET_PQ_Context *conn) conn), TALER_PQ_query_param_array_amount_with_currency (2, aamountc, + "merchant", conn), TALER_PQ_query_param_amount_with_currency (conn, &tamountc), @@ -206,7 +207,7 @@ run_queries (struct GNUNET_PQ_Context *conn) &npamount, &pamount), TALER_PQ_result_spec_array_amount_with_currency (conn, - NULL, + "merchant", "aamountc", &npamountc, &pamountc), @@ -216,7 +217,7 @@ run_queries (struct GNUNET_PQ_Context *conn) &npamountn, &pamountn), TALER_PQ_result_spec_array_amount_with_currency (conn, - NULL, + "merchant", "aamountnc", &npamountnc, &pamountnc), @@ -299,6 +300,11 @@ main (int argc, struct GNUNET_PQ_ExecuteStatement es[] = { GNUNET_PQ_make_execute ("DO $$ " " BEGIN" + " CREATE SCHEMA IF NOT EXISTS merchant;" + " END " + "$$;"), + GNUNET_PQ_make_execute ("DO $$ " + " BEGIN" " CREATE DOMAIN gnunet_hashcode AS BYTEA" " CHECK(length(VALUE)=64);" " EXCEPTION" @@ -315,7 +321,7 @@ main (int argc, "$$;"), GNUNET_PQ_make_execute ("DO $$ " " BEGIN" - " CREATE TYPE taler_amount_currency AS" + " CREATE TYPE merchant.taler_amount_currency AS" " (val INT8, frac INT4, curr VARCHAR(12));" " EXCEPTION" " WHEN duplicate_object THEN null;" @@ -325,10 +331,10 @@ main (int argc, "tamount taler_amount NOT NULL" ",json VARCHAR NOT NULL" ",aamount taler_amount[]" - ",aamountc taler_amount_currency[]" + ",aamountc merchant.taler_amount_currency[]" ",aamountn taler_amount[] NOT NULL DEFAULT ARRAY[]::taler_amount[]" - ",aamountnc taler_amount_currency[] NOT NULL DEFAULT ARRAY[]::taler_amount_currency[]" - ",tamountc taler_amount_currency" + ",aamountnc merchant.taler_amount_currency[] NOT NULL DEFAULT ARRAY[]::merchant.taler_amount_currency[]" + ",tamountc merchant.taler_amount_currency" ",hash gnunet_hashcode" ",hashes gnunet_hashcode[]" ",cs_r_pubs BYTEA[]"