diff options
Diffstat (limited to 'odb/relational/source.cxx')
-rw-r--r-- | odb/relational/source.cxx | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/odb/relational/source.cxx b/odb/relational/source.cxx index 39a210e..dc083bb 100644 --- a/odb/relational/source.cxx +++ b/odb/relational/source.cxx @@ -4770,6 +4770,8 @@ traverse_view (type& c) if (!i->alias.empty ()) l += (need_alias_as ? " AS " : " ") + quote_id (i->alias); + l += from_trailer (c); + from.push_back (l); continue; } @@ -4829,6 +4831,8 @@ traverse_view (type& c) if (!alias.empty ()) l += (need_alias_as ? " AS " : " ") + quote_id (alias); + l += from_trailer (c); + from.push_back (l); if (poly_depth != 1) @@ -5539,7 +5543,7 @@ traverse_view (type& c) string sep (versioned || query_optimize ? "\n" : " "); os << "query_base_type r (" << endl - << strlit ("SELECT" + sep); + << strlit ((vq.distinct ? "SELECT DISTINCT" : "SELECT") + sep); for (statement_columns::const_iterator i (sc.begin ()), e (sc.end ()); i != e;) @@ -5632,6 +5636,13 @@ traverse_view (type& c) << "r += c.clause_prefix ();" << "r += c;" << "}"; + + string st (select_trailer (c)); + if (!st.empty ()) + { + os << "r += " << strlit (sep) << ";" + << "r += " << strlit (st) << ";"; + } } else { |