summaryrefslogtreecommitdiff
path: root/connectivity/source/parse
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2009-09-08 09:50:48 +0000
committerOliver Bolte <obo@openoffice.org>2009-09-08 09:50:48 +0000
commit39e949c290b8ab1e063930380a8926afb0615dd0 (patch)
treeb1871069c6ecb5bade5ce3dbafd88cdbbefa041d /connectivity/source/parse
parent0b32392c9ef250f90977b6953db8b4c821546951 (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.y36
-rw-r--r--connectivity/source/parse/sqliterator.cxx15
-rw-r--r--connectivity/source/parse/sqlnode.cxx18
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;