From bd60c90f854954aad4361e6de9829e0db2ac2ccc Mon Sep 17 00:00:00 2001 From: Lionel Elie Mamane Date: Wed, 5 Dec 2012 18:09:57 +0100 Subject: fdo#53281 Don't cache whole row in KeySet This was done for the sake of ODBC, but the cost was imposed on all backends. The ODBC problems are now solved cleanly (and more efficiently) in the SDBC<->ODBC layer. Change-Id: Ib8a864da08deaaacc96a379fb72b3b7cbb34598c --- dbaccess/source/core/api/KeySet.cxx | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) (limited to 'dbaccess') diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx index 057ebc0c395e..21b897bd8899 100644 --- a/dbaccess/source/core/api/KeySet.cxx +++ b/dbaccess/source/core/api/KeySet.cxx @@ -38,7 +38,6 @@ #include #include #include -#include #include #include #include @@ -1432,23 +1431,10 @@ sal_Bool OKeySet::fetchRow() bRet = m_xDriverSet->next(); if ( bRet ) { - const int cc = m_xSetMetaData->getColumnCount(); - ORowSetRow aKeyRow = new connectivity::ORowVector< ORowSetValue >((*m_pKeyColumnNames).size() + m_pForeignColumnNames->size()); - ORowSetRow aFullRow = new connectivity::ORowVector< ORowSetValue >(cc); - - // Fetch the columns only once and in order, to satisfy restrictive backends such as ODBC - connectivity::ORowVector< ORowSetValue >::Vector::iterator aFRIter = aFullRow->get().begin(); - // Column 0 is reserved for the bookmark; unused here. - ++aFRIter; - BOOST_STATIC_ASSERT(sizeof(int) >= sizeof(sal_Int32)); // "At least a 32 bit word expected" - for (int i = 1; i <= cc; ++i, ++aFRIter ) - { - aFRIter->fill(i, m_xSetMetaData->getColumnType(i), m_xDriverRow); - } ::comphelper::disposeComponent(m_xSet); - m_xRow.set(new OPrivateRow(aFullRow->get())); + m_xRow.set(m_xDriverRow, UNO_QUERY_THROW); connectivity::ORowVector< ORowSetValue >::Vector::iterator aIter = aKeyRow->get().begin(); // copy key columns -- cgit