aboutsummaryrefslogtreecommitdiff
path: root/odb/relational/source.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-08-01 11:16:20 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-08-01 11:16:20 +0200
commit4cde011f27cd406804f05aa8fd1d28ed91a26738 (patch)
treedc202095520894044a93e1ea5b8a9c30e84e4e25 /odb/relational/source.hxx
parent4fcb4ae749b3cf40f24ab1b9ddeb58b3ae0600f7 (diff)
Add support for empty column names in composite value types
Diffstat (limited to 'odb/relational/source.hxx')
-rw-r--r--odb/relational/source.hxx40
1 files changed, 21 insertions, 19 deletions
diff --git a/odb/relational/source.hxx b/odb/relational/source.hxx
index 2b2c90e..a1f1190 100644
--- a/odb/relational/source.hxx
+++ b/odb/relational/source.hxx
@@ -186,22 +186,21 @@ namespace relational
if (!table_name_.empty ())
{
+ string n;
+
if (composite_wrapper (idt))
{
- string p (column_prefix (m, key_prefix_, default_name_));
+ n = column_prefix (m, key_prefix_, default_name_);
- if (p.empty ())
- p = public_name_db (m);
+ if (n.empty ())
+ n = public_name_db (m);
else
- p.resize (p.size () - 1); // Remove trailing underscore.
-
- table = column_prefix_ + p;
+ n.resize (n.size () - 1); // Remove trailing underscore.
}
else
- table = column_prefix_ +
- column_name (m, key_prefix_, default_name_);
+ n = column_name (m, key_prefix_, default_name_);
- table = quote_id (table);
+ table = quote_id (compose_name (column_prefix_, n));
}
instance<object_columns> oc (table, sk_, sc_);
@@ -410,7 +409,7 @@ namespace relational
tbl = quote_id (i->table);
col += tbl;
col += '.';
- col += quote_id (column_name (i->member_path));
+ col += column_qname (i->member_path);
break;
}
}
@@ -591,20 +590,23 @@ namespace relational
// fall back on the member's public name.
//
string alias;
-
- if (composite_wrapper (utype (*id_member (c))))
{
- string p (column_prefix (m, key_prefix_, default_name_));
+ string n;
+
+ if (composite_wrapper (utype (*id_member (c))))
+ {
+ n = column_prefix (m, key_prefix_, default_name_);
- if (p.empty ())
- p = public_name_db (m);
+ if (n.empty ())
+ n = public_name_db (m);
+ else
+ n.resize (n.size () - 1); // Remove trailing underscore.
+ }
else
- p.resize (p.size () - 1); // Remove trailing underscore.
+ n = column_name (m, key_prefix_, default_name_);
- alias = column_prefix_ + p;
+ alias = compose_name (column_prefix_, n);
}
- else
- alias = column_prefix_ + column_name (m, key_prefix_, default_name_);
semantics::class_* poly_root (polymorphic (c));
bool poly (poly_root != 0);