diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-08-01 11:16:20 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-08-01 11:16:20 +0200 |
commit | 4cde011f27cd406804f05aa8fd1d28ed91a26738 (patch) | |
tree | dc202095520894044a93e1ea5b8a9c30e84e4e25 /odb/relational/source.hxx | |
parent | 4fcb4ae749b3cf40f24ab1b9ddeb58b3ae0600f7 (diff) |
Add support for empty column names in composite value types
Diffstat (limited to 'odb/relational/source.hxx')
-rw-r--r-- | odb/relational/source.hxx | 40 |
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); |