// TODO: add assigned server instance public GraywulfSchemaManager(Context context, string federationName) { InitializeMembers(); this.context = context; this.federationName = federationName; }
public JobDescriptionFactory(Context context, QueryFactory queryFactory) : base(context) { InitializeMembers(); this.queryFactory = queryFactory; }
public QueryPartitionBase(QueryBase query, Context context) : base(query) { InitializeMembers(new StreamingContext()); this.Context = context; this.query = query; }
public override void PrepareCopyResultset(Context context) { base.PrepareCopyResultset(context); // --- strip off orderBy clause OrderByClause orderby = SelectStatement.FindDescendant<OrderByClause>(); if (orderby != null) { SelectStatement.Stack.Remove(orderby); } }
public override void PrepareExecuteQuery(Context context, IScheduler scheduler) { base.PrepareExecuteQuery(context, scheduler); // --- strip off orderBy clause -- it always goes into a table var orderby = SelectStatement.FindDescendant<OrderByClause>(); if (orderby != null) { SelectStatement.Stack.Remove(orderby); } var qs = SelectStatement.EnumerateQuerySpecifications().First<QuerySpecification>(); // Check if it is a partitioned query and append partitioning conditions, if necessary var ts = qs.EnumerateSourceTables(false).FirstOrDefault(); if (ts != null && ts is SimpleTableSource && ((SimpleTableSource)ts).IsPartitioned) { AppendPartitioningConditions(qs, (SimpleTableSource)ts); } SubstituteDatabaseNames(AssignedServerInstance.Guid, Query.SourceDatabaseVersionName); SubstituteRemoteTableNames(TemporaryDatabaseInstanceReference.Value.GetDataset(), Query.TemporaryDataset.DefaultSchemaName); }
/// <summary> /// Constructor for creating a new <b>User</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public UserIdentity(Context context) : base(context) { InitializeMembers(); }
public override void InitializeQueryObject(Context context, IScheduler scheduler, bool forceReinitialize) { if (context != null) { Context = context; } switch (ExecutionMode) { case ExecutionMode.SingleServer: break; case ExecutionMode.Graywulf: LoadSystemDatabaseInstance(TemporaryDatabaseInstanceReference, (GraywulfDataset)query.TemporaryDataset, forceReinitialize); LoadSystemDatabaseInstance(CodeDatabaseInstanceReference, (GraywulfDataset)query.CodeDataset, forceReinitialize); break; default: throw new NotImplementedException(); } base.InitializeQueryObject(context, scheduler, forceReinitialize); }
/// <summary> /// Constructor for creating a new <b>Database Definition</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public QueueInstance(Context context) : base(context) { InitializeMembers(); }
public JobFactoryBase(Context context) : base(context) { }
/// <summary> /// Constructor for creating a new <b>User Group</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public UserGroup(Context context) : base(context) { InitializeMembers(); }
/// <summary> /// Constructor for creating a new <b>Server Instance</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public ServerInstance(Context context) : base(context) { InitializeMembers(); }
public override void InitializeQueryObject(Context context, IScheduler scheduler, bool forceReinitialize) { if (context != null) { this.Context = context; UpdateContext(); } switch (ExecutionMode) { case ExecutionMode.SingleServer: break; case ExecutionMode.Graywulf: LoadDestinationDatabaseInstance(forceReinitialize); break; default: throw new NotImplementedException(); } base.InitializeQueryObject(context, scheduler, forceReinitialize); }
public virtual void PrepareExecuteQuery(Context context, IScheduler scheduler) { InitializeQueryObject(context, scheduler); }
/// <summary> /// Constructor for creating a new <b>Slice</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public UserDatabaseInstance(Context context) : base(context) { InitializeMembers(); }
/// <summary> /// Constructor for creating a new <b>Database Definition</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public JobDefinition(Context context) : base(context) { InitializeMembers(); }
/// <summary> /// Constructor for creating a new <b>Federation</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public Federation(Context context) : base(context) { InitializeMembers(); }
/// <summary> /// Creates or truncates destination table in the output database (usually MYDB) /// </summary> /// <remarks> /// This has to be in the QueryPartition class because the Query class does not /// have information about the database server the partition is executing on and /// the temporary tables are required to generate the destination table schema. /// </remarks> public void PrepareDestinationTable(Context context, IScheduler scheduler) { switch (query.ExecutionMode) { case ExecutionMode.SingleServer: // Output is already written to target table break; case Jobs.Query.ExecutionMode.Graywulf: { InitializeQueryObject(context, scheduler); lock (query.syncRoot) { // Only initialize target table if it's still uninitialzed if (!query.IsDestinationTableInitialized) { var source = new SourceQueryParameters() { Query = GetDestinationTableSchemaSourceQuery(), Dataset = GetDestinationTableSchemaSourceDataset(), Timeout = Query.QueryTimeout }; // TODO: this is screwed up here // drop table in every partition... call it only once if ((query.Destination.Operation & DestinationTableOperation.Drop) != 0) { DropTableOrView(query.Destination.Table); } if ((query.Destination.Operation & DestinationTableOperation.Create) != 0) { CreateTableForBulkCopy(source, query.Destination, false); } else if ((query.Destination.Operation & DestinationTableOperation.Clear) != 0) { // TODO: This might need some revision here // what if schema differs? TruncateTable(query.Destination.Table); } else if ((query.Destination.Operation & DestinationTableOperation.Append) != 0) { // TODO: This might need some revision here // what if schema differs? throw new NotImplementedException(); } else { throw new NotImplementedException(); } } query.IsDestinationTableInitialized = true; } } break; default: throw new NotImplementedException(); } }
/// <summary> /// Constructor for creating a new <b>Machine Role</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public MachineRole(Context context) : base(context) { InitializeMembers(); }
public virtual void PrepareCopyResultset(Context context) { query.InitializeQueryObject(context); this.InitializeQueryObject(context); }
public void PrepareComputeTableStatistics(Context context, TableReference tr, out string connectionString, out string sql) { // Assign a database server to the query // TODO: maybe make this function generic // TODO: check this part to use appropriate server and database var sm = GetSchemaManager(false); var ds = sm.Datasets[tr.DatasetName]; if (ds is GraywulfDataset && !((GraywulfDataset)ds).IsSpecificInstanceRequired) { var gds = (GraywulfDataset)ds; var dd = new DatabaseDefinition(context); dd.Guid = gds.DatabaseDefinition.Guid; dd.Load(); // Get a server from the scheduler var si = new ServerInstance(Context); si.Guid = Scheduler.GetNextServerInstance(new Guid[] { dd.Guid }, StatDatabaseVersionName, null); si.Load(); connectionString = si.GetConnectionString().ConnectionString; SubstituteDatabaseName(tr, si.Guid, StatDatabaseVersionName); tr.DatabaseObject = null; } else { // Run it on the specific database connectionString = ds.ConnectionString; } // Generate statistics query var cg = new SqlServerCodeGenerator(); cg.ResolveNames = true; sql = cg.GenerateTableStatisticsQuery(tr); }
/// <summary> /// Creates or truncates destination table in the output database (usually MYDB) /// </summary> /// <remarks> /// This has to be in the QueryPartition class because the Query class does not /// have information about the database server the partition is executing on and /// the temporary tables are required to generate the destination table schema. /// </remarks> public void PrepareDestinationTable(Context context, IScheduler scheduler) { switch (query.ExecutionMode) { case ExecutionMode.SingleServer: // Output is already written to the target table break; case Jobs.Query.ExecutionMode.Graywulf: { InitializeQueryObject(context, scheduler); lock (query.syncRoot) { // Only initialize target table if it's still uninitialzed if (!query.IsDestinationTableInitialized) { var source = GetOutputSourceQuery(); var table = query.Destination.GetTable(); table.Initialize(source.GetSchemaTable(), query.Destination.Options); } query.IsDestinationTableInitialized = true; } } break; default: throw new NotImplementedException(); } }
public QueryBase(Context context) { InitializeMembers(new StreamingContext()); this.Context = context; }
/// <summary> /// Constructor for creating a new <b>File Group</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public FileGroup(Context context) : base(context) { InitializeMembers(); }
public SqlQueryPartition(SqlQuery query, Context context) : base(query, context) { InitializeMembers(); }
public ExportTablesFactory(Context context) : base(context) { InitializeMembers(new StreamingContext()); }
protected override void OnError(EventArgs e) { var ex = Server.GetLastError(); var error = LogError(ex); // Save exception to session for future use Session[Constants.SessionException] = ex; Session[Constants.SessionExceptionEventID] = error.EventId; if (context != null) { context.RollbackTransaction(); context.Dispose(); context = null; } Server.ClearError(); base.OnError(e); Response.Redirect(Jhu.Graywulf.Web.Error.GetUrl()); }
/// <summary> /// Constructor for creating a new <b>Remote Database</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public RemoteDatabase(Context context) : base(context) { InitializeMembers(); }
/// <summary> /// Creates an object with a valid context. /// </summary> /// <param name="context">A valid context object.</param> public UserFactory(Context context) : base(context) { }
public SqlQuery(gw.Context context) : base(context) { InitializeMembers(new StreamingContext()); }
/// <summary> /// Constructor for creating a new <b>Deployment Package</b> object and setting object context. /// </summary> /// <param name="context">An object context class containing session information.</param> public DeploymentPackage(Context context) : base(context) { InitializeMembers(); }
public SqlQueryFactory(Context context) : base(context) { InitializeMembers(new StreamingContext()); }
public JobDescriptionFactory(Context context) : base(context) { InitializeMembers(); }