Github user zellerh commented on a diff in the pull request:
https://github.com/apache/incubator-trafodion/pull/132#discussion_r42512787
--- Diff: core/sql/optimizer/ItemExpr.cpp ---
@@ -14906,3 +14906,80 @@ NABoolean LOBoper::isCovered
return FALSE;
}
+// Compute the exprssion at compile time. Assume all operands are
constants.
+// Return NULL if the computation fails and CmpCommon::diags() may be
side-affected.
+ConstValue* ItemExpr::compute(CollHeap* heap)
+{
+ ValueIdList exprs;
+ exprs.insert(getValueId());
+
+ const NAType& dataType = getValueId().getType();
+
+ Lng32 decodedValueLen = dataType.getNominalSize() +
dataType.getSQLnullHdrSize();
+
+ char staticDecodeBuf[200];
+ Lng32 staticDecodeBufLen = 200;
+
+ char* decodeBuf = staticDecodeBuf;
+ Lng32 decodeBufLen = staticDecodeBufLen;
+
+ // For character types, multiplying by 8 to deal with conversions between
--- End diff --
There is actually a method to compute this length,
CharInfo::getMaxConvertedLenInBytes() (file common/charinfo.h) but it may be
inconvenient and overkill in this situation.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---