You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by sh...@apache.org on 2009/10/30 01:12:57 UTC
svn commit: r831167 - in /qpid/trunk/qpid/cpp/src/qpid/store/ms-sql:
BlobRecordset.cpp Recordset.cpp
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-subscribe@qpid.apache.org