aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-02-05 14:17:07 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-02-05 14:17:07 +0200
commit55a308d14dc12594c365767d738f71893248f159 (patch)
treee519c314dc64c87213415d4a7a363ac49ea5d6b9
parent504fa38f3f71c345f41dfbb7e59b1d2f88308987 (diff)
Implement result modifiers in view query condition
-rw-r--r--common/view/basics/driver.cxx29
-rw-r--r--common/view/basics/test.hxx18
2 files changed, 47 insertions, 0 deletions
diff --git a/common/view/basics/driver.cxx b/common/view/basics/driver.cxx
index e1a72f7..01ae0ab 100644
--- a/common/view/basics/driver.cxx
+++ b/common/view/basics/driver.cxx
@@ -653,6 +653,35 @@ main (int argc, char* argv[])
t.commit ();
}
}
+
+ // view13
+ //
+ {
+ typedef odb::query<view13> query;
+ typedef odb::result<view13> result;
+
+ {
+ transaction t (db->begin ());
+
+ {
+ result r (db->query<view13> (
+ (query::person::age < 32) +
+ "ORDER BY" + query::employer::name));
+
+ assert (size (r) == 2);
+ }
+
+ t.commit ();
+ }
+ }
+
+ // view14
+ //
+ {
+ transaction t (db->begin ());
+ assert (size (db->query<view14> ()) == 2);
+ t.commit ();
+ }
}
catch (const odb::exception& e)
{
diff --git a/common/view/basics/test.hxx b/common/view/basics/test.hxx
index 18fae4b..e9d61a5 100644
--- a/common/view/basics/test.hxx
+++ b/common/view/basics/test.hxx
@@ -492,4 +492,22 @@ struct view12
std::string residence;
};
+//
+// Test 'distinct' result modifier.
+//
+#pragma db view object(employer) object(person) query(distinct)
+struct view13
+{
+ std::string name;
+};
+
+//
+// Test 'for_update' result modifier.
+//
+#pragma db view object(employer) query((?), for_update)
+struct view14
+{
+ std::string name;
+};
+
#endif // TEST_HXX