Example #1
0
        public void AlterDatabase()
        {
            var dbconn = this.FindDatabaseConnection(ConnPack);

            if (!AlterDatabaseVisible() || dbconn == null)
            {
                return;
            }
            var dbmem = new DatabaseStructureMembers();

            dbmem.DatabaseOptions = true;
            var m_db  = dbconn.InvokeLoadStructure(dbmem, null);
            var props = new DatabaseProperties
            {
                Name         = dbconn.DatabaseName,
                SpecificData = m_db.SpecificData,
            };

            if (DatabasePropertiesForm.Run(props, dbconn, true))
            {
                var plan = new AlterPlan();
                var opts = new DbDiffOptions();
                plan.ChangeDatabaseOptions(dbconn.DatabaseName, props.SpecificData);
                plan.Transform(dbconn.Dialect.DumperCaps, opts, dbconn);

                string alterSql = dbconn.Dialect.GenerateScript(dmp => plan.CreateRunner().Run(dmp, opts));
                if (SqlConfirmForm.Run(alterSql))
                {
                    dbconn.AlterDatabase(plan, opts);
                }
            }
        }
Example #2
0
        //private void selectTemplateComboFrame1_ChangedSelectedItem(object sender, EventArgs e)
        //{
        //    RecreateBackupFormat();
        //}

        //private void RecreateBackupFormat()
        //{
        //    AddonHolder item = selectTemplateComboFrame1.SelectedAddonHolder;
        //    if (item != null) m_format = (IBackupFormat)item.CreateInstance();
        //    else m_format = new DataArchiveBackupFormat();
        //    propertyFrame1.SelectedObject = m_format;
        //}

        private void InitPropertiesPage()
        {
            try
            {
                Async.SafeOpen(m_source.Connection);
                DatabaseStructureMembers dbmem = new DatabaseStructureMembers
                {
                    TableList           = true,
                    SpecificObjectList  = true,
                    SchemaList          = true,
                    IgnoreSystemObjects = true,
                };
                IDatabaseStructure dbs = m_source.InvokeLoadStructure(dbmem, null);
                if (m_chooseNode == null)
                {
                    m_chooseNode    = new DbDefChooseTreeNode(dbs);
                    treObjects.Root = m_chooseNode;
                }
            }
            catch (Exception err)
            {
                Errors.Report(err);
                wizard1.Back();
            }
        }
Example #3
0
        private void DoRefreshTables()
        {
            var dbmem = new DatabaseStructureMembers {
                TableList = true
            };

            dbmem.SpecificObjectOverride["view"]            = new SpecificObjectMembers();
            dbmem.SpecificObjectOverride["view"].ObjectList = true;
            var dbs = Connection.Dialect.AnalyseDatabase(Connection, null, dbmem, null);

            m_availableTableNames = new List <NameWithSchema>();
            foreach (var ts in dbs.Tables)
            {
                m_availableTableNames.Add(ts.FullName);
            }
            m_availableTableNames.Sort();

            m_availableViewNames = new List <NameWithSchema>();
            if (dbs.SpecificObjects.ContainsKey("view"))
            {
                foreach (var ts in dbs.SpecificObjects["view"])
                {
                    m_availableViewNames.Add(ts.ObjectName);
                }
            }
            m_availableViewNames.Sort();
        }
Example #4
0
 public ITableStructure LoadTable(FullDatabaseRelatedName tname)
 {
     if (tname.ObjectType == "table")
     {
         var dbmem = new DatabaseStructureMembers
         {
             TableMembers = TableStructureMembers.All,
             TableFilter  = new List <NameWithSchema> {
                 tname.ObjectName
             }
         };
         var dbs = Connection.InvokeLoadStructure(null, dbmem, null);
         return(dbs.Tables[tname.ObjectName]);
     }
     if (tname.ObjectType == "view")
     {
         var dbmem = new DatabaseStructureMembers
         {
             ViewAsTables      = true,
             ViewAsTableFilter = new List <NameWithSchema> {
                 tname.ObjectName
             }
         };
         var dbs = Connection.InvokeLoadStructure(null, dbmem, null);
         return(dbs.ViewAsTables[tname.ObjectName]);
     }
     throw new NotImplementedError("DAE-00370");
 }
Example #5
0
        public void GenerateDropAllTables(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect)
        {
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers
            {
                TableList           = true,
                TableMembers        = TableStructureMembers.ForeignKeys,
                IgnoreSystemObjects = true,
            };
            var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null));
            IMigrationProfile profile = dialect.CreateMigrationProfile();

            dialect.MigrateDatabase(dbs, profile, null);
            foreach (ITableStructure tbl in dbs.Tables)
            {
                if (conn.Dialect.IsSystemTable(tbl.FullName))
                {
                    continue;
                }
                foreach (IForeignKey fk in tbl.GetConstraints <IForeignKey>())
                {
                    dmp.DropConstraint(fk);
                }
            }
            foreach (ITableStructure tbl in dbs.Tables)
            {
                if (conn.Dialect.IsSystemTable(tbl.FullName))
                {
                    continue;
                }
                dmp.DropTable(tbl, DropFlags.None);
            }
        }
Example #6
0
        public void CreateAllObjects(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect)
        {
            var dbmem = new DatabaseStructureMembers
            {
                TableList             = true,
                TableMembers          = TableStructureMembers.AllNoRefs,
                DomainList            = true,
                DomainDetails         = true,
                SpecificObjectList    = true,
                SpecificObjectDetails = true,
                LoadDependencies      = true,
                IgnoreSystemObjects   = true,
            };
            var dbs   = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null));
            var props = new CreateDatabaseObjectsProps
            {
                CreateDomains         = Domains,
                CreateFixedData       = FixedData,
                CreateSchemata        = Schemata,
                CreateSpecificObjects = SpecificObjects,
                CreateTables          = Tables
            };
            IMigrationProfile profile = dialect.CreateMigrationProfile();

            dialect.MigrateDatabase(dbs, profile, null);

            dmp.CreateDatabaseObjects(dbs, props);
        }
Example #7
0
 public override void LoadFromXml(XmlElement xml)
 {
     base.LoadFromXml(xml);
     m_format  = (IBackupFormat)BackupFormatAddonType.Instance.LoadAddon(xml.FindElement("Format"));
     m_members = new DatabaseStructureMembers();
     m_members.LoadFromXml_ForJob(xml.FindElement("Members"));
     m_src = (IDatabaseSource)DatabaseSourceAddonType.Instance.LoadAddon(xml.FindElement("Source"));
 }
Example #8
0
 public void GetMembers(DatabaseStructureMembers dbmem)
 {
     if (RealNode.NodeChecked)
     {
         dbmem.DomainList    = true;
         dbmem.DomainDetails = true;
     }
 }
Example #9
0
        public static List <string> SchemaNames(Func <DatabaseStructureMembers, IDatabaseStructure> loadFunc)
        {
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers {
                SchemaList = true
            };
            IDatabaseStructure dbs = loadFunc(dbmem);

            return(new List <string>(from s in dbs.Schemata select s.SchemaName));
        }
        public DatabaseStructureMembers Clone()
        {
            DatabaseStructureMembers res = (DatabaseStructureMembers)MemberwiseClone();

            if (TableFilter != null)
            {
                res.TableFilter = new List <NameWithSchema>(TableFilter);
            }
            res.SpecificObjectOverride = new Dictionary <string, SpecificObjectMembers>();
            res.SpecificObjectOverride.AddAllMapped(SpecificObjectOverride, m => m.Clone());
            return(res);
        }
Example #11
0
 public void LoadFromXml(XmlElement xml)
 {
     CopyMembers = new DatabaseStructureMembers();
     CopyMembers.LoadFromXml_ForJob(xml.FindElement("Members"));
     TableOptions = new TableCopyOptions();
     TableOptions.LoadFromXml(xml.FindElement("TableOptions"));
     foreach (XmlElement tbl in xml.SelectNodes("DataCopyTables/Table"))
     {
         DataCopyTables.Add(NameWithSchema.LoadFromXml(tbl));
     }
     this.LoadPropertiesCore(xml);
 }
Example #12
0
        public static ISpecificObjectStructure LoadSpecificObjectDetail(this IDatabaseSource db, string type, NameWithSchema objname)
        {
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers();

            dbmem.SpecificObjectOverride[type] = new SpecificObjectMembers();
            dbmem.SpecificObjectOverride[type].ObjectDetail = true;
            dbmem.SpecificObjectOverride[type].ObjectFilter = new List <NameWithSchema> {
                objname
            };
            IDatabaseStructure dbs = db.LoadDatabaseStructure(dbmem, null);

            return(dbs.SpecificObjects[type][objname]);
        }
        public static ITableStructure InvokeLoadViewStructure(this IDatabaseSource conn, NameWithSchema name)
        {
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers
            {
                ViewAsTables      = true,
                ViewAsTableFilter = new List <NameWithSchema> {
                    name
                },
            };
            IDatabaseStructure dbs = conn.InvokeLoadStructure(dbmem, null);

            return(dbs.ViewAsTables[name]);
        }
        public static ITableStructure InvokeLoadTableStructure(this IDatabaseSource conn, NameWithSchema name, TableStructureMembers members)
        {
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers
            {
                TableFilter = new List <NameWithSchema> {
                    name
                },
                TableMembers = members
            };
            IDatabaseStructure dbs = conn.InvokeLoadStructure(dbmem, null);

            return(dbs.Tables[name]);
        }
Example #15
0
        public void CreateReferences(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect)
        {
            var dbmem = new DatabaseStructureMembers
            {
                TableList           = true,
                TableMembers        = TableStructureMembers.AllNoRefs,
                IgnoreSystemObjects = true,
            };
            var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null));
            IMigrationProfile profile = dialect.CreateMigrationProfile();

            dialect.MigrateDatabase(dbs, profile, null);
            CreateReferences(dmp, dbs);
        }
Example #16
0
        protected override void DoGetChildren()
        {
            var dbmem = new DatabaseStructureMembers();

            dbmem.SchemaDetails = dbmem.SchemaList = true;
            IDatabaseStructure dbs = m_conn.LoadDatabaseStructure(dbmem, null);
            List <ITreeNode>   res = new List <ITreeNode>();

            foreach (var schema in dbs.Schemata.Sorted())
            {
                res.Add(new Schema_TreeNode(schema, m_conn, this));
            }
            m_children = res.ToArray();
        }
Example #17
0
        private void WantStructure()
        {
            Async.SafeOpen(m_source.Connection);
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers
            {
                TableList           = true,
                DomainList          = true,
                SpecificObjectList  = true,
                SchemaList          = true,
                IgnoreSystemObjects = true,
            };

            m_structure = m_source.InvokeLoadStructure(dbmem, null);
        }
Example #18
0
        public DatabaseStructureMembers GetChoosedMembers()
        {
            DatabaseStructureMembers res = new DatabaseStructureMembers();

            foreach (var node in GetChildren())
            {
                var tnode = node as IMembersHolderNode;
                if (tnode != null)
                {
                    tnode.GetMembers(res);
                }
            }
            res.LoadDependencies = true;
            return(res);
        }
Example #19
0
 ITableStructure DoGetRowFormat()
 {
     if (m_rowFormat == null)
     {
         DatabaseStructureMembers dbmem = new DatabaseStructureMembers
         {
             TableFilter = new List <NameWithSchema> {
                 new NameWithSchema(m_schema, m_tblname)
             },
             TableMembers = TableStructureMembers.Columns,
         };
         m_rowFormat = m_conn.Dialect.AnalyseDatabase(m_conn, m_dbname, dbmem, null).Tables[new NameWithSchema(m_schema, m_tblname)];
     }
     return(m_rowFormat);
 }
Example #20
0
        public void CreateDomains(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect)
        {
            var dbmem = new DatabaseStructureMembers
            {
                DomainDetails       = true,
                DomainList          = true,
                IgnoreSystemObjects = true,
            };
            var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null));
            IMigrationProfile profile = dialect.CreateMigrationProfile();

            dialect.MigrateDatabase(dbs, profile, null);

            CreateDomains(dmp, dbs);
        }
Example #21
0
        public override void GetObjectList(List <AppObject> objs, AppObject appobj, ConnectionPack connpack)
        {
            ObjectPath      objpath = appobj.GetObjectPath();
            IDatabaseSource conn    = appobj.FindDatabaseConnection(connpack);

            if (conn != null && conn.Connection.IsOpened)
            {
                var dbmem = new DatabaseStructureMembers();
                dbmem.IgnoreSystemObjects = true;
                if (_Type.ObjectType == "table")
                {
                    dbmem.TableList = true;
                }
                else
                {
                    var smem = new SpecificObjectMembers {
                        ObjectList = true
                    };
                    dbmem.SpecificObjectOverride[_Type.ObjectType] = smem;
                }
                var dbs = conn.InvokeLoadStructure(dbmem, null);
                if (_Type.ObjectType == "table")
                {
                    foreach (var tbl in dbs.Tables)
                    {
                        var o = new TableAppObject();
                        o.FillFromDatabase(conn);
                        o.DbObjectName = tbl.FullName;
                        objs.Add(o);
                    }
                }
                else
                {
                    if (dbs.SpecificObjects.ContainsKey(_Type.ObjectType))
                    {
                        foreach (var spec in dbs.SpecificObjects[_Type.ObjectType])
                        {
                            var o = new SpecificObjectAppObject();
                            o.FillFromDatabase(conn);
                            o.DbObjectName = spec.ObjectName;
                            o.DbObjectType = _Type.ObjectType;
                            objs.Add(o);
                        }
                    }
                }
            }
            objs.SortByKey(o => o.ToString());
        }
Example #22
0
        public void FillAllTables(IDatabaseSource conn, ISqlDumper dmp, ISqlDialect dialect)
        {
            var dbmem = new DatabaseStructureMembers
            {
                TableList    = true,
                TableMembers = TableStructureMembers.Columns,
            };
            var dbs = new DatabaseStructure(conn.InvokeLoadStructure(dbmem, null));
            IMigrationProfile profile = dialect.CreateMigrationProfile();

            dialect.MigrateDatabase(dbs, profile, null);
            foreach (var tbl in dbs.Tables)
            {
                GenerateFillTable(tbl, dmp);
            }
        }
Example #23
0
 /// <summary>
 /// creates deep copy of database structure and filters database members
 /// </summary>
 /// <param name="src"></param>
 /// <param name="dbmem"></param>
 public DatabaseStructure(IDatabaseStructure src, DatabaseStructureMembers dbmem)
     : base(src)
 {
     Initialize();
     Dialect           = src.Dialect;
     ForceSingleSchema = src.ForceSingleSchema;
     foreach (ITableStructure o in src.Tables)
     {
         if (dbmem == null || dbmem.HasTableDetails(o.FullName))
         {
             Tables.Add(new TableStructure(o));
         }
     }
     foreach (ISchemaStructure o in src.Schemata)
     {
         Schemata.Add(new SchemaStructure(o));
     }
     foreach (ICollationStructure o in src.Collations)
     {
         Collations.Add(new CollationStructure(o));
     }
     foreach (ICharacterSetStructure o in src.CharacterSets)
     {
         CharacterSets.Add(new CharacterSetStructure(o));
     }
     foreach (IDomainStructure o in src.Domains)
     {
         Domains.Add(new DomainStructure(o));
     }
     foreach (string objtype in src.SpecificObjects.Keys)
     {
         var col = new SpecificObjectCollection(this);
         SpecificObjects[objtype] = col;
         foreach (ISpecificObjectStructure o in src.SpecificObjects[objtype])
         {
             if (dbmem == null || dbmem.HasSpecificObjectDetails(objtype, o.ObjectName))
             {
                 col.Add(new SpecificObjectStructure(o));
             }
         }
     }
     //FilledMembers = dbmem ?? src.FilledMembers.Clone();
 }
Example #24
0
 public void GetMembers(DatabaseStructureMembers dbmem)
 {
     if (RealNode.NodeChecked)
     {
         dbmem.TableList    = true;
         dbmem.TableMembers = TableStructureMembers.AllNoRefs;
         if (!RealNode.CheckedAllChildren())
         {
             dbmem.TableFilter = new List <NameWithSchema>();
             foreach (var child in RealNode.RealChildren)
             {
                 if (child.NodeChecked)
                 {
                     dbmem.TableFilter.Add(((DbDefChooseTableTreeNode)child.LogicalNode).m_table.FullName);
                 }
             }
         }
     }
 }
        public override void LoadDatabase(IDatabaseSource dst)
        {
            var writer = new DatabaseSourceWriter(dst);
            var reader = new DataArchiveReader(Filename);
            var dbmem  = new DatabaseStructureMembers
            {
                TableMembers          = TableStructureMembers.AllNoRefs,
                SpecificObjectDetails = true,
            };
            var copyOpts = new DatabaseCopyOptions
            {
                CopyMembers   = dbmem,
                DataMode      = DbCopyDataMode.All,
                CopyStructure = true,
                SchemaMode    = DbCopySchemaMode.Original,
            };

            CopyDbJob.CopyDatabase(reader, writer, ProgressInfo, copyOpts);
        }
Example #26
0
 public void GetMembers(DatabaseStructureMembers dbmem)
 {
     if (RealNode.NodeChecked)
     {
         var mem = new SpecificObjectMembers();
         dbmem.SpecificObjectOverride[m_repr.ObjectType] = mem;
         mem.ObjectDetail = true;
         mem.ObjectList   = true;
         if (!RealNode.CheckedAllChildren())
         {
             mem.ObjectFilter = new List <NameWithSchema>();
             foreach (var child in RealNode.RealChildren)
             {
                 if (child.NodeChecked)
                 {
                     mem.ObjectFilter.Add(((DbDefChooseSpecObjectTreeNode)child.LogicalNode).m_obj.ObjectName);
                 }
             }
         }
     }
 }
Example #27
0
        public DatabaseStructure Run(ISqlDialect dialect, IPhysicalConnection conn, string dbname, DatabaseStructureMembers members, IProgressInfo progress)
        {
            AnalyserCache = conn.Cache.GetAnalyserCache(dbname);
            m_conn        = conn;
            //m_serverVersion = m_dbConn.ServerVersion;
            //ParseVersion();
            m_dialect      = dialect;
            m_members      = members;
            m_dbname       = dbname;
            m_progress     = progress;
            m_db.Dialect   = m_dialect;
            m_definedSpecs = m_dialect.GetSpecificTypes();


            PrepareMembers();

            SetCurWork(Texts.Get("s_loading_tables"));
            LoadDomains();
            LoadTableList();
            LoadTableColumns();
            LoadConstraints();
            LoadIndexes();
            AfterLoadIndexesOrConstraints();
            InternalAfterLoadConstraints();
            MarkFilledTableMembers();
            LoadSchemata();
            LoadCharacterSets();
            LoadCollations();

            SetCurWork(Texts.Get("s_loading_objects"));
            LoadSpecificObjects();

            LoadDatabaseOptions();
            LoadViewsAsTables();

            LoadDependencies();

            return(m_db);
        }
Example #28
0
        //public static IEnumerable<NameWithSchema> GetSpecificObjectList(this IDatabaseSource db, string type, ObjectPath parent)
        //{
        //    if (parent.ObjectName != null) throw new Exception("Only database objects are supported");
        //    return db.GetSpecificObjectList(type, parent.DbName);
        //}

        public static IEnumerable <NameWithSchema> LoadSpecificObjectList(this IDatabaseSource db, string type, bool isSystem)
        {
            DatabaseStructureMembers dbmem = new DatabaseStructureMembers();

            dbmem.SpecificObjectOverride[type]            = new SpecificObjectMembers();
            dbmem.SpecificObjectOverride[type].ObjectList = true;
            IDatabaseStructure dbs = db.LoadDatabaseStructure(dbmem, null);

            if (!dbs.SpecificObjects.ContainsKey(type))
            {
                yield break;
            }
            foreach (var obj in dbs.SpecificObjects[type])
            {
                bool objsys;
                try { objsys = db.Dialect.IsSystemObject(type, obj.ObjectName); }
                catch { objsys = false; }
                if (objsys != isSystem)
                {
                    continue;
                }
                yield return(obj.ObjectName);
            }
        }
Example #29
0
 public BackupDbJobCommand(IDatabaseSource src, IBackupFormat format, DatabaseStructureMembers members)
 {
     m_src     = src;
     m_format  = format;
     m_members = members;
 }
Example #30
0
 public static Job CreateJob(IDatabaseSource src, IBackupFormat format, DatabaseStructureMembers members, JobProperties jobProps)
 {
     return(Job.FromCommand(new BackupDbJobCommand(src, format, members), jobProps));
 }