aboutsummaryrefslogtreecommitdiff
path: root/odb/pgsql/query.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-07-10 15:17:14 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-07-10 15:17:14 +0200
commit6d012073a48ca7044eea6835bed02220b28fc48c (patch)
tree5e3bb8338c8d3e70d3c2766b76be4df8b8d4be74 /odb/pgsql/query.cxx
parentb59e98f95c37d8ec19884e346ae613793774158d (diff)
Add support for custom database type mapping
New pragma qualifier, map, and specifiers: as, to, from. New tests: <database>/custom.
Diffstat (limited to 'odb/pgsql/query.cxx')
-rw-r--r--odb/pgsql/query.cxx19
1 files changed, 18 insertions, 1 deletions
diff --git a/odb/pgsql/query.cxx b/odb/pgsql/query.cxx
index e3e4d24..9d50c3b 100644
--- a/odb/pgsql/query.cxx
+++ b/odb/pgsql/query.cxx
@@ -187,10 +187,13 @@ namespace odb
}
void query::
- add (details::shared_ptr<query_param> p)
+ add (details::shared_ptr<query_param> p, const char* conv)
{
clause_.push_back (clause_part (clause_part::param));
+ if (conv != 0)
+ clause_.back ().part = conv;
+
parameters_.push_back (p);
bind_.push_back (bind ());
binding_.bind = &bind_[0];
@@ -354,8 +357,22 @@ namespace odb
ostringstream os;
os << param++;
+
+ // Add the conversion expression, if any.
+ //
+ string::size_type p;
+ if (!i->part.empty ())
+ {
+ p = i->part.find ("(?)");
+ r.append (i->part, 0, p);
+ }
+
r += '$';
r += os.str ();
+
+ if (!i->part.empty ())
+ r.append (i->part, p + 3, string::npos);
+
break;
}
case clause_part::native: