User: rt      
Date: 2008-06-16 12:11:58+0000
Modified:
   dba/connectivity/source/parse/sqliterator.cxx

Log:
 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

File Changes:

Directory: /dba/connectivity/source/parse/
==========================================

File [changed]: sqliterator.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/parse/sqliterator.cxx?r1=1.57&r2=1.58
Delta lines:  +10 -36
---------------------
--- sqliterator.cxx     2008-04-10 11:52:50+0000        1.57
+++ sqliterator.cxx     2008-06-16 12:11:56+0000        1.58
@@ -477,7 +477,7 @@
 //-----------------------------------------------------------------------------
 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 @@
 //-----------------------------------------------------------------------------
 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 @@
             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 @@
                        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 @@
                 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 @@
                {
                        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 @@
        else
                m_aErrors = _rError;
 }
+// 
-----------------------------------------------------------------------------




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to