summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2008-06-16 11:11:56 +0000
committerRüdiger Timm <rt@openoffice.org>2008-06-16 11:11:56 +0000
commita378362ecfa5cbd2f8083a2ba64b7c4c62b13ed4 (patch)
tree69efa52d487c3e3c46c34c8842837151c044aeef
parent6199e5f50cb25d2628ad5f4c56956d8d97cb2ef8 (diff)
INTEGRATION: CWS rptchart02 (1.57.18); FILE MERGED
2008/05/23 08:26:43 oj 1.57.18.2: #i84290# change sql rule table_ref 2008/05/20 08:29:11 oj 1.57.18.1: #i84290# range_variable changed
-rw-r--r--connectivity/source/parse/sqliterator.cxx48
1 files changed, 11 insertions, 37 deletions
diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx
index 35fc8ed8c779..731d6782d3e3 100644
--- a/connectivity/source/parse/sqliterator.cxx
+++ b/connectivity/source/parse/sqliterator.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: sqliterator.cxx,v $
- * $Revision: 1.57 $
+ * $Revision: 1.58 $
*
* This file is part of OpenOffice.org.
*
@@ -477,7 +477,7 @@ void OSQLParseTreeIterator::traverseOneTableName( OSQLTables& _rTables,const OSQ
//-----------------------------------------------------------------------------
void OSQLParseTreeIterator::getQualified_join( OSQLTables& _rTables, const OSQLParseNode *pTableRef, ::rtl::OUString& aTableRange )
{
- OSL_PRECOND( SQL_ISRULE( pTableRef, joined_table ) || SQL_ISRULE( pTableRef, cross_union ) || SQL_ISRULE( pTableRef, qualified_join ) ,
+ OSL_PRECOND( SQL_ISRULE( pTableRef, cross_union ) || SQL_ISRULE( pTableRef, qualified_join ) ,
"OSQLParseTreeIterator::getQualified_join: illegal node!" );
aTableRange = ::rtl::OUString();
@@ -497,34 +497,23 @@ void OSQLParseTreeIterator::getQualified_join( OSQLTables& _rTables, const OSQLP
//-----------------------------------------------------------------------------
const OSQLParseNode* OSQLParseTreeIterator::getTableNode( OSQLTables& _rTables, const OSQLParseNode *pTableRef,::rtl::OUString& rTableRange )
{
- OSL_PRECOND( SQL_ISRULE( pTableRef, table_ref ) || SQL_ISRULE( pTableRef, joined_table )
+ OSL_PRECOND( SQL_ISRULE( pTableRef, table_ref )
|| SQL_ISRULE( pTableRef, qualified_join ) || SQL_ISRULE( pTableRef, cross_union )
|| SQL_ISRULE( pTableRef, subquery ),
"OSQLParseTreeIterator::getTableNode: only to be called for table_ref nodes!" );
const OSQLParseNode* pTableNameNode = NULL;
- if ( SQL_ISRULE( pTableRef, joined_table ) )
- {
- getQualified_join( _rTables, pTableRef->getChild(1), rTableRange );
- }
- else if ( SQL_ISRULE( pTableRef, qualified_join ) || SQL_ISRULE( pTableRef, cross_union ) )
+ if ( SQL_ISRULE( pTableRef, qualified_join ) || SQL_ISRULE( pTableRef, cross_union ) )
{
getQualified_join( _rTables, pTableRef, rTableRange );
}
else
{
- if ( pTableRef->count() == 4 )
+ rTableRange = OSQLParseNode::getTableRange(pTableRef);
+ if ( pTableRef->count() == 4 || pTableRef->count() == 5 ) // '{' SQL_TOKEN_OJ joined_table '}' || '(' joined_table ')' range_variable op_column_commalist
{
- if ( SQL_ISPUNCTUATION( pTableRef->getChild(0), "{" ) )
- { // { OJ joined_table }
- getQualified_join( _rTables, pTableRef->getChild(2), rTableRange );
- }
- else
- { // table_node as range_variable op_column_commalist
- pTableNameNode = pTableRef->getChild(0);
- rTableRange = pTableRef->getChild(2)->getTokenValue();
- }
+ getQualified_join( _rTables, pTableRef->getChild(6 - pTableRef->count()), rTableRange );
}
else if ( pTableRef->count() == 3 )
{ // subquery as range_variable
@@ -534,20 +523,13 @@ const OSQLParseNode* OSQLParseTreeIterator::getTableNode( OSQLTables& _rTables,
if ( SQL_ISRULE( pQueryExpression, select_statement ) )
{
getSelect_statement( *m_pImpl->m_pSubTables, pQueryExpression );
- rTableRange = pTableRef->getChild(2)->getTokenValue();
}
else
{
OSL_ENSURE( false, "OSQLParseTreeIterator::getTableNode: subquery which is no select_statement: not yet implemented!" );
}
}
- else if ( pTableRef->count() == 6 )
- {
- // '(' joined_table ')' as range_variable op_column_commalist
- getQualified_join( _rTables, pTableRef->getChild(1), rTableRange );
- rTableRange = pTableRef->getChild(4)->getTokenValue();
- }
- else if ( pTableRef->count() == 1 )
+ else if ( pTableRef->count() == 2 )
{
// table_node
pTableNameNode = pTableRef->getChild(0);
@@ -589,12 +571,7 @@ void OSQLParseTreeIterator::getSelect_statement(OSQLTables& _rTables,const OSQLP
pTableName = pTableListElement->getChild(0);
if( isTableNode( pTableName ) )
{ // Tabellennamen gefunden
- if ( pTableListElement->count() == 4 )
- { // table_node as range_variable op_column_commalist
- OSL_ENSURE( pTableListElement->getChild(1)->getKnownRuleID() == OSQLParseNode::as,
- "OSQLParseTreeIterator::getSelect_statement: table_ref rules changed?" );
- aTableRange = pTableListElement->getChild(2)->getTokenValue();
- }
+ aTableRange = OSQLParseNode::getTableRange(pTableListElement);
traverseOneTableName( _rTables, pTableName, aTableRange );
}
else if(SQL_ISPUNCTUATION(pTableName,"{"))
@@ -602,7 +579,7 @@ void OSQLParseTreeIterator::getSelect_statement(OSQLTables& _rTables,const OSQLP
getQualified_join( _rTables, pTableListElement->getChild(2), aTableRange );
}
else
- { // '(' joined_table ')' as range_variable op_column_commalist
+ { // '(' joined_table ')' range_variable op_column_commalist
getTableNode( _rTables, pTableListElement, aTableRange );
}
}
@@ -610,10 +587,6 @@ void OSQLParseTreeIterator::getSelect_statement(OSQLTables& _rTables,const OSQLP
{
getQualified_join( _rTables, pTableListElement, aTableRange );
}
- else if ( SQL_ISRULE( pTableListElement, joined_table ) )
- {
- getQualified_join( _rTables, pTableListElement->getChild(1), aTableRange );
- }
// if (! aIteratorStatus.IsSuccessful()) break;
}
@@ -1991,3 +1964,4 @@ void OSQLParseTreeIterator::impl_appendError( const SQLException& _rError )
else
m_aErrors = _rError;
}
+// -----------------------------------------------------------------------------