Esempio n. 1
0
 public void Execute(ref RemoteParamData paramsValue, ProcessCallInfo callInfo)
 {
     foreach (ClientBatch batch in _clientBatches)
     {
         batch.Execute(ref paramsValue, callInfo);
     }
 }
Esempio n. 2
0
        public void Execute(DataParams paramsValue)
        {
            RemoteParamData localParamsValue = _script._process.DataParamsToRemoteParamData(paramsValue);

            _batch.Execute(ref localParamsValue, _script._process.GetProcessCallInfo());
            _script._process.RemoteParamDataToDataParams(paramsValue, localParamsValue);
        }
Esempio n. 3
0
        /// <summary> Opens a remote, server-side cursor based on the prepared statement this plan represents. </summary>
        /// <returns> An <see cref="IRemoteServerCursor"/> instance for the prepared statement. </returns>
        public IRemoteServerCursor Open(ref RemoteParamData paramsValue, out ProgramStatistics executeTime, ProcessCallInfo callInfo)
        {
            _process.ProcessCallInfo(callInfo);

            try
            {
                DataParams         localParamsValue = _process.RemoteParamDataToDataParams(paramsValue);
                IServerCursor      serverCursor     = ServerExpressionPlan.Open(localParamsValue);
                RemoteServerCursor cursor           = new RemoteServerCursor(this, (ServerCursor)serverCursor);
                try
                {
                    cursor.Open();
                    _process.DataParamsToRemoteParamData(localParamsValue, ref paramsValue);
                    executeTime = ServerExpressionPlan.ProgramStatistics;
                    return(cursor);
                }
                catch
                {
                    Close(cursor, _process.EmptyCallInfo());
                    throw;
                }
            }
            catch (Exception E)
            {
                throw WrapException(E);
            }
        }
Esempio n. 4
0
        public IServerCursor OpenCursor(string expression, DataParams paramsValue)
        {
                        #if LOGCACHEEVENTS
            FSession.FServer.FInternalServer.LogMessage(String.Format("Thread {0} opening cursor '{1}'.", Thread.CurrentThread.GetHashCode(), AExpression));
                        #endif

            RemoteParamData             localParamsValue = DataParamsToRemoteParamData(paramsValue);
            IRemoteServerExpressionPlan plan;
            IRemoteServerCursor         cursor;
            PlanDescriptor      descriptor;
            ProgramStatistics   executeTime;
            LocalExpressionPlan localPlan;
            LocalCursor         localCursor;

            if (ProcessInfo.FetchAtOpen && (ProcessInfo.FetchCount > 1))
            {
                Guid[]          bookmarks;
                RemoteFetchData fetchData;
                cursor = _process.OpenCursor(expression, ref localParamsValue, out plan, out descriptor, out executeTime, GetProcessCallInfo(), GetProcessCleanupInfo(), out bookmarks, ProcessInfo.FetchCount, out fetchData);
                RemoteParamDataToDataParams(paramsValue, localParamsValue);
                localPlan   = new LocalExpressionPlan(this, plan, descriptor, paramsValue, executeTime);
                localCursor = new LocalCursor(localPlan, cursor);
                localCursor.ProcessFetchData(fetchData, bookmarks, true);
            }
            else
            {
                cursor = _process.OpenCursor(expression, ref localParamsValue, out plan, out descriptor, out executeTime, GetProcessCallInfo(), GetProcessCleanupInfo());
                RemoteParamDataToDataParams(paramsValue, localParamsValue);
                localPlan   = new LocalExpressionPlan(this, plan, descriptor, paramsValue, executeTime);
                localCursor = new LocalCursor(localPlan, cursor);
            }
            return(localCursor);
        }
Esempio n. 5
0
        public IRemoteServerCursor Open(ref RemoteParamData paramsValue, out ProgramStatistics executeTime, out Guid[] bookmarks, int count, out RemoteFetchData fetchData, ProcessCallInfo callInfo)
        {
            IRemoteServerCursor serverCursor = Open(ref paramsValue, out executeTime, callInfo);

            fetchData = serverCursor.Fetch(out bookmarks, count, true, _process.EmptyCallInfo());
            return(serverCursor);
        }
Esempio n. 6
0
        public void Execute(string statement, DataParams paramsValue)
        {
            RemoteParamData paramData = DataParamsToRemoteParamData(paramsValue);

            _process.Execute(statement, ref paramData, GetProcessCallInfo(), GetProcessCleanupInfo());
            RemoteParamDataToDataParams(paramsValue, paramData);
        }
 // OpenCursor
 public IRemoteServerCursor OpenCursor
 (
     string expression,
     ref RemoteParamData paramsValue,
     out IRemoteServerExpressionPlan plan,
     out PlanDescriptor planDescriptor,
     out ProgramStatistics executeTime,
     ProcessCallInfo callInfo,
     RemoteProcessCleanupInfo cleanupInfo,
     out Guid[] bookmarks,
     int count,
     out RemoteFetchData fetchData
 )
 {
     ProcessCallInfo(callInfo);
     plan = PrepareExpression(expression, paramsValue.Params, null, out planDescriptor, cleanupInfo);
     try
     {
         IRemoteServerCursor cursor = plan.Open(ref paramsValue, out executeTime, EmptyCallInfo());
         fetchData = cursor.Fetch(out bookmarks, count, true, EmptyCallInfo());
         return(cursor);
     }
     catch
     {
         UnprepareExpression(plan);
         plan = null;
         throw;
     }
 }
Esempio n. 8
0
 public void RemoteParamDataToDataParams(DataParams paramsValue, RemoteParamData remoteParams)
 {
     if ((paramsValue != null) && (paramsValue.Count > 0))
     {
         Schema.RowType rowType = new Schema.RowType();
         foreach (DataParam param in paramsValue)
         {
             rowType.Columns.Add(new Schema.Column(param.Name, param.DataType));
         }
         using (Row row = new Row(this.ValueManager, rowType))
         {
             row.ValuesOwned = false;
             row.AsPhysical  = remoteParams.Data.Data;
             for (int index = 0; index < paramsValue.Count; index++)
             {
                 if (paramsValue[index].Modifier != Modifier.In)
                 {
                     if (row.HasValue(index))
                     {
                         paramsValue[index].Value = DataValue.CopyValue(_internalProcess.ValueManager, row[index]);
                     }
                     else
                     {
                         paramsValue[index].Value = null;
                     }
                 }
             }
         }
     }
 }
        public void DataParamsToRemoteParamData(DataParams paramsValue, ref RemoteParamData remoteParams)
        {
            if (paramsValue != null)
            {
                Schema.RowType rowType = new Schema.RowType();
                for (int index = 0; index < paramsValue.Count; index++)
                {
                    rowType.Columns.Add(new Schema.Column(paramsValue[index].Name, paramsValue[index].DataType));
                }

                Row row = new Row(_serverProcess.ValueManager, rowType);
                try
                {
                    row.ValuesOwned = false;
                    for (int index = 0; index < paramsValue.Count; index++)
                    {
                        row[index] = paramsValue[index].Value;
                    }

                    remoteParams.Data.Data = row.AsPhysical;
                }
                finally
                {
                    row.Dispose();
                }
            }
        }
Esempio n. 10
0
 public IRemoteServerCursor Open(ref RemoteParamData paramsValue, out ProgramStatistics executeTime, out Guid[] bookmarks, int count, out RemoteFetchData fetchData, ProcessCallInfo callInfo)
 {
     try
     {
         var          channel = GetServiceInterface();
         IAsyncResult result  = channel.BeginOpenPlanCursorWithFetch(PlanHandle, callInfo, paramsValue, count, null, null);
         result.AsyncWaitHandle.WaitOne();
         CursorWithFetchResult cursorResult = channel.EndOpenPlanCursorWithFetch(result);
         executeTime        = cursorResult.ExecuteTime;
         _programStatistics = executeTime;
         paramsValue.Data   = cursorResult.ParamData;
         bookmarks          = cursorResult.Bookmarks;
         fetchData          = cursorResult.FetchData;
         return(new ClientCursor(this, cursorResult.CursorDescriptor));
     }
     catch (FaultException <DataphorFault> fault)
     {
         throw DataphorFaultUtility.FaultToException(fault.Detail);
     }
     catch (CommunicationException ce)
     {
         ReportCommunicationError();
         throw new ServerException(ServerException.Codes.CommunicationFailure, ErrorSeverity.Environment, ce);
     }
 }
Esempio n. 11
0
 public IRemoteServerCursor OpenCursor(string expression, ref RemoteParamData paramsValue, out IRemoteServerExpressionPlan plan, out PlanDescriptor planDescriptor, out ProgramStatistics executeTime, ProcessCallInfo callInfo, RemoteProcessCleanupInfo cleanupInfo, out Guid[] bookmarks, int count, out RemoteFetchData fetchData)
 {
     try
     {
         var          channel = GetServiceInterface();
         IAsyncResult result  = channel.BeginOpenCursorWithFetch(ProcessHandle, GetCleanupInfo(cleanupInfo), callInfo, expression, paramsValue, count, null, null);
         result.AsyncWaitHandle.WaitOne();
         DirectCursorWithFetchResult cursorResult = channel.EndOpenCursorWithFetch(result);
         paramsValue.Data = cursorResult.ParamData;
         planDescriptor   = cursorResult.PlanDescriptor;
         executeTime      = cursorResult.ExecuteTime;
         bookmarks        = cursorResult.Bookmarks;
         fetchData        = cursorResult.FetchData;
         plan             = new ClientExpressionPlan(this, planDescriptor);
         return(new ClientCursor((ClientExpressionPlan)plan, cursorResult.CursorDescriptor));
     }
     catch (FaultException <DataphorFault> fault)
     {
         throw DataphorFaultUtility.FaultToException(fault.Detail);
     }
     catch (CommunicationException ce)
     {
         ReportCommunicationError();
         throw new ServerException(ServerException.Codes.CommunicationFailure, ErrorSeverity.Environment, ce);
     }
 }
Esempio n. 12
0
        public void Execute(DataParams paramsValue)
        {
            RemoteParamData localParamsValue = ((LocalProcess)_process).DataParamsToRemoteParamData(paramsValue);

            _script.Execute(ref localParamsValue, _process.GetProcessCallInfo());
            ((LocalProcess)_process).RemoteParamDataToDataParams(paramsValue, localParamsValue);
        }
Esempio n. 13
0
        /// <summary>Executes the prepared statement this plan represents.</summary>
        public void Execute(DataParams paramsValue)
        {
            RemoteParamData localParamsValue = _process.DataParamsToRemoteParamData(paramsValue);

            _plan.Execute(ref localParamsValue, out _programStatistics, _process.GetProcessCallInfo());
            _programStatisticsCached = false;
            _process.RemoteParamDataToDataParams(paramsValue, localParamsValue);
        }
Esempio n. 14
0
        // Execute
        public void Execute(string statement, ref RemoteParamData paramsValue, ProcessCallInfo callInfo, RemoteProcessCleanupInfo cleanupInfo)
        {
            ProcessCallInfo(callInfo);
            DataParams localParamsValue = RemoteParamsToDataParams(paramsValue.Params);

            _serverProcess.Execute(statement, localParamsValue);
            DataParamsToRemoteParamData(localParamsValue, ref paramsValue);
        }
Esempio n. 15
0
        public IDataValue Evaluate(DataParams paramsValue)
        {
            RemoteParamData localParamsValue = _process.DataParamsToRemoteParamData(paramsValue);

            byte[] result = _plan.Evaluate(ref localParamsValue, out _programStatistics, _process.GetProcessCallInfo());
            _programStatisticsCached = false;
            _process.RemoteParamDataToDataParams(paramsValue, localParamsValue);
            return(result == null ? null : DataValue.FromPhysical(_process.ValueManager, DataType, result, 0));
        }
Esempio n. 16
0
        public void Execute(ref RemoteParamData paramsValue, ProcessCallInfo callInfo)
        {
            _process.ProcessCallInfo(callInfo);

            foreach (RemoteServerBatch batch in _batches)
            {
                batch.Execute(ref paramsValue, _process.EmptyCallInfo());
            }
        }
Esempio n. 17
0
        public void Execute(ref RemoteParamData paramsValue, ProcessCallInfo callInfo)
        {
            ProgramStatistics executeTime;

            if (IsExpression())
            {
                ((IRemoteServerExpressionPlan)Prepare(paramsValue.Params)).Evaluate(ref paramsValue, out executeTime, callInfo);
            }
            else
            {
                ((IRemoteServerStatementPlan)Prepare(paramsValue.Params)).Execute(ref paramsValue, out executeTime, callInfo);
            }
        }
Esempio n. 18
0
 public void Execute(ref RemoteParamData paramsValue, out ProgramStatistics executeTime, ProcessCallInfo callInfo)
 {
     _process.ProcessCallInfo(callInfo);
     try
     {
         DataParams localParamsValue = _process.RemoteParamDataToDataParams(paramsValue);
         ServerStatementPlan.Execute(localParamsValue);
         _process.DataParamsToRemoteParamData(localParamsValue, ref paramsValue);
         executeTime = ServerStatementPlan.ProgramStatistics;
     }
     catch (Exception E)
     {
         throw WrapException(E);
     }
 }
Esempio n. 19
0
 public void Execute(ref RemoteParamData paramsValue, ProcessCallInfo callInfo)
 {
     _script.Process.ProcessCallInfo(callInfo);
     try
     {
         RemoteParam[] localParamsValue = new RemoteParam[paramsValue.Params == null ? 0 : paramsValue.Params.Length];
         for (int index = 0; index < (paramsValue.Params == null ? 0 : paramsValue.Params.Length); index++)
         {
             localParamsValue[index].Name     = paramsValue.Params[index].Name;
             localParamsValue[index].TypeName = paramsValue.Params[index].TypeName;
             localParamsValue[index].Modifier = paramsValue.Params[index].Modifier;
         }
         if (IsExpression())
         {
             PlanDescriptor planDescriptor;
             IRemoteServerExpressionPlan plan = PrepareExpression(localParamsValue, out planDescriptor);
             try
             {
                 ProgramStatistics programStatistics;
                 plan.Close(plan.Open(ref paramsValue, out programStatistics, _script.Process.EmptyCallInfo()), _script.Process.EmptyCallInfo());
                 // TODO: Provide a mechanism for determining whether or not an expression should be evaluated or opened through the remoting CLI.
             }
             finally
             {
                 UnprepareExpression(plan);
             }
         }
         else
         {
             PlanDescriptor             planDescriptor;
             IRemoteServerStatementPlan plan = PrepareStatement(localParamsValue, out planDescriptor);
             try
             {
                 ProgramStatistics programStatistics;
                 plan.Execute(ref paramsValue, out programStatistics, callInfo);
             }
             finally
             {
                 UnprepareStatement(plan);
             }
         }
     }
     catch (Exception E)
     {
         throw WrapException(E);
     }
 }
Esempio n. 20
0
 public void Execute(string statement, ref RemoteParamData paramsValue, ProcessCallInfo callInfo, RemoteProcessCleanupInfo cleanupInfo)
 {
     try
     {
         var          channel = GetServiceInterface();
         IAsyncResult result  = channel.BeginExecuteStatement(ProcessHandle, GetCleanupInfo(cleanupInfo), callInfo, statement, paramsValue, null, null);
         result.AsyncWaitHandle.WaitOne();
         ExecuteResult executeResult = channel.EndExecuteStatement(result);
         paramsValue.Data = executeResult.ParamData;
     }
     catch (FaultException <DataphorFault> fault)
     {
         throw DataphorFaultUtility.FaultToException(fault.Detail);
     }
     catch (CommunicationException ce)
     {
         ReportCommunicationError();
         throw new ServerException(ServerException.Codes.CommunicationFailure, ErrorSeverity.Environment, ce);
     }
 }
Esempio n. 21
0
        public DataParams RemoteParamDataToDataParams(RemoteParamData paramsValue)
        {
            if ((paramsValue.Params != null) && (paramsValue.Params.Length > 0))
            {
                DataParams     localParamsValue = new DataParams();
                Schema.RowType rowType          = new Schema.RowType();
                for (int index = 0; index < paramsValue.Params.Length; index++)
                {
                    rowType.Columns.Add(new Schema.Column(paramsValue.Params[index].Name, (Schema.ScalarType)_serverProcess.ServerSession.Server.Catalog[paramsValue.Params[index].TypeName]));
                }

                Row row = new Row(_serverProcess.ValueManager, rowType);
                try
                {
                    row.ValuesOwned = false;
                    row.AsPhysical  = paramsValue.Data.Data;

                    for (int index = 0; index < paramsValue.Params.Length; index++)
                    {
                        if (row.HasValue(index))
                        {
                            localParamsValue.Add(new DataParam(row.DataType.Columns[index].Name, row.DataType.Columns[index].DataType, RemoteModifierToModifier(paramsValue.Params[index].Modifier), DataValue.CopyValue(_serverProcess.ValueManager, row[index])));
                        }
                        else
                        {
                            localParamsValue.Add(new DataParam(row.DataType.Columns[index].Name, row.DataType.Columns[index].DataType, RemoteModifierToModifier(paramsValue.Params[index].Modifier), null));
                        }
                    }

                    return(localParamsValue);
                }
                finally
                {
                    row.Dispose();
                }
            }
            else
            {
                return(null);
            }
        }
Esempio n. 22
0
 public void Execute(ref RemoteParamData paramsValue, out ProgramStatistics executeTime, ProcessCallInfo callInfo)
 {
     try
     {
         var          channel = GetServiceInterface();
         IAsyncResult result  = channel.BeginExecutePlan(PlanHandle, callInfo, paramsValue, null, null);
         result.AsyncWaitHandle.WaitOne();
         ExecuteResult executeResult = channel.EndExecutePlan(result);
         executeTime      = executeResult.ExecuteTime;
         paramsValue.Data = executeResult.ParamData;
     }
     catch (FaultException <DataphorFault> fault)
     {
         throw DataphorFaultUtility.FaultToException(fault.Detail);
     }
     catch (CommunicationException ce)
     {
         ReportCommunicationError();
         throw new ServerException(ServerException.Codes.CommunicationFailure, ErrorSeverity.Environment, ce);
     }
 }
Esempio n. 23
0
        public RemoteParamData DataParamsToRemoteParamData(DataParams paramsValue)
        {
            int paramCount = paramsValue != null ? paramsValue.Count : 0;

            if (paramCount > 0)
            {
                Schema.RowType rowType = new Schema.RowType();
                if (paramsValue != null)
                {
                    foreach (DataParam param in paramsValue)
                    {
                        rowType.Columns.Add(new Schema.Column(param.Name, param.DataType));
                    }
                }
                using (Row row = new Row(this.ValueManager, rowType))
                {
                    row.ValuesOwned = false;
                    RemoteParamData localParamsValue = new RemoteParamData();
                    localParamsValue.Params = new RemoteParam[paramCount];
                    for (int index = 0; index < paramCount; index++)
                    {
                        localParamsValue.Params[index].Name     = paramsValue[index].Name;
                        localParamsValue.Params[index].TypeName = paramsValue[index].DataType.Name;
                        localParamsValue.Params[index].Modifier = ModifierToRemoteModifier(paramsValue[index].Modifier);
                        if (paramsValue[index].Value != null)
                        {
                            row[index] = paramsValue[index].Value;
                        }
                    }
                    EnsureOverflowReleased(row);
                    localParamsValue.Data.Data = row.AsPhysical;
                    return(localParamsValue);
                }
            }
            else                // optimization
            {
                return(new RemoteParamData());
            }
        }
Esempio n. 24
0
        public IDataValue Evaluate(string expression, DataParams paramsValue)
        {
                        #if USECOLLAPSEDEVALUATECALLS
                        #if LOGCACHEEVENTS
            FSession.FServer.FInternalServer.LogMessage(String.Format("Thread {0} evaluating expression '{1}'.", Thread.CurrentThread.GetHashCode(), AExpression));
                        #endif

            RemoteParamData             localParamsValue = DataParamsToRemoteParamData(AParams);
            IRemoteServerExpressionPlan plan;
            PlanDescriptor    planDescriptor;
            ProgramStatistics executeTime;
            byte[]            result = FProcess.Evaluate(AExpression, ref localParamsValue, out plan, out planDescriptor, out executeTime, GetProcessCallInfo(), GetProcessCleanupInfo());
            RemoteParamDataToDataParams(AParams, localParamsValue);

                        #if LOGCACHEEVENTS
            FSession.FServer.FInternalServer.LogMessage(String.Format("Thread {0} expression evaluated.", Thread.CurrentThread.GetHashCode()));
                        #endif

            LocalExpressionPlan localPlan = new LocalExpressionPlan(this, plan, planDescriptor, AParams);
            try
            {
                return(result == null ? null : DataValue.FromPhysical(this.ValueManager, localPlan.DataType, result, 0));
            }
            finally
            {
                UnprepareExpression(localPlan);
            }
                        #else
            IServerExpressionPlan localPlan = PrepareExpression(expression, paramsValue);
            try
            {
                return(localPlan.Evaluate(paramsValue));
            }
            finally
            {
                UnprepareExpression(localPlan);
            }
                        #endif
        }
Esempio n. 25
0
 public byte[] Evaluate(string expression, ref RemoteParamData paramsValue, out IRemoteServerExpressionPlan plan, out PlanDescriptor planDescriptor, out ProgramStatistics executeTime, ProcessCallInfo callInfo, RemoteProcessCleanupInfo cleanupInfo)
 {
     try
     {
         var          channel = GetServiceInterface();
         IAsyncResult result  = channel.BeginEvaluateExpression(ProcessHandle, GetCleanupInfo(cleanupInfo), callInfo, expression, paramsValue, null, null);
         result.AsyncWaitHandle.WaitOne();
         DirectEvaluateResult evaluateResult = channel.EndEvaluateExpression(result);
         paramsValue.Data = evaluateResult.ParamData;
         planDescriptor   = evaluateResult.PlanDescriptor;
         executeTime      = evaluateResult.ExecuteTime;
         plan             = new ClientExpressionPlan(this, planDescriptor);
         return(evaluateResult.Result);
     }
     catch (FaultException <DataphorFault> fault)
     {
         throw DataphorFaultUtility.FaultToException(fault.Detail);
     }
     catch (CommunicationException ce)
     {
         ReportCommunicationError();
         throw new ServerException(ServerException.Codes.CommunicationFailure, ErrorSeverity.Environment, ce);
     }
 }
Esempio n. 26
0
        /// <summary>Opens a server-side cursor based on the prepared statement this plan represents.</summary>
        /// <returns>An <see cref="IServerCursor"/> instance for the prepared statement.</returns>
        public IServerCursor Open(DataParams paramsValue)
        {
            RemoteParamData     localParamsValue = ((LocalProcess)_process).DataParamsToRemoteParamData(paramsValue);
            IRemoteServerCursor serverCursor;
            LocalCursor         cursor;

            if (_process.ProcessInfo.FetchAtOpen && (_process.ProcessInfo.FetchCount > 1) && Supports(CursorCapability.Bookmarkable))
            {
                Guid[]          bookmarks;
                RemoteFetchData fetchData;
                serverCursor             = _plan.Open(ref localParamsValue, out _programStatistics, out bookmarks, _process.ProcessInfo.FetchCount, out fetchData, _process.GetProcessCallInfo());
                _programStatisticsCached = false;
                cursor = new LocalCursor(this, serverCursor);
                cursor.ProcessFetchData(fetchData, bookmarks, true);
            }
            else
            {
                serverCursor             = _plan.Open(ref localParamsValue, out _programStatistics, _process.GetProcessCallInfo());
                _programStatisticsCached = false;
                cursor = new LocalCursor(this, serverCursor);
            }
            ((LocalProcess)_process).RemoteParamDataToDataParams(paramsValue, localParamsValue);
            return(cursor);
        }
Esempio n. 27
0
 // OpenCursor
 public IRemoteServerCursor OpenCursor
 (
     string expression,
     ref RemoteParamData paramsValue,
     out IRemoteServerExpressionPlan plan,
     out PlanDescriptor planDescriptor,
     out ProgramStatistics executeTime,
     ProcessCallInfo callInfo,
     RemoteProcessCleanupInfo cleanupInfo
 )
 {
     ProcessCallInfo(callInfo);
     plan = PrepareExpression(expression, paramsValue.Params, null, out planDescriptor, cleanupInfo);
     try
     {
         return(plan.Open(ref paramsValue, out executeTime, EmptyCallInfo()));
     }
     catch
     {
         UnprepareExpression(plan);
         plan = null;
         throw;
     }
 }
Esempio n. 28
0
 public byte[] Evaluate(ref RemoteParamData paramsValue, out ProgramStatistics executeTime, ProcessCallInfo callInfo)
 {
     _process.ProcessCallInfo(callInfo);
     try
     {
         DataParams localParamsValue = _process.RemoteParamDataToDataParams(paramsValue);
         IDataValue tempValue        = ServerExpressionPlan.Evaluate(localParamsValue);
         _process.DataParamsToRemoteParamData(localParamsValue, ref paramsValue);
         executeTime = ServerExpressionPlan.ProgramStatistics;
         if (tempValue == null)
         {
             return(null);
         }
         if (ServerExpressionPlan.DataType.Equivalent(tempValue.DataType))
         {
             return(tempValue.AsPhysical);
         }
         return(tempValue.CopyAs(ServerExpressionPlan.DataType).AsPhysical);
     }
     catch (Exception E)
     {
         throw WrapException(E);
     }
 }