Repository: trafodion
Updated Branches:
  refs/heads/master 7b5902fbe -> 7eb3ea39b


fix [trafodion-2988] prepare query returns 2006 internal error


Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/7f7ba504
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/7f7ba504
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/7f7ba504

Branch: refs/heads/master
Commit: 7f7ba504b8c1bac741642fe42d37ba3754adf896
Parents: dd301dc
Author: kakaxi3019 <[email protected]>
Authored: Wed Mar 14 01:44:29 2018 +0000
Committer: kakaxi3019 <[email protected]>
Committed: Wed Mar 14 01:44:29 2018 +0000

----------------------------------------------------------------------
 core/sql/optimizer/mdam.cpp | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafodion/blob/7f7ba504/core/sql/optimizer/mdam.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/mdam.cpp b/core/sql/optimizer/mdam.cpp
index 4570fc9..b33f00a 100644
--- a/core/sql/optimizer/mdam.cpp
+++ b/core/sql/optimizer/mdam.cpp
@@ -2002,7 +2002,8 @@ void Disjuncts::computeCommonPredicates()
              inVidset.next(predId);
              inVidset.advance(predId) )
         {
-            if(predId.getItemExpr()->getOperatorType() == ITM_RANGE_SPEC_FUNC )
+            //TRAFODION-2988
+            /*if(predId.getItemExpr()->getOperatorType() == 
ITM_RANGE_SPEC_FUNC )
             {
               if(predId.getItemExpr()->child(1)->getOperatorType() == ITM_AND 
){
                  predId.getItemExpr()->child(1)->convertToValueIdSet(parsedVs, 
NULL, ITM_AND, FALSE);
@@ -2013,7 +2014,26 @@ void Disjuncts::computeCommonPredicates()
               outVidset += 
predId.getItemExpr()->child(1)->castToItemExpr()->getValueId();         
            }
           else
-            outVidset +=predId;
+            outVidset +=predId;*/
+           if( ITM_RANGE_SPEC_FUNC == predId.getItemExpr()->getOperatorType() )
+           {   
+               if( ITM_AND == 
predId.getItemExpr()->child(1)->getOperatorType() )
+               {   
+                   
predId.getItemExpr()->child(1)->convertToValueIdSet(parsedVs, NULL, ITM_AND, 
FALSE);
+                   outVidset +=parsedVs;
+               }
+               else if( ITM_OR == 
predId.getItemExpr()->child(1)->getOperatorType() )
+               {   
+                   outVidset +=predId;
+               }
+               else
+               {   
+                   outVidset += 
predId.getItemExpr()->child(1)->castToItemExpr()->getValueId();
+               }
+           }
+           else
+               outVidset +=predId;
+           //TRAFODION-2988 
         parsedVs.clear();
        }
 

Reply via email to