diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-08-30 06:06:26 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-08-30 06:06:26 +0200 |
commit | f3f682c074117fda84bf51a4ce9a378d950a04de (patch) | |
tree | 464e5db1a9843a1edf814bb0c0143767219ccc0c /odb/relational/oracle | |
parent | c1f534db5d6bc29f9be0e7498e4971c7132d013a (diff) |
Statement processing/optimization base work
Diffstat (limited to 'odb/relational/oracle')
-rw-r--r-- | odb/relational/oracle/source.cxx | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/odb/relational/oracle/source.cxx b/odb/relational/oracle/source.cxx index 2fc2ad2..3a6b46a 100644 --- a/odb/relational/oracle/source.cxx +++ b/odb/relational/oracle/source.cxx @@ -595,30 +595,29 @@ namespace relational os << "st.stream_result ();"; } - virtual void + virtual string persist_statement_extra (type& c, relational::query_parameters& qp, persist_position p) { - if (p != persist_after_values) - return; + string r; - semantics::data_member* id (id_member (c)); + if (p == persist_after_values) + { + semantics::data_member* id (id_member (c)); - type* poly_root (polymorphic (c)); - bool poly_derived (poly_root != 0 && poly_root != &c); + type* poly_root (polymorphic (c)); + bool poly_derived (poly_root != 0 && poly_root != &c); - if (id != 0 && !poly_derived && id->count ("auto")) - { // Top-level auto id. // - os << endl - << strlit (" RETURNING " + - convert_from (column_qname (*id, column_prefix ()), - *id) + - " INTO " + - qp.next ()); + if (id != 0 && !poly_derived && id->count ("auto")) + r = "RETURNING " + + convert_from (column_qname (*id, column_prefix ()), *id) + + " INTO " + qp.next (); } + + return r; } }; entry<class_> class_entry_; |