diff options
author | Oliver Bolte <obo@openoffice.org> | 2009-09-08 09:50:48 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2009-09-08 09:50:48 +0000 |
commit | 39e949c290b8ab1e063930380a8926afb0615dd0 (patch) | |
tree | b1871069c6ecb5bade5ce3dbafd88cdbbefa041d /connectivity/source/parse | |
parent | 0b32392c9ef250f90977b6953db8b4c821546951 (diff) |
CWS-TOOLING: integrate CWS dbaperf3
2009-08-28 08:04:41 +0200 oj r275515 : wrong replacement
2009-08-28 07:57:44 +0200 oj r275514 : declaration of 'nRealSize' shadows a previous local
2009-08-20 10:17:11 +0200 oj r275168 : CWS-TOOLING: rebase CWS dbaperf3 to trunk@275001 (milestone: DEV300:m55)
2009-08-19 11:50:49 +0200 oj r275145 : #ii102891# minimize metadata calls
2009-06-22 12:20:15 +0200 oj r273213 : compile error
2009-06-22 12:19:45 +0200 oj r273212 : compile error
2009-06-18 08:54:08 +0200 oj r273099 : #i102891# reduce calls to databasemetadata
2009-06-18 08:19:55 +0200 oj r273095 : #i102891# reduce calls to databasemetadata
Diffstat (limited to 'connectivity/source/parse')
-rw-r--r-- | connectivity/source/parse/sqlbison.y | 36 | ||||
-rw-r--r-- | connectivity/source/parse/sqliterator.cxx | 15 | ||||
-rw-r--r-- | connectivity/source/parse/sqlnode.cxx | 18 |
3 files changed, 19 insertions, 50 deletions
diff --git a/connectivity/source/parse/sqlbison.y b/connectivity/source/parse/sqlbison.y index be1ee39d9ba2..97875dfd4de0 100644 --- a/connectivity/source/parse/sqlbison.y +++ b/connectivity/source/parse/sqlbison.y @@ -3473,30 +3473,6 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage, } //----------------------------------------------------------------------------- -/*sal_uInt32 OSQLParser::StrToTokenID(const ::rtl::OString & rName) -{ - ::rtl::OString aName; - if (rName.IsAlphaNumericAscii()) - aName = rName; - else - { - aName = "'"; - aName += rName; - aName += "'"; - } - - // Gewuenschten Token-Namen suchen: - for (sal_uInt32 i = 0; i < SQLyyntoken; i++) - { - if (aName == TokenTypes[i].name) - return TokenTypes[i].token; - } - - // Nicht gefunden - return 0; -}*/ - -//----------------------------------------------------------------------------- ::rtl::OUString OSQLParser::RuleIDToStr(sal_uInt32 nRuleID) { OSL_ENSURE(nRuleID < (sizeof yytname/sizeof yytname[0]), "OSQLParser::RuleIDToStr: Invalid nRuleId!"); @@ -3599,17 +3575,15 @@ void OSQLParser::reduceLiteral(OSQLParseNode*& pLiteral, sal_Bool bAppendBlank) OSL_ENSURE(pLiteral->isRule(), "This is no ::com::sun::star::chaos::Rule"); OSL_ENSURE(pLiteral->count() == 2, "OSQLParser::ReduceLiteral() Invalid count"); OSQLParseNode* pTemp = pLiteral; - ::rtl::OUString aValue; + ::rtl::OUStringBuffer aValue(pLiteral->getChild(0)->getTokenValue()); if (bAppendBlank) { - ((aValue = pLiteral->getChild(0)->getTokenValue()) += ::rtl::OUString::createFromAscii(" ")) += - pLiteral->getChild(1)->getTokenValue(); + aValue.appendAscii(" "); } - else - (aValue = pLiteral->getChild(0)->getTokenValue()) += - pLiteral->getChild(1)->getTokenValue(); + + aValue.append(pLiteral->getChild(1)->getTokenValue()); - pLiteral = new OSQLInternalNode(aValue,SQL_NODE_STRING); + pLiteral = new OSQLInternalNode(aValue.makeStringAndClear(),SQL_NODE_STRING); delete pTemp; } diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx index 42778d6a7ed0..26086495be89 100644 --- a/connectivity/source/parse/sqliterator.cxx +++ b/connectivity/source/parse/sqliterator.cxx @@ -460,7 +460,7 @@ void OSQLParseTreeIterator::traverseOneTableName( OSQLTables& _rTables,const OSQ ::rtl::OUString aTableRange(rTableRange); // Tabellenname abholen - OSQLParseNode::getTableComponents(pTableName,aCatalog,aSchema,aTableName); + OSQLParseNode::getTableComponents(pTableName,aCatalog,aSchema,aTableName,m_pImpl->m_xDatabaseMetaData); // create the composed name like DOMAIN.USER.TABLE1 aComposedName = ::dbtools::composeTableName(m_pImpl->m_xDatabaseMetaData, @@ -1687,13 +1687,7 @@ void OSQLParseTreeIterator::setSelectColumnName(::vos::ORef<OSQLColumns>& _rColu OSL_ENSURE(_rColumns == m_aSelectColumns,"Invalid columns used here!"); ConstOSQLTablesIterator aFind = m_pImpl->m_pTables->find(rTableRange); - if(aFind == m_pImpl->m_pTables->end()) - { - ::rtl::OUString strExpression = rTableRange; - strExpression += ::rtl::OUString::createFromAscii("."); - strExpression += rColumnName; - } - else + if(aFind != m_pImpl->m_pTables->end()) appendColumns(_rColumns,rTableRange,aFind->second); } else if ( !rTableRange.getLength() ) @@ -1813,11 +1807,6 @@ void OSQLParseTreeIterator::setSelectColumnName(::vos::ORef<OSQLColumns>& _rColu // Tabelle existiert nicht oder Feld nicht vorhanden if (bError) { - ::rtl::OUString strExpression = rTableRange; - if (strExpression.getLength()) - strExpression += ::rtl::OUString::createFromAscii("."); - strExpression += rColumnName; - ::rtl::OUString aNewColName(getUniqueColumnName(rColumnAlias)); OParseColumn* pColumn = new OParseColumn(aNewColName,::rtl::OUString(),::rtl::OUString(), diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx index e134d7a757c4..a1fd44014314 100644 --- a/connectivity/source/parse/sqlnode.cxx +++ b/connectivity/source/parse/sqlnode.cxx @@ -742,12 +742,15 @@ void OSQLParseNode::impl_parseLikeNodeToString_throw( ::rtl::OUStringBuffer& rSt sal_Bool OSQLParseNode::getTableComponents(const OSQLParseNode* _pTableNode, ::com::sun::star::uno::Any &_rCatalog, ::rtl::OUString &_rSchema, - ::rtl::OUString &_rTable) + ::rtl::OUString &_rTable, + const Reference< XDatabaseMetaData >& _xMetaData) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "parse", "Ocke.Janssen@sun.com", "OSQLParseNode::getTableComponents" ); OSL_ENSURE(_pTableNode,"Wrong use of getTableComponents! _pTableNode is not allowed to be null!"); if(_pTableNode) { + const sal_Bool bSupportsCatalog = _xMetaData.is() && _xMetaData->supportsCatalogsInDataManipulation(); + const sal_Bool bSupportsSchema = _xMetaData.is() && _xMetaData->supportsSchemasInDataManipulation(); const OSQLParseNode* pTableNode = _pTableNode; // clear the parameter given _rCatalog = Any(); @@ -762,7 +765,10 @@ sal_Bool OSQLParseNode::getTableComponents(const OSQLParseNode* _pTableNode, // check if we have schema_name rule if(SQL_ISRULE(pTableNode,schema_name)) { - _rSchema = pTableNode->getChild(0)->getTokenValue(); + if ( bSupportsCatalog && !bSupportsSchema ) + _rCatalog <<= pTableNode->getChild(0)->getTokenValue(); + else + _rSchema = pTableNode->getChild(0)->getTokenValue(); pTableNode = pTableNode->getChild(2); } // check if we have table_name rule @@ -1246,8 +1252,8 @@ OSQLParseNode* OSQLParser::predicateTree(::rtl::OUString& rErrorMessage, const : if (SQLyyparse() != 0) { m_sFieldName= ::rtl::OUString(); - m_xField = NULL; - m_xFormatter = NULL; + m_xField.clear(); + m_xFormatter.clear(); m_nFormatKey = 0; m_nDateFormatKey = 0; @@ -1267,8 +1273,8 @@ OSQLParseNode* OSQLParser::predicateTree(::rtl::OUString& rErrorMessage, const : (*s_pGarbageCollector)->clear(); m_sFieldName= ::rtl::OUString(); - m_xField = NULL; - m_xFormatter = NULL; + m_xField.clear(); + m_xFormatter.clear(); m_nFormatKey = 0; m_nDateFormatKey = 0; |