/// <summary> /// Composes a source query for a remote table /// </summary> /// <param name="table"></param> /// <returns></returns> public SourceTableQuery PrepareCopyRemoteTable(TableReference table) { // -- Load schema var sm = this.GetSchemaManager(false); var ds = sm.Datasets[table.DatasetName]; // Graywulf dataset has to be converted to prevent registry access if (ds is GraywulfDataset) { ds = new SqlServerDataset(ds); } // --- Generate most restrictive query // Find the query specification this table belongs to var qs = ((TableSource)table.Node).QuerySpecification; // Run the normalizer to convert where clause to a normal form var cnr = new SearchConditionNormalizer(); cnr.NormalizeQuerySpecification(qs); var cg = SqlCodeGeneratorFactory.CreateCodeGenerator(ds); var sql = cg.GenerateMostRestrictiveTableQuery(table, true, 0); return(new SourceTableQuery() { Dataset = ds, Query = sql }); }
private void CopyMembers(QueryObject old) { this.syncRoot = new object(); this.context = old.context; this.scheduler = old.scheduler; this.queryFactoryTypeName = old.queryFactoryTypeName; this.queryFactory = new Lazy <QueryFactory>(() => (QueryFactory)Activator.CreateInstance(Type.GetType(queryFactoryTypeName)), false); this.federationReference = new EntityProperty <Registry.Federation>(old.federationReference); this.queryString = old.queryString; this.defaultDataset = old.defaultDataset; this.temporaryDataset = old.temporaryDataset; this.codeDataset = old.codeDataset; this.customDatasets = new List <DatasetBase>(old.customDatasets); this.executionMode = old.executionMode; this.isCanceled = false; this.cancelableTasks = new Dictionary <string, ICancelableTask>(); this.assignedServerInstanceReference = new EntityProperty <ServerInstance>(old.assignedServerInstanceReference); this.selectStatement = null; this.isInterpretFinished = false; this.temporaryDatabaseInstanceReference = new EntityProperty <DatabaseInstance>(old.temporaryDatabaseInstanceReference); this.temporaryTables = new ConcurrentDictionary <string, Table>(old.temporaryTables, SchemaManager.Comparer); this.temporaryViews = new ConcurrentDictionary <string, View>(old.temporaryViews, SchemaManager.Comparer); this.codeDatabaseInstanceReference = new EntityProperty <DatabaseInstance>(old.codeDatabaseInstanceReference); }
private void CopyMembers(DestinationTable old) { this.dataset = old.dataset; this.databaseName = old.databaseName; this.schemaName = old.schemaName; this.tableName = old.tableName; this.options = old.options; }
private void InitializeMembers() { this.dataset = null; this.databaseName = null; this.schemaName = null; this.tableName = null; this.options = TableInitializationOptions.Create; }
public DestinationTable(Table table) { InitializeMembers(); this.dataset = (SqlServerDataset)table.Dataset; this.databaseName = table.DatabaseName; this.schemaName = table.SchemaName; this.tableName = table.TableName; }
private SchemaManager CreateSchemaManager() { var sm = new SqlServerSchemaManager(); var ds = new SqlServerDataset(Jhu.Graywulf.Test.Constants.TestDatasetName, Jhu.Graywulf.Test.AppSettings.SqlServerSchemaTestConnectionString); sm.Datasets[ds.Name] = ds; return(sm); }
public DestinationTable(SqlServerDataset dataset, string databaseName, string schemaName, string tableName, TableInitializationOptions options) { InitializeMembers(); this.dataset = dataset; this.databaseName = databaseName; this.schemaName = schemaName; this.tableName = tableName; this.options = options; }
private SqlServerDataset CreateTestDataset() { var csb = new SqlConnectionStringBuilder(Jhu.Graywulf.Schema.Test.AppSettings.SqlServerConnectionString); var ds = new SqlServerDataset(Jhu.Graywulf.Test.Constants.TestDatasetName, csb.ConnectionString) { DatabaseName = csb.InitialCatalog }; return(ds); }
protected override DatasetBase LoadDataset(string datasetName) { string key = String.Format("{0}.{1}", ConnectionStringNamePrefix, datasetName); SqlServerDataset ds = new SqlServerDataset( datasetName, ConfigurationManager.ConnectionStrings[key].ConnectionString); return ds; }
protected override IEnumerable<KeyValuePair<string, DatasetBase>> LoadAllDatasets() { foreach (ConnectionStringSettings s in ConfigurationManager.ConnectionStrings) { if (s.Name.StartsWith(ConnectionStringNamePrefix)) { string name = s.Name.Substring(ConnectionStringNamePrefix.Length + 1); SqlServerDataset ds = new SqlServerDataset( name, s.ConnectionString); yield return new KeyValuePair<string, DatasetBase>(name, ds); } } }
protected override void GetInitializedQuery_SingleServer(QueryBase query, string queryString, string outputTable, SqlServerDataset mydbds, SqlServerDataset tempds, SqlServerDataset codeds) { query.ExecutionMode = ExecutionMode.SingleServer; query.QueryString = queryString; query.QueryTimeout = 7200; if (mydbds != null) { query.DefaultDataset = mydbds; // Add MyDB as custom source query.CustomDatasets.Add(mydbds); // Set up MYDB for destination query.Destination = new DestinationTable( mydbds, mydbds.DatabaseName, mydbds.DefaultSchemaName, "", // *** TODO ? TableInitializationOptions.Drop | TableInitializationOptions.Create); } // Set up temporary and code database query.TemporaryDataset = tempds; query.CodeDataset = codeds; }
/// <summary> /// Composes a source query for a remote table /// </summary> /// <param name="table"></param> /// <returns></returns> public SourceTableQuery PrepareCopyRemoteTable(TableReference table) { // -- Load schema var sm = this.GetSchemaManager(false); var ds = sm.Datasets[table.DatasetName]; // Graywulf dataset has to be converted to prevent registry access if (ds is GraywulfDataset) { ds = new SqlServerDataset(ds); } // --- Generate most restrictive query // Find the query specification this table belongs to var qs = ((TableSource)table.Node).QuerySpecification; // Run the normalizer to convert where clause to a normal form var cnr = new SearchConditionNormalizer(); cnr.NormalizeQuerySpecification(qs); var cg = SqlCodeGeneratorFactory.CreateCodeGenerator(ds); var sql = cg.GenerateMostRestrictiveTableQuery(table, true, 0); return new SourceTableQuery() { Dataset = ds, Query = sql }; }
protected abstract void GetInitializedQuery_SingleServer(QueryBase query, string queryString, string outputTable, SqlServerDataset mydbds, SqlServerDataset tempds);
public SourceQueryParameters PrepareCopyRemoteTable(TableReference table) { // Load schema var sm = this.GetSchemaManager(false); var ds = sm.Datasets[table.DatasetName]; // Graywulf dataset is to be converted to prevent registry access if (ds is GraywulfDataset) { ds = new SqlServerDataset(ds); } var source = new SourceQueryParameters(); source.Dataset = ds; // Find the query specification this table belongs to var qs = ((TableSource)table.Node).QuerySpecification; // Run the normalizer var cnr = new SearchConditionNormalizer(); cnr.NormalizeQuerySpecification(qs); var cg = SqlCodeGeneratorFactory.CreateCodeGenerator(ds); source.Query = cg.GenerateMostRestrictiveTableQuery(table, true, 0); return source; }
private SqlServerDataset CreateTestDataset() { var csb = new SqlConnectionStringBuilder(Jhu.Graywulf.Schema.Test.AppSettings.SqlServerConnectionString); var ds = new SqlServerDataset(Jhu.Graywulf.Test.Constants.TestDatasetName, csb.ConnectionString) { DatabaseName = csb.InitialCatalog }; return ds; }
private SchemaManager CreateSchemaManager() { var sm = new SqlServerSchemaManager(); var ds = new SqlServerDataset("Test", "Data Source=localhost;Initial Catalog=Graywulf_Test;Integrated Security=true"); sm.Datasets[ds.Name] = ds; return sm; }
private void InitializeMembers(StreamingContext context) { this.syncRoot = new object(); this.context = null; this.scheduler = null; this.queryFactoryTypeName = null; this.queryFactory = new Lazy<QueryFactory>(() => (QueryFactory)Activator.CreateInstance(Type.GetType(queryFactoryTypeName)), false); this.federationReference = new EntityProperty<Federation>(); this.queryString = null; this.defaultDataset = null; this.temporaryDataset = null; this.codeDataset = null; this.customDatasets = new List<DatasetBase>(); /*this.databaseVersionName = null; this.defaultDatasetName = null; this.defaultSchemaName = null;*/ this.executionMode = ExecutionMode.SingleServer; this.isCanceled = false; this.cancelableTasks = new Dictionary<string, ICancelableTask>(); this.assignedServerInstanceReference = new EntityProperty<ServerInstance>(); this.interpretedQueryString = null; this.selectStatement = null; this.temporaryDatabaseInstanceReference = new EntityProperty<DatabaseInstance>(); this.temporaryTables = new ConcurrentDictionary<string, Table>(SchemaManager.Comparer); this.temporaryViews = new ConcurrentDictionary<string, View>(SchemaManager.Comparer); this.codeDatabaseInstanceReference = new EntityProperty<DatabaseInstance>(); }
protected override void GetInitializedQuery_SingleServer(QueryBase query, string queryString, string outputTable, SqlServerDataset mydbds, SqlServerDataset tempds) { query.ExecutionMode = ExecutionMode.SingleServer; query.QueryString = queryString; query.QueryTimeout = 7200; if (mydbds != null) { query.DefaultDataset = mydbds; // Add MyDB as custom source query.CustomDatasets.Add(mydbds); // Set up MYDB for destination query.Destination.Table = new Table(); query.Destination.Table.Dataset = mydbds; query.Destination.Table.DatabaseName = mydbds.DatabaseName; query.Destination.Table.SchemaName = mydbds.DefaultSchemaName; query.Destination.Operation = DestinationTableOperation.Drop | DestinationTableOperation.Create; } // Set up temporary database query.TemporaryDataset = tempds; }
private SchemaManager CreateSchemaManager() { var sm = new SqlServerSchemaManager(); var ds = new SqlServerDataset("Test", Jhu.Graywulf.Test.Constants.TestConnectionString); sm.Datasets[ds.Name] = ds; return sm; }
protected abstract void GetInitializedQuery_SingleServer(QueryBase query, string queryString, string outputTable, SqlServerDataset mydbds, SqlServerDataset tempds, SqlServerDataset codeds);