Author: shuston Date: Fri Oct 30 00:12:57 2009 New Revision: 831167 URL: http://svn.apache.org/viewvc?rev=831167&view=rev Log: Ensure a client-side cursor is used, and change to static cursor to improve performance. When adding a new record that has a persistence ID, wait until after the Update to retrieve the new id from the new record. Fixes QPID-2168.
Modified: qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/BlobRecordset.cpp qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/Recordset.cpp Modified: qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/BlobRecordset.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/BlobRecordset.cpp?rev=831167&r1=831166&r2=831167&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/BlobRecordset.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/BlobRecordset.cpp Fri Oct 30 00:12:57 2009 @@ -49,9 +49,10 @@ { BlobEncoder blob (item); // Marshall item info to a blob rs->AddNew(); - item.setPersistenceId(rs->Fields->Item["persistenceId"]->Value); rs->Fields->GetItem("fieldTableBlob")->AppendChunk(blob); rs->Update(); + uint64_t id = rs->Fields->Item["persistenceId"]->Value; + item.setPersistenceId(id); } void Modified: qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/Recordset.cpp URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/Recordset.cpp?rev=831167&r1=831166&r2=831167&view=diff ============================================================================== --- qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/Recordset.cpp (original) +++ qpid/trunk/qpid/cpp/src/qpid/store/ms-sql/Recordset.cpp Fri Oct 30 00:12:57 2009 @@ -82,9 +82,13 @@ { _ConnectionPtr p = *conn; TESTHR(rs.CreateInstance(__uuidof(::Recordset))); + // Client-side cursors needed to get access to newly added + // identity column immediately. Recordsets need this to get the + // persistence ID for the broker objects. + rs->CursorLocation = adUseClient; rs->Open(table.c_str(), _variant_t((IDispatch *)p, true), - adOpenKeyset, + adOpenStatic, adLockOptimistic, adCmdTable); tableName = table; --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org