Пример #1
0
        public static void UpdateSchema(SchemaDriver schemaDriver, string connectionString, IOutput output, SchemaChangeOptions options, IEnumerable <ISchemaProvider> providers)
        {
            var allProviders    = essentialProviders.AddRange(providers);
            var preProviders    = allProviders.OfType <IPrerequisiteSchemaProvider>();
            var normalProviders = from provider in allProviders
                                  let pre = provider as IPrerequisiteSchemaProvider
                                            where pre == null || pre.IncludeInNormalRun
                                            select provider;

            using (var progress = output.ProgressBlock())
            {
                var          currentState = DatabaseState.Empty;
                var          objectTypes  = ImmutableHashSet <ObjectType> .Empty;
                StateStorage storage      = null;

                var chunks = progress.GetChunks(1, 19, providers == null ? 0 : 80).ToList();
                output.Message("Connecting to database...");
                using (var connection = SchemaConnection.Create(schemaDriver, connectionString))
                {
                    connection.AcquireSchemaUpdateLock(output, options.SchemaUpdateLockTimeout);
                    output.Verbose("Connected to database.");
                    chunks[0].ProgressComplete();
                    runSteps(connection, chunks[1], options, "Preparation", preProviders, ref currentState, ref objectTypes, ref storage);
                    runSteps(connection, chunks[2], options, "Processing", normalProviders, ref currentState, ref objectTypes, ref storage);
                }
            }
        }
Пример #2
0
        public IEnumerable <ObjectType> GetObjectTypes(SchemaDriver schemaDriver)
        {
            yield return(PendingReorderTableType.Instance);

            yield return(BeforeStatementType.Instance);

            yield return(CompletionType.Instance);
        }
Пример #3
0
        public IEnumerable <ObjectType> GetObjectTypes(SchemaDriver schemaDriver)
        {
            // Types that are required for the creation of the tables that nrdo uses to track its own state.
            // Note: Do not remove any types from this list that have ever been in it:
            // any types that have ever been here need to be able to drop themselves on upgrades from versions that
            // used them, even if they are no longer used for these tables.
            yield return(TableType.Instance);

            yield return(FieldType.Instance);

            yield return(UniqueIndexType.Instance);

            yield return(FkeyType.Instance);
        }
Пример #4
0
        public IEnumerable <ObjectType> GetObjectTypes(SchemaDriver schemaDriver)
        {
            yield return(BeforeStatementType.Instance);

            yield return(TableType.Instance);

            yield return(TableRenameType.Instance);

            yield return(FieldType.Instance);

            yield return(UniqueIndexType.Instance);

            yield return(NonUniqueIndexType.Instance);

            yield return(FulltextCatalogType.Instance);

            yield return(FulltextIndexType.Instance);

            yield return(FkeyType.Instance);

            if (schemaDriver.IsSequenceUsed)
            {
                yield return(SequenceType.Instance);
            }
            if (schemaDriver.IsTriggerUsedForSequence)
            {
                yield return(TriggerType.Instance);
            }
            yield return(QueryType.Instance);

            yield return(PreUpgradeHookType.Instance);

            if (preserveColumnOrder)
            {
                yield return(FieldOrderSensitivityType.Instance);
            }
        }
Пример #5
0
 public static void UpdateSchema(SchemaDriver schemaDriver, string connectionString, IOutput output, SchemaChangeOptions options, params ISchemaProvider[] providers)
 {
     UpdateSchema(schemaDriver, connectionString, output, options, providers.AsEnumerable());
 }
Пример #6
0
 public static void UpdateSchema(SchemaDriver schemaDriver, string connectionString, IOutput output, IEnumerable <ISchemaProvider> providers)
 {
     UpdateSchema(schemaDriver, connectionString, output, SchemaChangeOptions.Default, providers);
 }
Пример #7
0
 public IEnumerable <ObjectType> GetObjectTypes(SchemaDriver schemaDriver)
 {
     yield return(new OldVersionCacheMigrationType());
 }
Пример #8
0
 public SqlTranslator(SchemaDriver dbDriver, Func <string, string> getSequenceName)
 {
     this.dbDriver        = dbDriver;
     this.getSequenceName = getSequenceName;
 }