diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-01 12:41:02 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-01 14:30:22 +0200 |
commit | 7871bd9b681f449cc3938750ce70fa1ed5400dcd (patch) | |
tree | 3784716722430f06799016e3b7bdae7231fd9120 /odb/relational/oracle/source.cxx | |
parent | c11ace0f4a665ac0dfb269860ef04dce284b75f5 (diff) |
Implement support for optimistic concurrency
New pragmas: optimistic, version. New test: optimistic. New database
function: reload().
Diffstat (limited to 'odb/relational/oracle/source.cxx')
-rw-r--r-- | odb/relational/oracle/source.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/odb/relational/oracle/source.cxx b/odb/relational/oracle/source.cxx index 62b417b..0c40bab 100644 --- a/odb/relational/oracle/source.cxx +++ b/odb/relational/oracle/source.cxx @@ -90,7 +90,7 @@ namespace relational os << "// " << mi.m.name () << endl << "//" << endl; - if (inverse (mi.m, key_prefix_)) + if (inverse (mi.m, key_prefix_) || version (mi.m)) os << "if (sk == statement_select)" << "{"; // If the whole class is readonly, then we will never be @@ -135,7 +135,7 @@ namespace relational << "sk == statement_select ? 0 : "; if (cc.inverse != 0) - os << cc.inverse << "UL" << endl; + os << cc.inverse << "UL"; if (!ro && cc.readonly != 0) { @@ -159,7 +159,7 @@ namespace relational // The same logic as in pre(). // - if (inverse (mi.m, key_prefix_)) + if (inverse (mi.m, key_prefix_) || version (mi.m)) block = true; else if (!readonly (*context::top_object)) { @@ -335,6 +335,12 @@ namespace relational member = member_override_; else { + // If we are generating standard init() and this member + // contains version, ignore it. + // + if (version (mi.m)) + return false; + string const& name (mi.m.name ()); member = "o." + name; |