From 019a58726d50f8f7ca1f16e474a90dfa71064bc9 Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Fri, 24 Jun 2011 13:20:25 +0200 Subject: Correct native_bind lengths array initialization --- odb/pgsql/statement.cxx | 56 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) (limited to 'odb') diff --git a/odb/pgsql/statement.cxx b/odb/pgsql/statement.cxx index b73f2dc..c5b4b95 100644 --- a/odb/pgsql/statement.cxx +++ b/odb/pgsql/statement.cxx @@ -85,7 +85,61 @@ namespace odb else { n.formats[i] = 1; - n.lengths[i] = static_cast (*current_bind.size); + + size_t l; + + switch (current_bind.type) + { + case bind::boolean: + { + l = sizeof (bool); + break; + } + case bind::smallint: + { + l = sizeof (short); + break; + } + case bind::integer: + { + l = sizeof (int); + break; + } + case bind::bigint: + { + l = sizeof (long long); + break; + } + case bind::real: + { + l = sizeof (float); + break; + } + case bind::double_: + { + l = sizeof (double); + break; + } + case bind::uuid: + { + // UUID is a 16-byte sequence. + // + l = 16; + break; + } + case bind::text: + case bind::bytea: + case bind::bit: + case bind::varbit: + { + l = *current_bind.size; + break; + } + case bind::numeric: + assert (false); + } + + n.lengths[i] = static_cast (l); } } } -- cgit v1.1