diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-09-09 10:54:51 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-09-09 10:54:51 +0200 |
commit | 6d4167d63b657aae2f4d57225eda37fb3c03291f (patch) | |
tree | 781a95010cd579e4bdb575bcc8075f644062d997 /odb/relational/pgsql/source.cxx | |
parent | 9531a62d7dc0adb28cd1687ec5fe4b9480b83bf1 (diff) |
Fix bug in PG type oid generation
Diffstat (limited to 'odb/relational/pgsql/source.cxx')
-rw-r--r-- | odb/relational/pgsql/source.cxx | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/odb/relational/pgsql/source.cxx b/odb/relational/pgsql/source.cxx index e21e2f5..f020c5a 100644 --- a/odb/relational/pgsql/source.cxx +++ b/odb/relational/pgsql/source.cxx @@ -104,11 +104,18 @@ namespace relational struct statement_oids: object_columns_base, context { + statement_oids (bool out): out_ (out) {} + virtual bool traverse_column (semantics::data_member& m, std::string const&, bool first) { + // Ignore inverse object pointers if we are generating 'in' columns. + // + if (!out_ && inverse (m) != 0) + return false; + if (!first) os << ',' << endl; @@ -116,6 +123,9 @@ namespace relational return true; } + + private: + bool out_; }; // @@ -921,7 +931,7 @@ namespace relational << "persist_statement_types[] =" << "{"; - instance<statement_oids> st; + instance<statement_oids> st (false); st->traverse (c); os << "};"; @@ -934,7 +944,7 @@ namespace relational << "find_statement_types[] =" << "{"; - instance<statement_oids> st; + instance<statement_oids> st (true); st->traverse_column (*id_m, "", true); os << "};"; @@ -947,7 +957,7 @@ namespace relational << "update_statement_types[] =" << "{"; - instance<statement_oids> st; + instance<statement_oids> st (false); st->traverse (c); st->traverse_column (*id_m, "", false); @@ -961,7 +971,7 @@ namespace relational << "erase_statement_types[] =" << "{"; - instance<statement_oids> st; + instance<statement_oids> st (true); st->traverse_column (*id_m, "", true); os << "};"; @@ -1120,7 +1130,7 @@ namespace relational if (semantics::class_* ktc = composite_wrapper (container_kt (t))) { - instance<statement_oids> st; + instance<statement_oids> st (false); st->traverse (m, *ktc, "key", "key"); os << ","; } @@ -1138,7 +1148,7 @@ namespace relational if (semantics::class_* vtc = composite_wrapper (vt)) { - instance <statement_oids> st; + instance <statement_oids> st (false); st->traverse (m, *vtc, "value", "value"); } else |