From 7825994fa8a85b7c4850044f90cd7c272c3a9d56 Mon Sep 17 00:00:00 2001 From: "Ocke.Janssen" Date: Wed, 17 Nov 2010 12:05:05 +0100 Subject: dba34b: #i115629# fix access to node --- connectivity/source/drivers/mozab/MResultSet.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'connectivity/source/drivers') diff --git a/connectivity/source/drivers/mozab/MResultSet.cxx b/connectivity/source/drivers/mozab/MResultSet.cxx index c7c85770419e..c144a384b7ee 100644 --- a/connectivity/source/drivers/mozab/MResultSet.cxx +++ b/connectivity/source/drivers/mozab/MResultSet.cxx @@ -897,8 +897,8 @@ void OResultSet::analyseWhereClause( const OSQLParseNode* parseT OSQLParseNode *pOptEscape; const OSQLParseNode* pPart2 = parseTree->getChild(1); pColumn = parseTree->getChild(0); // Match Item - pAtom = pPart2->getChild(parseTree->count()-2); // Match String - pOptEscape = pPart2->getChild(parseTree->count()-1); // Opt Escape Rule + pAtom = pPart2->getChild(pPart2->count()-2); // Match String + pOptEscape = pPart2->getChild(pPart2->count()-1); // Opt Escape Rule const bool bNot = SQL_ISTOKEN(pPart2->getChild(0), NOT); if (!(pAtom->getNodeType() == SQL_NODE_STRING || -- cgit From 7b7a507d69a451402c328760071618070ffc7e08 Mon Sep 17 00:00:00 2001 From: "Ocke.Janssen" Date: Thu, 25 Nov 2010 08:51:07 +0100 Subject: dba34b: #i115655# check first 50 lines for type info --- connectivity/source/drivers/file/FResultSet.cxx | 2 +- connectivity/source/drivers/flat/EConnection.cxx | 1 + connectivity/source/drivers/flat/ETable.cxx | 288 +++++++++++++---------- 3 files changed, 171 insertions(+), 120 deletions(-) (limited to 'connectivity/source/drivers') diff --git a/connectivity/source/drivers/file/FResultSet.cxx b/connectivity/source/drivers/file/FResultSet.cxx index c516b325ad9a..354f383b2b88 100644 --- a/connectivity/source/drivers/file/FResultSet.cxx +++ b/connectivity/source/drivers/file/FResultSet.cxx @@ -138,7 +138,7 @@ OResultSet::OResultSet(OStatement_Base* pStmt,OSQLParseTreeIterator& _aSQLIte m_nResultSetConcurrency = isCount() ? ResultSetConcurrency::READ_ONLY : ResultSetConcurrency::UPDATABLE; construct(); - m_aSkipDeletedSet.SetDeleted(m_bShowDeleted); + m_aSkipDeletedSet.SetDeletedVisible(m_bShowDeleted); osl_decrementInterlockedCount( &m_refCount ); } diff --git a/connectivity/source/drivers/flat/EConnection.cxx b/connectivity/source/drivers/flat/EConnection.cxx index c9cec7b5ee10..4aeb5fd90369 100644 --- a/connectivity/source/drivers/flat/EConnection.cxx +++ b/connectivity/source/drivers/flat/EConnection.cxx @@ -112,6 +112,7 @@ void OFlatConnection::construct(const ::rtl::OUString& url,const Sequence< Prope osl_decrementInterlockedCount( &m_refCount ); OConnection::construct(url,info); + m_bShowDeleted = sal_True; // we do not supported rows for this type } // -------------------------------------------------------------------------------- Reference< XDatabaseMetaData > SAL_CALL OFlatConnection::getMetaData( ) throw(SQLException, RuntimeException) diff --git a/connectivity/source/drivers/flat/ETable.cxx b/connectivity/source/drivers/flat/ETable.cxx index 70be592405eb..2e41c10080e1 100644 --- a/connectivity/source/drivers/flat/ETable.cxx +++ b/connectivity/source/drivers/flat/ETable.cxx @@ -113,9 +113,9 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) m_aScales.clear(); // reserve some space m_aColumns->get().reserve(nFieldCount+1); - m_aTypes.reserve(nFieldCount+1); - m_aPrecisions.reserve(nFieldCount+1); - m_aScales.reserve(nFieldCount+1); + m_aTypes.assign(nFieldCount+1,DataType::SQLNULL); + m_aPrecisions.assign(nFieldCount+1,-1); + m_aScales.assign(nFieldCount+1,-1); const sal_Bool bCase = m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers(); CharClass aCharClass(pConnection->getDriver()->getFactory(),_aLocale); @@ -125,106 +125,179 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) String aColumnName; ::rtl::OUString aTypeName; ::comphelper::UStringMixEqual aCase(bCase); - xub_StrLen nStartPosHeaderLine = 0; // use for eficient way to get the tokens - xub_StrLen nStartPosFirstLine = 0; // use for eficient way to get the tokens - xub_StrLen nStartPosFirstLine2 = 0; - for (xub_StrLen i = 0; i < nFieldCount; i++) + ::std::vector aColumnNames,m_aTypeNames; + m_aTypeNames.resize(nFieldCount); + sal_Int32 nRowCount = 0; + do { - if ( bHasHeaderLine ) + xub_StrLen nStartPosHeaderLine = 0; // use for eficient way to get the tokens + xub_StrLen nStartPosFirstLine = 0; // use for eficient way to get the tokens + xub_StrLen nStartPosFirstLine2 = 0; + for (xub_StrLen i = 0; i < nFieldCount; i++) { - aHeaderLine.GetTokenSpecial(aColumnName,nStartPosHeaderLine,m_cFieldDelimiter,m_cStringDelimiter); - if ( !aColumnName.Len() ) + if ( nRowCount == 0) { - aColumnName = 'C'; - aColumnName += String::CreateFromInt32(i+1); + if ( bHasHeaderLine ) + { + aHeaderLine.GetTokenSpecial(aColumnName,nStartPosHeaderLine,m_cFieldDelimiter,m_cStringDelimiter); + if ( !aColumnName.Len() ) + { + aColumnName = 'C'; + aColumnName += String::CreateFromInt32(i+1); + } + } + else + { + // no column name so ... + aColumnName = 'C'; + aColumnName += String::CreateFromInt32(i+1); + } + aColumnNames.push_back(aColumnName); } + impl_fillColumnInfo_nothrow(aFirstLine,nStartPosFirstLine,nStartPosFirstLine2,m_aTypes[i],m_aPrecisions[i],m_aScales[i],m_aTypeNames[i],cDecimalDelimiter,cThousandDelimiter,aCharClass); } - else + ++nRowCount; + } + while(nRowCount < 50 && m_pFileStream->ReadByteStringLine(aFirstLine,nEncoding)); + + for (xub_StrLen i = 0; i < nFieldCount; i++) + { + // check if the columname already exists + String aAlias(aColumnNames[i]); + OSQLColumns::Vector::const_iterator aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase); + sal_Int32 nExprCnt = 0; + while(aFind != m_aColumns->get().end()) { - // no column name so ... - aColumnName = 'C'; - aColumnName += String::CreateFromInt32(i+1); + (aAlias = aColumnNames[i]) += String::CreateFromInt32(++nExprCnt); + aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase); } - sal_Int32 eType; - UINT16 nPrecision = 0; - UINT16 nScale = 0; - BOOL bNumeric = FALSE; + sdbcx::OColumn* pColumn = new sdbcx::OColumn(aAlias,m_aTypeNames[i],::rtl::OUString(),::rtl::OUString(), + ColumnValue::NULLABLE, + m_aPrecisions[i], + m_aScales[i], + m_aTypes[i], + sal_False, + sal_False, + sal_False, + bCase); + Reference< XPropertySet> xCol = pColumn; + m_aColumns->get().push_back(xCol); + } + m_pFileStream->Seek(m_nStartRowFilePos); +} +void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,xub_StrLen& nStartPosFirstLine,xub_StrLen& nStartPosFirstLine2 + ,sal_Int32& io_nType,sal_Int32& io_nPrecisions,sal_Int32& io_nScales,String& o_sTypeName + ,const sal_Unicode cDecimalDelimiter,const sal_Unicode cThousandDelimiter,const CharClass& aCharClass) +{ + if ( io_nType != DataType::VARCHAR ) + { + BOOL bNumeric = io_nType == DataType::SQLNULL || io_nType == DataType::DOUBLE || io_nType == DataType::DECIMAL || io_nType == DataType::INTEGER; ULONG nIndex = 0; - // first without fielddelimiter - String aField; - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); - if (aField.Len() == 0 || - (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) + if ( bNumeric ) { - bNumeric = FALSE; - if ( m_cStringDelimiter != '\0' ) - aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); - else - nStartPosFirstLine2 = nStartPosFirstLine; - } - else - { - String aField2; - if ( m_cStringDelimiter != '\0' ) - aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); - else - aField2 = aField; - - if (aField2.Len() == 0) + // first without fielddelimiter + String aField; + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + if (aField.Len() == 0 || + (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) { bNumeric = FALSE; + if ( m_cStringDelimiter != '\0' ) + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + else + nStartPosFirstLine2 = nStartPosFirstLine; } else { - bNumeric = TRUE; - xub_StrLen nDot = 0; - xub_StrLen nDecimalDelCount = 0; - for (xub_StrLen j = 0; j < aField2.Len(); j++) - { - const sal_Unicode c = aField2.GetChar(j); - // nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen? - if ( ( !cDecimalDelimiter || c != cDecimalDelimiter ) && - ( !cThousandDelimiter || c != cThousandDelimiter ) && - !aCharClass.isDigit(aField2,j) && - ( j != 0 || (c != '+' && c != '-' ) ) ) - { - bNumeric = FALSE; - break; - } - if (cDecimalDelimiter && c == cDecimalDelimiter) - { - nPrecision = 15; // we have an decimal value - nScale = 2; - ++nDecimalDelCount; - } // if (cDecimalDelimiter && c == cDecimalDelimiter) - if ( c == '.' ) - ++nDot; - } + String aField2; + if ( m_cStringDelimiter != '\0' ) + aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + else + aField2 = aField; - if (nDecimalDelCount > 1 || nDot > 1 ) // if there is more than one dot it isn't a number + if (aField2.Len() == 0) + { bNumeric = FALSE; - if (bNumeric && cThousandDelimiter) + } + else { - // Ist der Trenner richtig angegeben? - const String aValue = aField2.GetToken(0,cDecimalDelimiter); - for (sal_Int32 j = aValue.Len() - 4; j >= 0; j -= 4) + bNumeric = TRUE; + xub_StrLen nDot = 0; + xub_StrLen nDecimalDelCount = 0; + for (xub_StrLen j = 0; j < aField2.Len(); j++) { - const sal_Unicode c = aValue.GetChar(static_cast(j)); + const sal_Unicode c = aField2.GetChar(j); // nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen? - if (c == cThousandDelimiter && j) - continue; - else + if ( ( !cDecimalDelimiter || c != cDecimalDelimiter ) && + ( !cThousandDelimiter || c != cThousandDelimiter ) && + !aCharClass.isDigit(aField2,j) && + ( j != 0 || (c != '+' && c != '-' ) ) ) { bNumeric = FALSE; break; } + if (cDecimalDelimiter && c == cDecimalDelimiter) + { + io_nPrecisions = 15; // we have an decimal value + io_nScales = 2; + ++nDecimalDelCount; + } // if (cDecimalDelimiter && c == cDecimalDelimiter) + if ( c == '.' ) + ++nDot; + } + + if (nDecimalDelCount > 1 || nDot > 1 ) // if there is more than one dot it isn't a number + bNumeric = FALSE; + if (bNumeric && cThousandDelimiter) + { + // Ist der Trenner richtig angegeben? + const String aValue = aField2.GetToken(0,cDecimalDelimiter); + for (sal_Int32 j = aValue.Len() - 4; j >= 0; j -= 4) + { + const sal_Unicode c = aValue.GetChar(static_cast(j)); + // nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen? + if (c == cThousandDelimiter && j) + continue; + else + { + bNumeric = FALSE; + break; + } + } } - } - // jetzt koennte es noch ein Datumsfeld sein - if (!bNumeric) + // jetzt koennte es noch ein Datumsfeld sein + if (!bNumeric) + { + try + { + nIndex = m_xNumberFormatter->detectNumberFormat(::com::sun::star::util::NumberFormat::ALL,aField2); + } + catch(Exception&) + { + } + } + } + } + } + else if ( io_nType == DataType::DATE || io_nType == DataType::TIMESTAMP || io_nType == DataType::TIME) + { + String aField; + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + if (aField.Len() == 0 || + (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) + { + } + else + { + String aField2; + if ( m_cStringDelimiter != '\0' ) + aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + else + aField2 = aField; + if (aField2.Len() ) { try { @@ -242,87 +315,64 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) { if (cDecimalDelimiter) { - if(nPrecision) + if(io_nPrecisions) { - eType = DataType::DECIMAL; + io_nType = DataType::DECIMAL; static const ::rtl::OUString s_sDECIMAL(RTL_CONSTASCII_USTRINGPARAM("DECIMAL")); - aTypeName = s_sDECIMAL; + o_sTypeName = s_sDECIMAL; } else { - eType = DataType::DOUBLE; + io_nType = DataType::DOUBLE; static const ::rtl::OUString s_sDOUBLE(RTL_CONSTASCII_USTRINGPARAM("DOUBLE")); - aTypeName = s_sDOUBLE; + o_sTypeName = s_sDOUBLE; } } else - eType = DataType::INTEGER; + { + io_nType = DataType::INTEGER; + io_nPrecisions = 0; + io_nScales = 0; + } nFlags = ColumnSearch::BASIC; } else { - switch (comphelper::getNumberFormatType(m_xNumberFormatter,nIndex)) { case NUMBERFORMAT_DATE: - eType = DataType::DATE; + io_nType = DataType::DATE; { static const ::rtl::OUString s_sDATE(RTL_CONSTASCII_USTRINGPARAM("DATE")); - aTypeName = s_sDATE; + o_sTypeName = s_sDATE; } break; case NUMBERFORMAT_DATETIME: - eType = DataType::TIMESTAMP; + io_nType = DataType::TIMESTAMP; { static const ::rtl::OUString s_sTIMESTAMP(RTL_CONSTASCII_USTRINGPARAM("TIMESTAMP")); - aTypeName = s_sTIMESTAMP; + o_sTypeName = s_sTIMESTAMP; } break; case NUMBERFORMAT_TIME: - eType = DataType::TIME; + io_nType = DataType::TIME; { static const ::rtl::OUString s_sTIME(RTL_CONSTASCII_USTRINGPARAM("TIME")); - aTypeName = s_sTIME; + o_sTypeName = s_sTIME; } break; default: - eType = DataType::VARCHAR; - nPrecision = 0; // nyi: Daten koennen aber laenger sein! - nScale = 0; + io_nType = DataType::VARCHAR; + io_nPrecisions = 0; // nyi: Daten koennen aber laenger sein! + io_nScales = 0; { static const ::rtl::OUString s_sVARCHAR(RTL_CONSTASCII_USTRINGPARAM("VARCHAR")); - aTypeName = s_sVARCHAR; + o_sTypeName = s_sVARCHAR; } }; nFlags |= ColumnSearch::CHAR; } - - // check if the columname already exists - String aAlias(aColumnName); - OSQLColumns::Vector::const_iterator aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase); - sal_Int32 nExprCnt = 0; - while(aFind != m_aColumns->get().end()) - { - (aAlias = aColumnName) += String::CreateFromInt32(++nExprCnt); - aFind = connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),aAlias,aCase); - } - - sdbcx::OColumn* pColumn = new sdbcx::OColumn(aAlias,aTypeName,::rtl::OUString(),::rtl::OUString(), - ColumnValue::NULLABLE, - nPrecision, - nScale, - eType, - sal_False, - sal_False, - sal_False, - bCase); - Reference< XPropertySet> xCol = pColumn; - m_aColumns->get().push_back(xCol); - m_aTypes.push_back(eType); - m_aPrecisions.push_back(nPrecision); - m_aScales.push_back(nScale); } - m_pFileStream->Seek(m_nStartRowFilePos); } // ------------------------------------------------------------------------- OFlatTable::OFlatTable(sdbcx::OCollection* _pTables,OFlatConnection* _pConnection, -- cgit From f99088e1081ca38ff1cafecac974a22143a7b085 Mon Sep 17 00:00:00 2001 From: "Ocke.Janssen" Date: Thu, 25 Nov 2010 11:23:27 +0100 Subject: dba34b: #i115655# new ui setting for max row scan for text db --- connectivity/source/drivers/flat/EConnection.cxx | 5 +++++ connectivity/source/drivers/flat/ETable.cxx | 3 ++- connectivity/source/drivers/flat/flat.xcu | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'connectivity/source/drivers') diff --git a/connectivity/source/drivers/flat/EConnection.cxx b/connectivity/source/drivers/flat/EConnection.cxx index 4aeb5fd90369..428f813c2674 100644 --- a/connectivity/source/drivers/flat/EConnection.cxx +++ b/connectivity/source/drivers/flat/EConnection.cxx @@ -56,6 +56,7 @@ using namespace ::com::sun::star::lang; // -------------------------------------------------------------------------------- OFlatConnection::OFlatConnection(ODriver* _pDriver) : OConnection(_pDriver) + ,m_nMaxRowsToScan(50) ,m_bHeaderLine(sal_True) ,m_cFieldDelimiter(';') ,m_cStringDelimiter('"') @@ -108,6 +109,10 @@ void OFlatConnection::construct(const ::rtl::OUString& url,const Sequence< Prope OSL_VERIFY( pBegin->Value >>= aVal ); m_cThousandDelimiter = aVal.toChar(); } + else if ( !pBegin->Name.compareToAscii("MaxRowScan") ) + { + pBegin->Value >>= m_nMaxRowsToScan; + } } osl_decrementInterlockedCount( &m_refCount ); diff --git a/connectivity/source/drivers/flat/ETable.cxx b/connectivity/source/drivers/flat/ETable.cxx index 2e41c10080e1..5e93b07a15f6 100644 --- a/connectivity/source/drivers/flat/ETable.cxx +++ b/connectivity/source/drivers/flat/ETable.cxx @@ -127,6 +127,7 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) ::comphelper::UStringMixEqual aCase(bCase); ::std::vector aColumnNames,m_aTypeNames; m_aTypeNames.resize(nFieldCount); + const sal_Int32 nMaxRowsToScan = pConnection->getMaxRowsToScan(); sal_Int32 nRowCount = 0; do { @@ -158,7 +159,7 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) } ++nRowCount; } - while(nRowCount < 50 && m_pFileStream->ReadByteStringLine(aFirstLine,nEncoding)); + while(nRowCount < nMaxRowsToScan && m_pFileStream->ReadByteStringLine(aFirstLine,nEncoding)); for (xub_StrLen i = 0; i < nFieldCount; i++) { diff --git a/connectivity/source/drivers/flat/flat.xcu b/connectivity/source/drivers/flat/flat.xcu index d00d1f98c38c..cd6a072ff1c6 100755 --- a/connectivity/source/drivers/flat/flat.xcu +++ b/connectivity/source/drivers/flat/flat.xcu @@ -75,6 +75,11 @@ false + + + 100 + + -- cgit From b54d82d27d8e486a8a6a251f314b60bc79ecaa73 Mon Sep 17 00:00:00 2001 From: "Ocke.Janssen" Date: Thu, 25 Nov 2010 12:43:46 +0100 Subject: dba34b: #i111143# use supports supportsMixedCaseQuotedIdentifiers instead of storesMixedCaseQuotedIdentifiers --- connectivity/source/drivers/ado/ACatalog.cxx | 8 ++++---- connectivity/source/drivers/calc/CTable.cxx | 4 ++-- connectivity/source/drivers/dbase/DIndex.cxx | 4 ++-- connectivity/source/drivers/dbase/DIndexColumns.cxx | 4 ++-- connectivity/source/drivers/dbase/DTable.cxx | 12 ++++++------ connectivity/source/drivers/evoab/LFolderList.cxx | 2 +- connectivity/source/drivers/evoab/LTable.cxx | 4 ++-- connectivity/source/drivers/file/FColumns.cxx | 2 +- connectivity/source/drivers/file/FResultSet.cxx | 2 +- connectivity/source/drivers/file/FTable.cxx | 4 ++-- connectivity/source/drivers/flat/ETable.cxx | 2 +- connectivity/source/drivers/mozab/MResultSet.cxx | 2 +- 12 files changed, 25 insertions(+), 25 deletions(-) (limited to 'connectivity/source/drivers') diff --git a/connectivity/source/drivers/ado/ACatalog.cxx b/connectivity/source/drivers/ado/ACatalog.cxx index d73ac4746fa3..4db595636eb4 100644 --- a/connectivity/source/drivers/ado/ACatalog.cxx +++ b/connectivity/source/drivers/ado/ACatalog.cxx @@ -81,7 +81,7 @@ void OCatalog::refreshTables() if(m_pTables) m_pTables->reFill(aVector); else - m_pTables = new OTables(this,m_aMutex,aVector,aTables,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers()); + m_pTables = new OTables(this,m_aMutex,aVector,aTables,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers()); } // ------------------------------------------------------------------------- void OCatalog::refreshViews() @@ -94,7 +94,7 @@ void OCatalog::refreshViews() if(m_pViews) m_pViews->reFill(aVector); else - m_pViews = new OViews(this,m_aMutex,aVector,aViews,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers()); + m_pViews = new OViews(this,m_aMutex,aVector,aViews,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers()); } // ------------------------------------------------------------------------- void OCatalog::refreshGroups() @@ -107,7 +107,7 @@ void OCatalog::refreshGroups() if(m_pGroups) m_pGroups->reFill(aVector); else - m_pGroups = new OGroups(this,m_aMutex,aVector,aGroups,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers()); + m_pGroups = new OGroups(this,m_aMutex,aVector,aGroups,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers()); } // ------------------------------------------------------------------------- void OCatalog::refreshUsers() @@ -120,7 +120,7 @@ void OCatalog::refreshUsers() if(m_pUsers) m_pUsers->reFill(aVector); else - m_pUsers = new OUsers(this,m_aMutex,aVector,aUsers,m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers()); + m_pUsers = new OUsers(this,m_aMutex,aVector,aUsers,m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers()); } // ------------------------------------------------------------------------- diff --git a/connectivity/source/drivers/calc/CTable.cxx b/connectivity/source/drivers/calc/CTable.cxx index a4e5f35825f5..20214c18af75 100644 --- a/connectivity/source/drivers/calc/CTable.cxx +++ b/connectivity/source/drivers/calc/CTable.cxx @@ -470,8 +470,8 @@ void OCalcTable::fillColumns() String aStrFieldName; aStrFieldName.AssignAscii("Column"); ::rtl::OUString aTypeName; - ::comphelper::UStringMixEqual aCase(m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers()); - const sal_Bool bStoresMixedCaseQuotedIdentifiers = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(); + ::comphelper::UStringMixEqual aCase(m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers()); + const sal_Bool bStoresMixedCaseQuotedIdentifiers = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(); for (sal_Int32 i = 0; i < m_nDataCols; i++) { diff --git a/connectivity/source/drivers/dbase/DIndex.cxx b/connectivity/source/drivers/dbase/DIndex.cxx index c7e64beeef1a..e4d3eafc9071 100644 --- a/connectivity/source/drivers/dbase/DIndex.cxx +++ b/connectivity/source/drivers/dbase/DIndex.cxx @@ -67,7 +67,7 @@ using namespace com::sun::star::lang; IMPLEMENT_SERVICE_INFO(ODbaseIndex,"com.sun.star.sdbcx.driver.dbase.Index","com.sun.star.sdbcx.Index"); // ------------------------------------------------------------------------- -ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(sal_True/*_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()*/) +ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(sal_True/*_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()*/) ,m_pFileStream(NULL) ,m_nCurNode(NODE_NOTFOUND) ,m_pTable(_pTable) @@ -80,7 +80,7 @@ ODbaseIndex::ODbaseIndex(ODbaseTable* _pTable) : OIndex(sal_True/*_pTable->getCo ODbaseIndex::ODbaseIndex( ODbaseTable* _pTable, const NDXHeader& _rHeader, const ::rtl::OUString& _rName) - :OIndex(_rName,::rtl::OUString(),_rHeader.db_unique,sal_False,sal_False,sal_True) // _pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers() + :OIndex(_rName,::rtl::OUString(),_rHeader.db_unique,sal_False,sal_False,sal_True) // _pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers() ,m_pFileStream(NULL) ,m_aHeader(_rHeader) ,m_nCurNode(NODE_NOTFOUND) diff --git a/connectivity/source/drivers/dbase/DIndexColumns.cxx b/connectivity/source/drivers/dbase/DIndexColumns.cxx index 59682a38d8af..1ea40b7bc03f 100644 --- a/connectivity/source/drivers/dbase/DIndexColumns.cxx +++ b/connectivity/source/drivers/dbase/DIndexColumns.cxx @@ -69,7 +69,7 @@ sdbcx::ObjectType ODbaseIndexColumns::createObject(const ::rtl::OUString& _rName ,sal_False ,sal_False ,sal_False - ,pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()); + ,pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()); return xRet; } @@ -82,7 +82,7 @@ void ODbaseIndexColumns::impl_refresh() throw(RuntimeException) // ------------------------------------------------------------------------- Reference< XPropertySet > ODbaseIndexColumns::createDescriptor() { - return new sdbcx::OIndexColumn(m_pIndex->getTable()->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()); + return new sdbcx::OIndexColumn(m_pIndex->getTable()->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()); } // ------------------------------------------------------------------------- sdbcx::ObjectType ODbaseIndexColumns::appendObject( const ::rtl::OUString& /*_rForName*/, const Reference< XPropertySet >& descriptor ) diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx index 011d0e89ce7a..6adbfbbbf931 100644 --- a/connectivity/source/drivers/dbase/DTable.cxx +++ b/connectivity/source/drivers/dbase/DTable.cxx @@ -340,7 +340,7 @@ void ODbaseTable::fillColumns() aStrFieldName.AssignAscii("Column"); ::rtl::OUString aTypeName; static const ::rtl::OUString sVARCHAR(RTL_CONSTASCII_USTRINGPARAM("VARCHAR")); - const sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(); + const sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(); const bool bFoxPro = m_aHeader.db_typ == VisualFoxPro || m_aHeader.db_typ == VisualFoxProAuto || m_aHeader.db_typ == FoxProMemo; sal_Int32 i = 0; @@ -2208,7 +2208,7 @@ void ODbaseTable::alterColumn(sal_Int32 index, if(xOldColumn.is()) xCopyColumn = xOldColumn->createDataDescriptor(); else - xCopyColumn = new OColumn(getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()); + xCopyColumn = new OColumn(getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()); ::comphelper::copyProperties(descriptor,xCopyColumn); @@ -2233,7 +2233,7 @@ void ODbaseTable::alterColumn(sal_Int32 index, if(xColumn.is()) xCpy = xColumn->createDataDescriptor(); else - xCpy = new OColumn(getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()); + xCpy = new OColumn(getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()); ::comphelper::copyProperties(xProp,xCpy); xAppend->appendByDescriptor(xCpy); } @@ -2249,7 +2249,7 @@ void ODbaseTable::alterColumn(sal_Int32 index, if(xColumn.is()) xCpy = xColumn->createDataDescriptor(); else - xCpy = new OColumn(getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()); + xCpy = new OColumn(getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()); ::comphelper::copyProperties(xProp,xCpy); xAppend->appendByDescriptor(xCpy); } @@ -2390,7 +2390,7 @@ void ODbaseTable::addColumn(const Reference< XPropertySet >& _xNewColumn) pNewTable->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME),makeAny(::rtl::OUString(sTempName))); { Reference xAppend(pNewTable->getColumns(),UNO_QUERY); - sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(); + sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(); // copy the structure for(sal_Int32 i=0;i < m_pColumns->getCount();++i) { @@ -2463,7 +2463,7 @@ void ODbaseTable::dropColumn(sal_Int32 _nPos) pNewTable->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME),makeAny(::rtl::OUString(sTempName))); { Reference xAppend(pNewTable->getColumns(),UNO_QUERY); - sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(); + sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(); // copy the structure for(sal_Int32 i=0;i < m_pColumns->getCount();++i) { diff --git a/connectivity/source/drivers/evoab/LFolderList.cxx b/connectivity/source/drivers/evoab/LFolderList.cxx index 1a42ef028c54..dfa347c12134 100644 --- a/connectivity/source/drivers/evoab/LFolderList.cxx +++ b/connectivity/source/drivers/evoab/LFolderList.cxx @@ -107,7 +107,7 @@ void OEvoabFolderList::fillColumns(const ::com::sun::star::lang::Locale& _aLocal m_aPrecisions.reserve(nFieldCount); m_aScales.reserve(nFieldCount); - sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(); + sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(); CharClass aCharClass(pConnection->getDriver()->getFactory(),_aLocale); // read description sal_Unicode cDecimalDelimiter = pConnection->getDecimalDelimiter(); diff --git a/connectivity/source/drivers/evoab/LTable.cxx b/connectivity/source/drivers/evoab/LTable.cxx index 6239765afe25..b35d1c9551eb 100644 --- a/connectivity/source/drivers/evoab/LTable.cxx +++ b/connectivity/source/drivers/evoab/LTable.cxx @@ -119,7 +119,7 @@ void OEvoabTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) m_aPrecisions.reserve(nFieldCount); m_aScales.reserve(nFieldCount); - sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(); + sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(); CharClass aCharClass(pConnection->getDriver()->getFactory(),_aLocale); // read description sal_Unicode cDecimalDelimiter = pConnection->getDecimalDelimiter(); @@ -674,7 +674,7 @@ sal_Bool OEvoabTable::setColumnAliases() aColumnFinalName = aColumnReadName; sColumnFinalName = aColumnFinalName; - sal_Bool bCase = getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers(); + sal_Bool bCase = getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers(); ::rtl::OUString aTypeName; aTypeName = ::rtl::OUString::createFromAscii("VARCHAR"); sdbcx::OColumn* pColumn = new sdbcx::OColumn(sColumnFinalName,aTypeName,::rtl::OUString(), diff --git a/connectivity/source/drivers/file/FColumns.cxx b/connectivity/source/drivers/file/FColumns.cxx index 3c3929a80c50..e92855db23fa 100644 --- a/connectivity/source/drivers/file/FColumns.cxx +++ b/connectivity/source/drivers/file/FColumns.cxx @@ -72,7 +72,7 @@ sdbcx::ObjectType OColumns::createObject(const ::rtl::OUString& _rName) sal_False, sal_False, sal_False, - m_pTable->getConnection()->getMetaData()->storesMixedCaseQuotedIdentifiers()); + m_pTable->getConnection()->getMetaData()->supportsMixedCaseQuotedIdentifiers()); xRet = pRet; break; } diff --git a/connectivity/source/drivers/file/FResultSet.cxx b/connectivity/source/drivers/file/FResultSet.cxx index 354f383b2b88..b2cb568eed4e 100644 --- a/connectivity/source/drivers/file/FResultSet.cxx +++ b/connectivity/source/drivers/file/FResultSet.cxx @@ -1692,7 +1692,7 @@ void OResultSet::setBoundedColumns(const OValueRefRow& _rRow, ::std::vector& _rColMapping) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "file", "Ocke.Janssen@sun.com", "OResultSet::setBoundedColumns" ); - ::comphelper::UStringMixEqual aCase(_xMetaData->storesMixedCaseQuotedIdentifiers()); + ::comphelper::UStringMixEqual aCase(_xMetaData->supportsMixedCaseQuotedIdentifiers()); Reference xTableColumn; ::rtl::OUString sTableColumnName, sSelectColumnRealName; diff --git a/connectivity/source/drivers/file/FTable.cxx b/connectivity/source/drivers/file/FTable.cxx index 7bc28fd35b64..e317120da95c 100644 --- a/connectivity/source/drivers/file/FTable.cxx +++ b/connectivity/source/drivers/file/FTable.cxx @@ -50,7 +50,7 @@ using namespace ::com::sun::star::container; DBG_NAME( file_OFileTable ) OFileTable::OFileTable(sdbcx::OCollection* _pTables,OConnection* _pConnection) -: OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers()) +: OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers()) ,m_pConnection(_pConnection) ,m_pFileStream(NULL) ,m_nFilePos(0) @@ -72,7 +72,7 @@ OFileTable::OFileTable( sdbcx::OCollection* _pTables,OConnection* _pConnection, const ::rtl::OUString& _Description , const ::rtl::OUString& _SchemaName, const ::rtl::OUString& _CatalogName - ) : OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers(), + ) : OTable_TYPEDEF(_pTables,_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers(), _Name, _Type, _Description, diff --git a/connectivity/source/drivers/flat/ETable.cxx b/connectivity/source/drivers/flat/ETable.cxx index 5e93b07a15f6..4cce2736893f 100644 --- a/connectivity/source/drivers/flat/ETable.cxx +++ b/connectivity/source/drivers/flat/ETable.cxx @@ -117,7 +117,7 @@ void OFlatTable::fillColumns(const ::com::sun::star::lang::Locale& _aLocale) m_aPrecisions.assign(nFieldCount+1,-1); m_aScales.assign(nFieldCount+1,-1); - const sal_Bool bCase = m_pConnection->getMetaData()->storesMixedCaseQuotedIdentifiers(); + const sal_Bool bCase = m_pConnection->getMetaData()->supportsMixedCaseQuotedIdentifiers(); CharClass aCharClass(pConnection->getDriver()->getFactory(),_aLocale); // read description const sal_Unicode cDecimalDelimiter = pConnection->getDecimalDelimiter(); diff --git a/connectivity/source/drivers/mozab/MResultSet.cxx b/connectivity/source/drivers/mozab/MResultSet.cxx index c144a384b7ee..da55b60079b3 100644 --- a/connectivity/source/drivers/mozab/MResultSet.cxx +++ b/connectivity/source/drivers/mozab/MResultSet.cxx @@ -1374,7 +1374,7 @@ void OResultSet::setBoundedColumns(const OValueRow& _rRow, const Reference& _xMetaData, ::std::vector& _rColMapping) { - ::comphelper::UStringMixEqual aCase(_xMetaData->storesMixedCaseQuotedIdentifiers()); + ::comphelper::UStringMixEqual aCase(_xMetaData->supportsMixedCaseQuotedIdentifiers()); Reference xTableColumn; ::rtl::OUString sTableColumnName, sSelectColumnRealName; -- cgit From 4679addd4b7705e0ec1e4401eea84c198ccdb395 Mon Sep 17 00:00:00 2001 From: "Ocke.Janssen" Date: Thu, 25 Nov 2010 14:11:53 +0100 Subject: dba34b: #i115384# check if the length of BIT > 1 otherwise use setBoolean, and change typeinfo for ado types --- connectivity/source/drivers/ado/AColumns.cxx | 8 ++++++- connectivity/source/drivers/ado/ADriver.cxx | 31 ++++++++++++++++++++++++++++ connectivity/source/drivers/ado/ado.xcu | 5 +++++ connectivity/source/drivers/ado/adoimp.cxx | 3 ++- 4 files changed, 45 insertions(+), 2 deletions(-) (limited to 'connectivity/source/drivers') diff --git a/connectivity/source/drivers/ado/AColumns.cxx b/connectivity/source/drivers/ado/AColumns.cxx index b2e383f53e0d..60140e9be93e 100644 --- a/connectivity/source/drivers/ado/AColumns.cxx +++ b/connectivity/source/drivers/ado/AColumns.cxx @@ -72,8 +72,14 @@ Reference< XPropertySet > OColumns::createDescriptor() sdbcx::ObjectType OColumns::appendObject( const ::rtl::OUString&, const Reference< XPropertySet >& descriptor ) { OAdoColumn* pColumn = NULL; + Reference< XPropertySet > xColumn; if ( !getImplementation( pColumn, descriptor ) || pColumn == NULL ) - m_pConnection->throwGenericSQLException( STR_INVALID_COLUMN_DESCRIPTOR_ERROR,static_cast(this) ); + { + // m_pConnection->throwGenericSQLException( STR_INVALID_COLUMN_DESCRIPTOR_ERROR,static_cast(this) ); + pColumn = new OAdoColumn(isCaseSensitive(),m_pConnection); + xColumn = pColumn; + ::comphelper::copyProperties(descriptor,xColumn); + } WpADOColumn aColumn = pColumn->getColumnImpl(); diff --git a/connectivity/source/drivers/ado/ADriver.cxx b/connectivity/source/drivers/ado/ADriver.cxx index 20eb6910f849..5b89623c28d8 100644 --- a/connectivity/source/drivers/ado/ADriver.cxx +++ b/connectivity/source/drivers/ado/ADriver.cxx @@ -163,6 +163,37 @@ void ODriver::impl_checkURL_throw(const ::rtl::OUString& _sUrl) Sequence< DriverPropertyInfo > SAL_CALL ODriver::getPropertyInfo( const ::rtl::OUString& url, const Sequence< PropertyValue >& /*info*/ ) throw(SQLException, RuntimeException) { impl_checkURL_throw(url); + if ( acceptsURL(url) ) + { + ::std::vector< DriverPropertyInfo > aDriverInfo; + + Sequence< ::rtl::OUString > aBooleanValues(2); + aBooleanValues[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) ); + aBooleanValues[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) ); + + aDriverInfo.push_back(DriverPropertyInfo( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IgnoreDriverPrivileges")) + ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Ignore the privileges from the database driver.")) + ,sal_False + ,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "false" ) ) + ,aBooleanValues) + ); + aDriverInfo.push_back(DriverPropertyInfo( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("EscapeDateTime")) + ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Escape date time format.")) + ,sal_False + ,::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "true" ) ) + ,aBooleanValues) + ); + aDriverInfo.push_back(DriverPropertyInfo( + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TypeInfoSettings")) + ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Defines how the type info of the database metadata should be manipulated.")) + ,sal_False + ,::rtl::OUString( ) + ,Sequence< ::rtl::OUString > ()) + ); + return Sequence< DriverPropertyInfo >(&aDriverInfo[0],aDriverInfo.size()); + } return Sequence< DriverPropertyInfo >(); } // -------------------------------------------------------------------------------- diff --git a/connectivity/source/drivers/ado/ado.xcu b/connectivity/source/drivers/ado/ado.xcu index 50c29cf7ba2e..e95e1a676c12 100755 --- a/connectivity/source/drivers/ado/ado.xcu +++ b/connectivity/source/drivers/ado/ado.xcu @@ -164,6 +164,11 @@ false + + + Column(2) = 16,Column(3) = 1 + + diff --git a/connectivity/source/drivers/ado/adoimp.cxx b/connectivity/source/drivers/ado/adoimp.cxx index 1bc136a35662..b59f41a597fa 100644 --- a/connectivity/source/drivers/ado/adoimp.cxx +++ b/connectivity/source/drivers/ado/adoimp.cxx @@ -105,7 +105,7 @@ sal_Int32 ADOS::MapADOType2Jdbc(DataTypeEnum eType) case adDBTime: nType = DataType::TIME; break; case adDate: case adDBTimeStamp: nType = DataType::TIMESTAMP; break; - case adBoolean: nType = DataType::BIT; break; + case adBoolean: nType = DataType::BOOLEAN; break; // case adArray: nType = DataType::ARRAY; break; case adBinary: nType = DataType::BINARY; break; case adGUID: nType = DataType::OBJECT; break; @@ -151,6 +151,7 @@ DataTypeEnum ADOS::MapJdbc2ADOType(sal_Int32 _nType,sal_Int32 _nJetEngine) case DataType::DATE: return isJetEngine(_nJetEngine) ? adDate : adDBDate; break; case DataType::TIME: return adDBTime; break; case DataType::TIMESTAMP: return isJetEngine(_nJetEngine) ? adDate : adDBTimeStamp; break; + case DataType::BOOLEAN: case DataType::BIT: return adBoolean; break; case DataType::BINARY: return adBinary; break; case DataType::VARCHAR: return adVarWChar; break; -- cgit From 34529a57a58865b72dec6a38df2c5142989dbe00 Mon Sep 17 00:00:00 2001 From: "Ocke.Janssen" Date: Thu, 25 Nov 2010 15:39:55 +0100 Subject: dba34b: #i110562# trim space in front of string when it could be a number --- connectivity/source/drivers/flat/ETable.cxx | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'connectivity/source/drivers') diff --git a/connectivity/source/drivers/flat/ETable.cxx b/connectivity/source/drivers/flat/ETable.cxx index 4cce2736893f..c427675f15a0 100644 --- a/connectivity/source/drivers/flat/ETable.cxx +++ b/connectivity/source/drivers/flat/ETable.cxx @@ -227,9 +227,15 @@ void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,x bNumeric = TRUE; xub_StrLen nDot = 0; xub_StrLen nDecimalDelCount = 0; + xub_StrLen nSpaceCount = 0; for (xub_StrLen j = 0; j < aField2.Len(); j++) { const sal_Unicode c = aField2.GetChar(j); + if ( j == nSpaceCount && m_cFieldDelimiter != 32 && c == 32 ) + { + ++nSpaceCount; + continue; + } // nur Ziffern und Dezimalpunkt und Tausender-Trennzeichen? if ( ( !cDecimalDelimiter || c != cDecimalDelimiter ) && ( !cThousandDelimiter || c != cThousandDelimiter ) && @@ -374,6 +380,25 @@ void OFlatTable::impl_fillColumnInfo_nothrow(QuotedTokenizedString& aFirstLine,x nFlags |= ColumnSearch::CHAR; } } + else + { + String aField; + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine,m_cFieldDelimiter,'\0'); + if (aField.Len() == 0 || + (m_cStringDelimiter && m_cStringDelimiter == aField.GetChar(0))) + { + if ( m_cStringDelimiter != '\0' ) + aFirstLine.GetTokenSpecial(aField,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + else + nStartPosFirstLine2 = nStartPosFirstLine; + } + else + { + String aField2; + if ( m_cStringDelimiter != '\0' ) + aFirstLine.GetTokenSpecial(aField2,nStartPosFirstLine2,m_cFieldDelimiter,m_cStringDelimiter); + } + } } // ------------------------------------------------------------------------- OFlatTable::OFlatTable(sdbcx::OCollection* _pTables,OFlatConnection* _pConnection, -- cgit From 52ce4f6336615b1215c33a8f58333f57dbed55c0 Mon Sep 17 00:00:00 2001 From: "Ocke Janssen [oj]" Date: Wed, 1 Dec 2010 09:16:29 +0100 Subject: dba34b: #i115655# set MaxRowScan as feature --- connectivity/source/drivers/flat/flat.xcu | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'connectivity/source/drivers') diff --git a/connectivity/source/drivers/flat/flat.xcu b/connectivity/source/drivers/flat/flat.xcu index cd6a072ff1c6..a54394e853e8 100755 --- a/connectivity/source/drivers/flat/flat.xcu +++ b/connectivity/source/drivers/flat/flat.xcu @@ -82,6 +82,11 @@ + + + true + + true -- cgit