Esempio n. 1
0
        // 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;
        }
Esempio n. 3
0
        public QueryPartitionBase(QueryBase query, Context context)
            : base(query)
        {
            InitializeMembers(new StreamingContext());

            this.Context = context;
            this.query = query;
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 /// <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();
 }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 /// <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();
 }
Esempio n. 9
0
 public JobFactoryBase(Context context)
     : base(context)
 {
 }
Esempio n. 10
0
 /// <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();
 }
Esempio n. 11
0
 /// <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();
 }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 public virtual void PrepareExecuteQuery(Context context, IScheduler scheduler)
 {
     InitializeQueryObject(context, scheduler);
 }
Esempio n. 14
0
 /// <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();
 }
Esempio n. 15
0
 /// <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();
 }
Esempio n. 16
0
 /// <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();
 }
Esempio n. 17
0
        /// <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();
            }
        }
Esempio n. 18
0
 /// <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();
 }
Esempio n. 19
0
 public virtual void PrepareCopyResultset(Context context)
 {
     query.InitializeQueryObject(context);
     this.InitializeQueryObject(context);
 }
Esempio n. 20
0
        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);
        }
Esempio n. 21
0
        /// <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();
            }
        }
Esempio n. 22
0
        public QueryBase(Context context)
        {
            InitializeMembers(new StreamingContext());

            this.Context = context;
        }
Esempio n. 23
0
 /// <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();
 }
Esempio n. 24
0
 public SqlQueryPartition(SqlQuery query, Context context)
     : base(query, context)
 {
     InitializeMembers();
 }
Esempio n. 25
0
 public ExportTablesFactory(Context context)
     : base(context)
 {
     InitializeMembers(new StreamingContext());
 }
Esempio n. 26
0
        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());
        }
Esempio n. 27
0
 /// <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();
 }
Esempio n. 28
0
 /// <summary>
 /// Creates an object with a valid context.
 /// </summary>
 /// <param name="context">A valid context object.</param>
 public UserFactory(Context context)
     : base(context)
 {
 }
Esempio n. 29
0
 public SqlQuery(gw.Context context)
     : base(context)
 {
     InitializeMembers(new StreamingContext());
 }
Esempio n. 30
0
 /// <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();
 }
Esempio n. 31
0
 public SqlQueryFactory(Context context)
     : base(context)
 {
     InitializeMembers(new StreamingContext());
 }
Esempio n. 32
0
 public JobDescriptionFactory(Context context)
     : base(context)
 {
     InitializeMembers();
 }