Tag: cws_dev300_dba31a
User: fs      
Date: 2008-07-02 13:20:11+0000
Modified:
   dba/connectivity/source/parse/sqlnode.cxx

Log:
 #i91192#

File Changes:

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

File [changed]: sqlnode.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/parse/sqlnode.cxx?r1=1.55&r2=1.55.8.1
Delta lines:  +20 -8
--------------------
--- sqlnode.cxx 2008-06-16 12:12:23+0000        1.55
+++ sqlnode.cxx 2008-07-02 13:20:08+0000        1.55.8.1
@@ -7,7 +7,7 @@
  * OpenOffice.org - a multi-platform office productivity suite
  *
  * $RCSfile: sqlnode.cxx,v $
- * $Revision: 1.55 $
+ * $Revision: 1.55.8.1 $
  *
  * This file is part of OpenOffice.org.
  *
@@ -1952,19 +1952,20 @@
     }
 
     else if(bNegate && (SQL_ISRULE(pSearchCondition,test_for_null) || 
SQL_ISRULE(pSearchCondition,in_predicate) ||
-                        SQL_ISRULE(pSearchCondition,like_predicate) || 
SQL_ISRULE(pSearchCondition,between_predicate) ||
-                        SQL_ISRULE(pSearchCondition,boolean_test) ))
+                        SQL_ISRULE(pSearchCondition,between_predicate) || 
SQL_ISRULE(pSearchCondition,boolean_test) ))
     {
         sal_uInt32 nNotPos = 0;
         // row_value_constructor not SQL_TOKEN_IN in_predicate_value
-        // row_value_constructor not SQL_TOKEN_LIKE num_value_exp opt_escape
         // row_value_constructor not SQL_TOKEN_BETWEEN row_value_constructor 
SQL_TOKEN_AND row_value_constructor
-        if(SQL_ISRULE(pSearchCondition,in_predicate) || 
SQL_ISRULE(pSearchCondition,like_predicate) ||
-           SQL_ISRULE(pSearchCondition,between_predicate))
+        if  (   SQL_ISRULE( pSearchCondition, in_predicate )
+            ||  SQL_ISRULE( pSearchCondition, between_predicate )
+            )
             nNotPos = 1;
         // row_value_constructor SQL_TOKEN_IS not SQL_TOKEN_NULL
         // boolean_primary SQL_TOKEN_IS not truth_value
-        else if(SQL_ISRULE(pSearchCondition,test_for_null) || 
SQL_ISRULE(pSearchCondition,boolean_test))
+        else if (   SQL_ISRULE( pSearchCondition, test_for_null )
+                ||  SQL_ISRULE( pSearchCondition, boolean_test )
+                )
             nNotPos = 2;
 
         OSQLParseNode* pNot = pSearchCondition->getChild(nNotPos);
@@ -1976,6 +1977,17 @@
         pSearchCondition->replace(pNot, pNotNot);
         delete pNot;
     }
+    else if(bNegate && (SQL_ISRULE(pSearchCondition,like_predicate)))
+    {
+        OSQLParseNode* pCheckForNOT = pSearchCondition->getChild( 1 );
+        if ( pCheckForNOT->getNodeType() == SQL_TOKEN_NOT )
+            delete pSearchCondition->removeAt( 1 );
+        else
+        {
+            OSQLParseNode* pNot = new OSQLParseNode( 
::rtl::OUString::createFromAscii( "NOT" ), SQL_NODE_KEYWORD, SQL_TOKEN_NOT );
+            pSearchCondition->insert( 1, pNot );
+        }
+    }
 }
 //-----------------------------------------------------------------------------
 void OSQLParseNode::eraseBraces(OSQLParseNode*& pSearchCondition)




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

Reply via email to