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,
