public IRemoteServerExpressionPlan PrepareExpression(string expression, RemoteParam[] paramsValue, DebugLocator locator, out PlanDescriptor planDescriptor, RemoteProcessCleanupInfo cleanupInfo) { try { CleanupPlans(cleanupInfo); RemoteServerExpressionPlan remotePlan = new RemoteServerExpressionPlan(this, (ServerExpressionPlan)_serverProcess.PrepareExpression(expression, RemoteParamsToDataParams(paramsValue), locator)); planDescriptor = GetPlanDescriptor(remotePlan, paramsValue); return(remotePlan); } catch (Exception E) { throw WrapException(E); } }
public IRemoteServerExpressionPlan PrepareExpression(RemoteParam[] paramsValue, out PlanDescriptor planDescriptor) { try { DataParams localParamsValue = _script.Process.RemoteParamsToDataParams(paramsValue); RemoteServerExpressionPlan remotePlan = new RemoteServerExpressionPlan(_script.Process, (ServerExpressionPlan)_serverBatch.PrepareExpression(localParamsValue)); planDescriptor = _script.Process.GetPlanDescriptor(remotePlan, paramsValue); return(remotePlan); } catch (Exception E) { throw WrapException(E); } }
internal PlanDescriptor GetPlanDescriptor(RemoteServerExpressionPlan plan, RemoteParam[] paramsValue) { PlanDescriptor descriptor = new PlanDescriptor(); descriptor.ID = plan.ID; descriptor.Statistics = plan.PlanStatistics; descriptor.Messages = DataphorFaultUtility.ExceptionsToFaults(plan.Messages); if (plan.ServerExpressionPlan.ActualDataType is Schema.ICursorType) { descriptor.Capabilities = plan.Capabilities; descriptor.CursorIsolation = plan.Isolation; descriptor.CursorType = plan.CursorType; if (((TableNode)plan.ServerExpressionPlan.Program.Code.Nodes[0]).Order != null) { descriptor.Order = ((TableNode)plan.ServerExpressionPlan.Program.Code.Nodes[0]).Order.Name; } else { descriptor.Order = String.Empty; } } descriptor.Catalog = plan.GetCatalog(paramsValue, out descriptor.ObjectName, out descriptor.CacheTimeStamp, out descriptor.ClientCacheTimeStamp, out descriptor.CacheChanged); return(descriptor); }
public RemoteServerCursor(RemoteServerExpressionPlan plan, ServerCursor serverCursor) : base() { _plan = plan; _serverCursor = serverCursor; AttachServerCursor(); }