Merge [TRAFODION 3091] Unnamed Dynamic parameter doesn't work in WITH stateā¦ PR-1585
diff --git a/core/sql/optimizer/BindItemExpr.cpp b/core/sql/optimizer/BindItemExpr.cpp
index 9e84ac4..67c7471 100644
--- a/core/sql/optimizer/BindItemExpr.cpp
+++ b/core/sql/optimizer/BindItemExpr.cpp
@@ -8622,7 +8622,12 @@
ItemExpr *Parameter::bindNode(BindWA *bindWA)
{
if (nodeIsBound())
+ {
+ OperatorTypeEnum opTyp = getOperatorType();
+ // All user inputs are treated as outer references in the current scope.
+ bindWA->getCurrentScope()->addOuterRef(getValueId());
return getValueId().getItemExpr();
+ }
if (bindWA->getCurrentScope()->context()->inTDFunction())
{
//Paramaters and outer references are not supported with rank function.
diff --git a/core/sql/optimizer/ItemExpr.cpp b/core/sql/optimizer/ItemExpr.cpp
index 920d2f4..ace5a84 100644
--- a/core/sql/optimizer/ItemExpr.cpp
+++ b/core/sql/optimizer/ItemExpr.cpp
@@ -3886,23 +3886,7 @@
ItemExpr * DynamicParam::copyTopNode(ItemExpr *derivedNode, CollHeap* outHeap)
{
- ItemExpr *result;
-
- if (derivedNode == NULL) {
- result = new (outHeap) DynamicParam(paramName_, indicatorName_, outHeap);
- ((DynamicParam *) result)->setRowsetSize(rowsetSize_);
- ((DynamicParam *) result)->setRowsetInfo(rowsetInfo_);
- ((DynamicParam *) result)->setParamHeading(heading_);
- ((DynamicParam *) result)->setParamTablename(tablename_);
- // we remember our original dynamic parameter because we
- // must use their valueid at dynamicparam::codegen time
- ((DynamicParam *) result)->setOriginal(this);
- }
-
- else
- result = derivedNode;
-
- return Parameter::copyTopNode(result, outHeap);
+ return this;
}
const NAType * DynamicParam::pushDownType(NAType& desiredType,