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 */