aboutsummaryrefslogtreecommitdiff
path: root/src/pq/pq_query_helper.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-08-21 23:34:44 +0200
committerChristian Grothoff <christian@grothoff.org>2023-08-21 23:34:44 +0200
commit250e1997d86c160e1a6603c72b23bf1ec8eafb5d (patch)
tree9dfdfaab4fd32b14c7fcf35845565e901efed61d /src/pq/pq_query_helper.c
parentd1e242aa083cd108aca6e3ceda5f3459c8cebdc4 (diff)
downloadexchange-250e1997d86c160e1a6603c72b23bf1ec8eafb5d.tar.xz
postgres does not like 0-padding of VARCHAR, implement proper serialization
Diffstat (limited to 'src/pq/pq_query_helper.c')
-rw-r--r--src/pq/pq_query_helper.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/pq/pq_query_helper.c b/src/pq/pq_query_helper.c
index a1a1070bb..48bbfb522 100644
--- a/src/pq/pq_query_helper.c
+++ b/src/pq/pq_query_helper.c
@@ -68,6 +68,7 @@ qconv_amount_currency_tuple (void *cls,
Oid oid_v;
Oid oid_f;
Oid oid_c;
+ struct TALER_PQ_AmountCurrencyP d;
GNUNET_assert (GNUNET_OK ==
GNUNET_PQ_get_oid_by_name (db,
@@ -79,24 +80,18 @@ qconv_amount_currency_tuple (void *cls,
&oid_f));
GNUNET_assert (GNUNET_OK ==
GNUNET_PQ_get_oid_by_name (db,
- "text",
+ "varchar",
&oid_c));
-
- {
- struct TALER_PQ_AmountCurrencyP d
- = TALER_PQ_make_taler_pq_amount_currency_ (amount,
- oid_v,
- oid_f,
- oid_c);
-
- sz = sizeof(uint32_t); /* number of elements in tuple */
- sz += sizeof(d);
- out = GNUNET_malloc (sz);
- scratch[0] = out;
- *(uint32_t *) out = htonl (3);
- out += sizeof(uint32_t);
- *(struct TALER_PQ_AmountCurrencyP*) out = d;
- }
+ sz = TALER_PQ_make_taler_pq_amount_currency_ (amount,
+ oid_v,
+ oid_f,
+ oid_c,
+ &d);
+ out = GNUNET_malloc (sz);
+ memcpy (out,
+ &d,
+ sz);
+ scratch[0] = out;
}
param_values[0] = scratch[0];