Repository: trafodion
Updated Branches:
  refs/heads/master 7184f8f7b -> dcae57f53


        modified:   ../generator/GenPreCode.cpp
        modified:   ../optimizer/ItemFunc.h


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

Branch: refs/heads/master
Commit: 153368d2d1e1f6f5e279ded0e6d4902bba43a498
Parents: 72a9f2e
Author: zlei929 <[email protected]>
Authored: Fri Jul 20 12:18:28 2018 +0800
Committer: zlei929 <[email protected]>
Committed: Fri Jul 20 12:18:28 2018 +0800

----------------------------------------------------------------------
 core/sql/generator/GenPreCode.cpp | 36 ++++++++++++++++++++++++++++++++++
 core/sql/optimizer/ItemFunc.h     |  1 +
 2 files changed, 37 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafodion/blob/153368d2/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp 
b/core/sql/generator/GenPreCode.cpp
index 6968b96..88edc4b 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -12370,3 +12370,39 @@ RelExpr * ExeUtilOrcFastAggr::preCodeGen(Generator * 
generator,
   // Done.
   return this;
 }
+
+ItemExpr * SplitPart::preCodeGen(Generator *generator)
+{
+  if (nodeIsPreCodeGenned())
+    return this;
+
+  child(0) = child(0)->preCodeGen(generator);
+  if (! child(0).getPtr())
+    return NULL;
+
+  child(1) = child(1)->preCodeGen(generator);
+  if (! child(1).getPtr())
+    return NULL;
+
+  for (Int32 i = 2; i < getArity(); i++)
+    {
+      if (child(i))
+        {
+          const NAType &typ1 = child(i)->getValueId().getType();
+          
+          //Insert a cast node to convert child to an INT.
+          child(i) = new (generator->wHeap())
+            Cast(child(i), new (generator->wHeap()) SQLInt(generator->wHeap(), 
TRUE,
+                                                         
typ1.supportsSQLnullLogical()));
+
+          child(i)->bindNode(generator->getBindWA());
+          child(i) = child(i)->preCodeGen(generator);
+          if (! child(i).getPtr())
+            return NULL;
+
+        }
+    }
+
+  markAsPreCodeGenned();
+  return this;
+}

http://git-wip-us.apache.org/repos/asf/trafodion/blob/153368d2/core/sql/optimizer/ItemFunc.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/ItemFunc.h b/core/sql/optimizer/ItemFunc.h
index 0dd901e..249c09b 100644
--- a/core/sql/optimizer/ItemFunc.h
+++ b/core/sql/optimizer/ItemFunc.h
@@ -5859,6 +5859,7 @@ public:
    
    virtual ItemExpr * copyTopNode(ItemExpr *derivedNode = NULL,
                       CollHeap *outheap = 0);
+   virtual ItemExpr * preCodeGen(Generator*);
 }; //class SplitPart
 
 #endif /* ITEMFUNC_H */

Reply via email to