aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-10-02 19:12:47 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-10-02 19:12:47 +0200
commit6465f0b9cf542cfd1fb77687cdad47fde28c9fad (patch)
tree970adf6cbf88a32ee94ffbc0a2065ee3d2e35f5c
parenta06b917d661a61aad88dbf4351494b7c84273dc6 (diff)
Handle object pointers when comparing view and object data member types
Also issues an error if an object member associated with a view member is transient or inverse.
-rw-r--r--common/view/driver.cxx23
-rw-r--r--common/view/test.hxx19
2 files changed, 37 insertions, 5 deletions
diff --git a/common/view/driver.cxx b/common/view/driver.cxx
index a3ef34f..a6048dd 100644
--- a/common/view/driver.cxx
+++ b/common/view/driver.cxx
@@ -575,6 +575,29 @@ main (int argc, char* argv[])
t.commit ();
}
}
+
+ // view12
+ //
+ {
+ typedef odb::query<view12> query;
+ typedef odb::result<view12> result;
+
+ {
+ transaction t (db->begin ());
+
+ {
+ result r (db->query<view12> (query::last_name == "Dirt"));
+
+ result::iterator i (r.begin ());
+
+ assert (i != r.end ());
+ assert (i->residence == "US");
+ assert (++i == r.end ());
+ }
+
+ t.commit ();
+ }
+ }
}
catch (const odb::exception& e)
{
diff --git a/common/view/test.hxx b/common/view/test.hxx
index b5b9d65..3812662 100644
--- a/common/view/test.hxx
+++ b/common/view/test.hxx
@@ -77,10 +77,10 @@ struct person
#pragma db id
unsigned long id;
- #pragma db column ("first")
+ #pragma db column("first")
std::string first_name_;
- #pragma db column ("last")
+ #pragma db column("last")
std::string last_name_;
unsigned short age;
@@ -383,10 +383,10 @@ struct view7
query (wife::husband.is_not_null ())
struct view8
{
- #pragma db column (wife::first_name_)
+ #pragma db column(wife::first_name_)
std::string wife_name;
- #pragma db column (husb::first_name_)
+ #pragma db column(husb::first_name_)
std::string husb_name;
};
@@ -421,8 +421,17 @@ struct view11
{
std::string last_name;
- #pragma db column (person::measures.hight)
+ #pragma db column(person::measures.hight)
unsigned short hight;
};
+//
+// Extract object pointer as object id.
+//
+#pragma db view object(person)
+struct view12
+{
+ std::string residence;
+};
+
#endif // TEST_HXX