aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2014-06-23 11:57:26 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2014-06-23 11:57:26 +0200
commitc3cb4c76130950bf461e9f8d802f45e97d4113a1 (patch)
tree5fcf59240d75d6083909ae652f1a48e8b72cabf0
parentfbc2ecb4b8f27501f7ea5ed6fe6bedea3bad1385 (diff)
Cut out pointer-to-id traversal so that we don't go into composite ids
-rw-r--r--odb/relational/header.hxx6
-rw-r--r--odb/relational/model.hxx6
-rw-r--r--odb/relational/source.hxx12
3 files changed, 24 insertions, 0 deletions
diff --git a/odb/relational/header.hxx b/odb/relational/header.hxx
index de152ca..0af9109 100644
--- a/odb/relational/header.hxx
+++ b/odb/relational/header.hxx
@@ -153,6 +153,12 @@ namespace relational
}
virtual void
+ traverse_pointer (semantics::data_member&, semantics::class_&)
+ {
+ // We don't want to traverse composite id.
+ }
+
+ virtual void
traverse_composite (semantics::data_member* m, semantics::class_& c)
{
if (object (c_))
diff --git a/odb/relational/model.hxx b/odb/relational/model.hxx
index 3ff5e06..bb83e02 100644
--- a/odb/relational/model.hxx
+++ b/odb/relational/model.hxx
@@ -453,6 +453,12 @@ namespace relational
}
virtual void
+ traverse_pointer (semantics::data_member&, semantics::class_&)
+ {
+ // We don't want to traverse composite id.
+ }
+
+ virtual void
traverse_object (semantics::class_& c)
{
if (context::top_object != &c)
diff --git a/odb/relational/source.hxx b/odb/relational/source.hxx
index ac81bdf..b53b529 100644
--- a/odb/relational/source.hxx
+++ b/odb/relational/source.hxx
@@ -2207,6 +2207,12 @@ namespace relational
}
virtual void
+ traverse_pointer (semantics::data_member&, semantics::class_&)
+ {
+ // We don't want to traverse composite id.
+ }
+
+ virtual void
traverse_composite (semantics::data_member* m, semantics::class_& c)
{
if (object (c_))
@@ -3876,6 +3882,12 @@ namespace relational
}
virtual void
+ traverse_pointer (semantics::data_member&, semantics::class_&)
+ {
+ // We don't want to traverse composite id.
+ }
+
+ virtual void
traverse_composite_wrapper (semantics::data_member* m,
semantics::class_& c,
semantics::type* w)