From 2ca4828d303fdd27c573429910f7a25fd1e3727c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 5 Feb 2015 14:17:07 +0200 Subject: Implement result modifiers in view query condition --- odb/relational/source.cxx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'odb/relational/source.cxx') 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 { -- cgit v1.1