Ejemplo n.º 1
0
        private static void FillForeignKey(Database database, string connectionString)
        {
            int   lastid   = 0;
            int   parentId = 0;
            Table table    = null;

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand command = new SqlCommand(GetSQLForeignKey(), conn))
                {
                    conn.Open();
                    command.CommandTimeout = 0;
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            if (parentId != (int)reader["parent_object_id"])
                            {
                                parentId = (int)reader["parent_object_id"];
                                table    = database.Tables.Find(parentId);
                            }

                            if (table != null)
                            {
                                if (lastid != (int)reader["object_id"])
                                {
                                    con                         = new Constraint(table);
                                    con.Id                      = (int)reader["object_id"];
                                    con.Name                    = reader["Name"].ToString();
                                    con.Type                    = Constraint.ConstraintType.ForeignKey;
                                    con.WithNoCheck             = (bool)reader["is_not_trusted"];
                                    con.RelationalTableFullName = "[" + reader["ReferenceOwner"].ToString() + "].[" + reader["TableRelationalName"].ToString() + "]";
                                    con.RelationalTableId       = (int)reader["TableRelationalId"];
                                    con.Owner                   = reader["Owner"].ToString();
                                    con.IsDisabled              = (bool)reader["is_disabled"];
                                    con.OnDeleteCascade         = (byte)reader["delete_referential_action"];
                                    con.OnUpdateCascade         = (byte)reader["update_referential_action"];
                                    if (database.Options.Ignore.FilterNotForReplication)
                                    {
                                        con.NotForReplication = (bool)reader["is_not_for_replication"];
                                    }
                                    lastid = (int)reader["object_id"];
                                    table.Constraints.Add(con);
                                }
                                ConstraintColumn ccon = new ConstraintColumn(con);
                                ccon.Name = reader["ColumnName"].ToString();
                                ccon.ColumnRelationalName = reader["ColumnRelationalName"].ToString();
                                ccon.ColumnRelationalId   = (int)reader["ColumnRelationalId"];
                                ccon.Id       = (int)reader["ColumnId"];
                                ccon.KeyOrder = con.Columns.Count;
                                ccon.ColumnRelationalDataTypeId = (int)reader["user_type_id"];
                                //table.DependenciesCount++;
                                con.Columns.Add(ccon);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void buttonAdd_Click(object sender, EventArgs e)
        {
            if (comboBoxConstraints.SelectedIndex > -1)
            {
                Codenesium.DatabaseContracts.Constraint constraint = (Codenesium.DatabaseContracts.Constraint)comboBoxConstraints.SelectedItem;
                if (this.comboBoxColumns.SelectedIndex > -1)
                {
                    Column column = (Column)this.comboBoxColumns.SelectedItem;

                    if (constraint.Columns.Any(x => x.Name == column.Name))
                    {
                        return; // the column is already in the list
                    }

                    ConstraintColumn newColumn = new ConstraintColumn()
                    {
                        Name             = column.Name,
                        Order            = listBoxConstraintColumns.Items.Count + 1,
                        Descending       = false,
                        IsIncludedColumn = false
                    };
                    constraint.Columns.Add(newColumn);
                }
                this.selectConstraint(constraint);
                listBoxConstraintColumns.SelectedIndex = -1;
            }
        }
Ejemplo n.º 3
0
 private void listBoxItems_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (listBoxConstraintColumns.SelectedIndex > -1)
     {
         ConstraintColumn column = (ConstraintColumn)listBoxConstraintColumns.SelectedItem;
         checkBoxDescending.Checked     = column.Descending;
         checkBoxIncludedColumn.Checked = column.IsIncludedColumn;
         checkBoxIsIdentity.Checked     = column.IsIdentity;
     }
 }
Ejemplo n.º 4
0
        private void checkBoxIncludedColumn_CheckedChanged(object sender, EventArgs e)
        {
            if (listBoxConstraintColumns.SelectedIndex > -1)
            {
                Codenesium.DatabaseContracts.Constraint constraint = (Codenesium.DatabaseContracts.Constraint)comboBoxConstraints.SelectedItem;

                ConstraintColumn column = (ConstraintColumn)listBoxConstraintColumns.SelectedItem;

                column.IsIncludedColumn = checkBoxIncludedColumn.Checked;
            }
        }
Ejemplo n.º 5
0
        public Constraints Get(Table table)
        {
            Constraints cons = null;
            string      last = "";

            using (MySqlConnection conn = new MySqlConnection(connectioString))
            {
                using (MySqlCommand command = new MySqlCommand(GetSQL(table), conn))
                {
                    conn.Open();
                    using (MySqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            if (cons == null)
                            {
                                cons = new Constraints(table);
                            }
                            ConstraintColumn ccon = new ConstraintColumn(con);
                            if (!last.Equals(reader["CONSTRAINT_NAME"].ToString()))
                            {
                                if (!String.IsNullOrEmpty(last))
                                {
                                    cons.Add(con);
                                }
                                con          = new Constraint(table);
                                con.TypeText = reader["CONSTRAINT_TYPE"].ToString();
                                con.Name     = reader["CONSTRAINT_NAME"].ToString();
                                con.Owner    = reader["TABLE_SCHEMA"].ToString();
                                last         = reader["CONSTRAINT_NAME"].ToString();
                                cons.Add(con);
                            }
                            ccon.Name                     = reader["COLUMN_NAME"].ToString();
                            ccon.OrdinalPosition          = reader.GetInt32("ORDINAL_POSITION");
                            ccon.PositionUniqueConstraint = reader.GetInt32("POSITION_IN_UNIQUE_CONSTRAINT");
                            if (con.Type == Constraint.ConstraintType.ForeignKey)
                            {
                                ccon.PositionUniqueConstraint = reader.GetInt32("POSITION_IN_UNIQUE_CONSTRAINT");
                                ccon.ReferencedColumnName     = reader["REFERENCED_COLUMN_NAME"].ToString();
                                ccon.ReferencedSchemaName     = reader["REFERENCED_TABLE_SCHEMA"].ToString();
                                ccon.ReferencedTableName      = reader["REFERENCED_TABLE_NAME"].ToString();
                            }
                            table.DependenciesCount++;
                            //((Database)table.Parent).ConstraintDependencies.Add((int)reader["TableRelationalId"], (int)reader["ColumnRelationalId"], table.Id, con);
                            //((Database)table.Parent).ConstraintDependencies.Add((int)reader["TableId"], (int)reader["ColumnId"], table.Id, con);
                            con.Columns.Add(ccon);
                        }
                    }
                }
            }
            return(cons);
        }
Ejemplo n.º 6
0
        private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listBoxConstraintColumns.SelectedIndex > -1)
            {
                Codenesium.DatabaseContracts.Constraint constraint = (Codenesium.DatabaseContracts.Constraint)comboBoxConstraints.SelectedItem;

                ConstraintColumn column = (ConstraintColumn)listBoxConstraintColumns.SelectedItem;

                constraint.Columns.Remove(column);

                selectConstraint(constraint);
            }
        }
Ejemplo n.º 7
0
        private Constraints GetColumnsFK(Table table)
        {
            Constraints cons   = new Constraints(table);
            string      lastFK = "";

            using (SqlConnection conn = new SqlConnection(connectioString))
            {
                using (SqlCommand command = new SqlCommand("SELECT OBJECTPROPERTY(SC.constId, 'CnstIsNotRepl') AS NotForReplication,SO2.Name AS FKName,SOF.id AS TableFId, SOF.Name AS TableName,SOR.id AS TableRId, SOR.Name AS TableRelationalName,SCF.colid AS ColFId,SCF.Name AS ColumnName,SCR.colid AS colRId, SCR.Name AS ColumnRelationalName, OBJECTPROPERTY(SC.constid,'CnstIsNotTrusted') AS WithNoCheck FROM sysforeignkeys SFK INNER JOIN sysconstraints SC ON SC.constid = SFK.constid INNER JOIN sysobjects SO ON SO.id = SC.id INNER JOIN sysobjects SO2 ON SO2.id = SC.constid INNER JOIN sysobjects SOF ON SOF.id = SFK.fkeyid INNER JOIN sysobjects SOR ON SOR.id = SFK.rkeyid INNER JOIN syscolumns SCF ON SCF.colid = SFK.fkey AND SCF.id = SOF.ID INNER JOIN syscolumns SCR ON SCR.colid = SFK.rkey AND SCR.id = SOR.ID WHERE SO.id = " + table.Id.ToString() + " ORDER BY SFK.keyno", conn))
                {
                    conn.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            ConstraintColumn ccon = new ConstraintColumn(con);

                            if (!lastFK.Equals(reader["FKName"].ToString()))
                            {
                                if (!String.IsNullOrEmpty(lastFK))
                                {
                                    cons.Add(con);
                                }
                                con = new Constraint(table);
                                con.NotForReplication = reader["NotForReplication"].ToString().Equals("1");
                                con.Name              = reader["FKName"].ToString();
                                con.Type              = Constraint.ConstraintType.ForeignKey;
                                con.WithNoCheck       = ((int)reader["WithNoCheck"] == 1);
                                con.RelationalTable   = reader["TableRelationalName"].ToString();
                                con.RelationalTableId = (int)reader["TableRId"];
                                lastFK = reader["FKName"].ToString();
                            }
                            ccon.Name = reader["ColumnName"].ToString();
                            ccon.ColumnRelationalName = reader["ColumnRelationalName"].ToString();
                            table.DependenciesCount++;
                            ((Database)table.Parent).Dependencies.Add((int)reader["TableRId"], (short)reader["colRId"], table.Id, con);
                            ((Database)table.Parent).Dependencies.Add((int)reader["TableFId"], (short)reader["colFId"], table.Id, con);
                            con.Columns.Add(ccon);
                        }
                        if (con != null)
                        {
                            cons.Add(con);
                        }
                    }
                }
            }
            return(cons);
        }
Ejemplo n.º 8
0
        private Constraints GetColumnsPK(Table table)
        {
            Constraints cons    = new Constraints(table);
            Boolean     isFirst = true;

            using (SqlConnection conn = new SqlConnection(connectioString))
            {
                using (SqlCommand command = new SqlCommand("select SI.indid, SI.name AS PKName, SC.colid, SC.Name,SI.indid from sysindexes SI INNER JOIN sysindexkeys SIK ON SI.indid = SIK.indid AND SIK.id = SI.ID INNER JOIN syscolumns SC ON SC.colid = SIK.colid AND SC.id = SI.ID WHERE (SI.status & 0x800) = 0x800 AND SI.id = " + table.Id.ToString() + " ORDER BY SIK.keyno", conn))
                {
                    conn.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            ConstraintColumn ccon = new ConstraintColumn(con);
                            if (isFirst)
                            {
                                if (con != null)
                                {
                                    cons.Add(con);
                                }
                                con           = new Constraint(table);
                                con.Name      = reader["PKName"].ToString();
                                con.Type      = Constraint.ConstraintType.PrimaryKey;
                                con.Clustered = ((short)reader["indid"] == 1); /*Si el campo indid = 1, es clustered*/
                                isFirst       = false;
                            }
                            ccon.Name = reader["Name"].ToString();
                            ((Database)table.Parent).Dependencies.Add(table.Id, (short)reader["colid"], table.Id, con);
                            con.Columns.Add(ccon);
                        }
                        if (con != null)
                        {
                            cons.Add(con);
                        }
                    }
                }
            }
            return(cons);
        }
Ejemplo n.º 9
0
        private Constraints GetColumnsUNIQUE(Table table)
        {
            Constraints cons    = new Constraints(table);
            Boolean     isFirst = true;

            using (SqlConnection conn = new SqlConnection(connectioString))
            {
                using (SqlCommand command = new SqlCommand("SELECT SI.indid, SO.Name AS UniqueName,SCC.colid, SCC.Name from sysconstraints SC INNER JOIN sysobjects SO ON SC.constid = SO.ID INNER JOIN sysindexes SI ON SI.name = SO.Name INNER JOIN sysindexkeys SIK ON SIK.indid = SI.indid AND SC.ID = SIK.ID INNER JOIN syscolumns SCC ON SCC.colid = SIK.colid AND SCC.ID = SC.ID where SO.xtype = 'UQ' and SC.id = " + table.Id.ToString() + " ORDER BY SIK.keyno", conn))
                {
                    conn.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            ConstraintColumn ccon = new ConstraintColumn(con);
                            if (isFirst)
                            {
                                if (con != null)
                                {
                                    cons.Add(con);
                                }
                                con           = new Constraint(table);
                                con.Name      = reader["UniqueName"].ToString();
                                con.Type      = Constraint.ConstraintType.Unique;
                                con.Clustered = (int.Parse(reader["indid"].ToString()) == 1); /*Si el campo indid = 1, es clustered*/
                                isFirst       = false;
                            }
                            ccon.Name = reader["Name"].ToString();
                            ((Database)table.Parent).Dependencies.Add(table.Id, Int32.Parse(reader["colid"].ToString()), table.Id, con);
                            con.Columns.Add(ccon);
                        }
                        if (con != null)
                        {
                            cons.Add(con);
                        }
                    }
                }
            }
            return(cons);
        }
Ejemplo n.º 10
0
        public void Refresh()
        {
            OracleCommand    cmd = new OracleCommand(ALL_CONS_COLUMNS_SELECT, conn);
            OracleDataReader odr = cmd.ExecuteReader();

            if (!odr.HasRows)
            {
                return;
            }

            // purge old data
            columns.Clear();
            schemaColumns.Clear();

            while (odr.Read())
            {
                ConstraintColumn column = LoadColumn(odr);
                columns.Add(column);
            }
            System.Collections.
        }
Ejemplo n.º 11
0
        private static void FillForeignKey(Database database, string connectionString)
        {
            int lastid = 0;
            int parentId = 0;
            Table table = null;

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand command = new SqlCommand(GetSQLForeignKey(), conn))
                {
                    conn.Open();
                    command.CommandTimeout = 0;
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            if (parentId != (int)reader["parent_object_id"])
                            {
                                parentId = (int)reader["parent_object_id"];
                                table = database.Tables.Find(parentId);
                            }
                            if (lastid != (int)reader["object_id"])
                            {
                                con = new Constraint(table);
                                con.Id = (int)reader["object_id"];
                                con.Name = reader["Name"].ToString();
                                con.Type = Constraint.ConstraintType.ForeignKey;
                                con.WithNoCheck = (bool)reader["is_not_trusted"];
                                con.RelationalTableFullName = "[" + reader["ReferenceOwner"].ToString() + "].[" + reader["TableRelationalName"].ToString() + "]";
                                con.RelationalTableId = (int)reader["TableRelationalId"];
                                con.Owner = reader["Owner"].ToString();
                                con.IsDisabled = (bool)reader["is_disabled"];
                                con.OnDeleteCascade = (byte)reader["delete_referential_action"];
                                con.OnUpdateCascade = (byte)reader["update_referential_action"];
                                if (database.Options.Ignore.FilterNotForReplication)
                                    con.NotForReplication = (bool)reader["is_not_for_replication"];
                                lastid = (int)reader["object_id"];
                                table.Constraints.Add(con);
                            }
                            ConstraintColumn ccon = new ConstraintColumn(con);
                            ccon.Name = reader["ColumnName"].ToString();
                            ccon.ColumnRelationalName = reader["ColumnRelationalName"].ToString();
                            ccon.ColumnRelationalId = (int)reader["ColumnRelationalId"];
                            ccon.Id = (int)reader["ColumnId"];
                            ccon.KeyOrder = con.Columns.Count;
                            ccon.ColumnRelationalDataTypeId = (int)reader["user_type_id"];
                            //table.DependenciesCount++;
                            con.Columns.Add(ccon);
                        }
                    }
                }
            }
        }
Ejemplo n.º 12
0
        private static void FillUniqueKey(Database database, string connectionString)
        {
            int lastId = 0;
            int parentId = 0;
            bool change = false;
            ISchemaBase table = null;

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand command = new SqlCommand(ConstraintSQLCommand.GetUniqueKey(database.Info.Version), conn))
                {
                    conn.Open();
                    command.CommandTimeout = 0;
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            if (parentId != (int)reader["ID"])
                            {
                                parentId = (int)reader["ID"];
                                if (reader["ObjectType"].ToString().Trim().Equals("U"))
                                    table = database.Tables.Find(parentId);
                                else
                                    table = database.TablesTypes.Find(parentId);
                                change = true;
                            }
                            else
                                change = false;
                            if ((lastId != (int)reader["Index_id"]) || (change))
                            {
                                con = new Constraint(table);
                                con.Name = reader["Name"].ToString();
                                con.Owner = (string)reader["Owner"];
                                con.Id = (int)reader["Index_id"];
                                con.Type = Constraint.ConstraintType.Unique;
                                con.Index.Id = (int)reader["Index_id"];
                                con.Index.AllowPageLocks = (bool)reader["allow_page_locks"];
                                con.Index.AllowRowLocks = (bool)reader["allow_row_locks"];
                                con.Index.FillFactor = (byte)reader["fill_factor"];
                                con.Index.IgnoreDupKey = (bool)reader["ignore_dup_key"];
                                con.Index.IsAutoStatistics = (bool)reader["ignore_dup_key"];
                                con.Index.IsDisabled = (bool)reader["is_disabled"];
                                con.Index.IsPadded = (bool)reader["is_padded"];
                                con.Index.IsPrimaryKey = false;
                                con.Index.IsUniqueKey = true;
                                con.Index.Type = (Index.IndexTypeEnum)(byte)reader["type"];
                                con.Index.Name = con.Name;
                                if (database.Options.Ignore.FilterTableFileGroup)
                                    con.Index.FileGroup = reader["FileGroup"].ToString();
                                lastId = (int)reader["Index_id"];
                                if (reader["ObjectType"].ToString().Trim().Equals("U"))
                                    ((Table)table).Constraints.Add(con);
                                else
                                    ((TableType)table).Constraints.Add(con);
                            }
                            ConstraintColumn ccon = new ConstraintColumn(con);
                            ccon.Name = reader["ColumnName"].ToString();
                            ccon.IsIncluded = (bool)reader["is_included_column"];
                            ccon.Order = (bool)reader["is_descending_key"];
                            ccon.Id = (int)reader["column_id"];
                            ccon.DataTypeId = (int)reader["user_type_id"];
                            con.Columns.Add(ccon);
                        }
                    }
                }
            }
        }
Ejemplo n.º 13
0
        private static void FillPrimaryKey(Database database, string connectionString)
        {
            int         lastId   = 0;
            int         parentId = 0;
            bool        change   = false;
            ISchemaBase table    = null;

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand command = new SqlCommand(ConstraintSQLCommand.GetPrimaryKey(database.Info.Version, null), conn))
                {
                    conn.Open();
                    command.CommandTimeout = 0;
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Constraint con = null;
                        while (reader.Read())
                        {
                            if (parentId != (int)reader["ID"])
                            {
                                parentId = (int)reader["ID"];
                                if (reader["ObjectType"].ToString().Trim().Equals("U"))
                                {
                                    table = database.Tables.Find(parentId);
                                }
                                else
                                {
                                    table = database.TablesTypes.Find(parentId);
                                }
                                change = true;
                            }
                            else
                            {
                                change = false;
                            }
                            if ((lastId != (int)reader["Index_id"]) || (change))
                            {
                                con                        = new Constraint(table);
                                con.Id                     = (int)reader["Index_id"];
                                con.Name                   = (string)reader["Name"];
                                con.Owner                  = (string)reader["Owner"];
                                con.Type                   = Constraint.ConstraintType.PrimaryKey;
                                con.Index.Id               = (int)reader["Index_id"];
                                con.Index.AllowPageLocks   = (bool)reader["allow_page_locks"];
                                con.Index.AllowRowLocks    = (bool)reader["allow_row_locks"];
                                con.Index.FillFactor       = (byte)reader["fill_factor"];
                                con.Index.IgnoreDupKey     = (bool)reader["ignore_dup_key"];
                                con.Index.IsAutoStatistics = (bool)reader["ignore_dup_key"];
                                con.Index.IsDisabled       = (bool)reader["is_disabled"];
                                con.Index.IsPadded         = (bool)reader["is_padded"];
                                con.Index.IsPrimaryKey     = true;
                                con.Index.IsUniqueKey      = false;
                                con.Index.Type             = (Index.IndexTypeEnum)(byte) reader["type"];
                                con.Index.Name             = con.Name;
                                if (database.Options.Ignore.FilterTableFileGroup)
                                {
                                    con.Index.FileGroup = reader["FileGroup"].ToString();
                                }
                                lastId = (int)reader["Index_id"];
                                if (reader["ObjectType"].ToString().Trim().Equals("U"))
                                {
                                    ((Table)table).Constraints.Add(con);
                                }
                                else
                                {
                                    ((TableType)table).Constraints.Add(con);
                                }
                            }
                            ConstraintColumn ccon = new ConstraintColumn(con);
                            ccon.Name       = (string)reader["ColumnName"];
                            ccon.IsIncluded = (bool)reader["is_included_column"];
                            ccon.Order      = (bool)reader["is_descending_key"];
                            ccon.KeyOrder   = (byte)reader["key_ordinal"];
                            ccon.Id         = (int)reader["column_id"];
                            ccon.DataTypeId = (int)reader["user_type_id"];
                            con.Columns.Add(ccon);
                        }
                    }
                }
            }
        }
 protected override void GatherKeyColumns(DbSqlParserTable table)
 {
     using (OracleCommand command = this._connection.CreateCommand())
     {
         command.Transaction = this._connection.Transaction;
         string schemaName = CatalogCase(table.SchemaName);
         string tableName = CatalogCase(table.TableName);
         string str = schemaName;
         string str4 = tableName;
         command.CommandText = this.GetSynonymQueryStatement(schemaName, tableName);
         using (OracleDataReader reader2 = command.ExecuteReader())
         {
             if (reader2.Read())
             {
                 str = reader2.GetString(0);
                 str4 = reader2.GetString(1);
             }
         }
         StringBuilder builder2 = new StringBuilder(ConstraintQuery1a);
         StringBuilder builder = new StringBuilder(ConstraintQuery2a);
         if (System.Data.Common.ADP.IsEmpty(str))
         {
             builder2.Append(ConstraintQuery1b_ownerDefault);
             builder.Append(ConstraintQuery2b_ownerDefault);
         }
         else
         {
             command.Parameters.Add(new OracleParameter(ConstraintOwnerParameterName, DbType.String)).Value = str;
             builder2.Append(ConstraintQuery1b_ownerIsKnown);
             builder.Append(ConstraintQuery2b_ownerIsKnown);
         }
         command.Parameters.Add(new OracleParameter(ConstraintTableParameterName, DbType.String)).Value = str4;
         builder2.Append(ConstraintQuery1c);
         builder.Append(ConstraintQuery2c);
         string[] strArray3 = new string[] { builder2.ToString(), builder.ToString() };
         foreach (string str6 in strArray3)
         {
             command.CommandText = str6;
             using (OracleDataReader reader = command.ExecuteReader())
             {
                 ArrayList list = new ArrayList();
                 bool flag2 = reader.Read();
                 bool flag = false;
                 while (flag2)
                 {
                     ConstraintColumn column;
                     list.Clear();
                     string str5 = reader.GetString(0);
                     do
                     {
                         column = new ConstraintColumn {
                             columnName = reader.GetString(1),
                             constraintType = (DbSqlParserColumn.ConstraintType) ((int) reader.GetDecimal(2)),
                             parsedColumn = null
                         };
                         list.Add(column);
                         flag2 = reader.Read();
                     }
                     while (flag2 && (str5 == reader.GetString(0)));
                     flag = true;
                     for (int i = 0; i < list.Count; i++)
                     {
                         column = (ConstraintColumn) list[i];
                         column.parsedColumn = this.FindConstraintColumn(schemaName, tableName, column.columnName);
                         if (column.parsedColumn == null)
                         {
                             flag = false;
                             break;
                         }
                     }
                     if (flag)
                     {
                         for (int j = 0; j < list.Count; j++)
                         {
                             column = (ConstraintColumn) list[j];
                             column.parsedColumn.SetConstraint(column.constraintType);
                         }
                         break;
                     }
                 }
                 if (flag)
                 {
                     return;
                 }
             }
         }
     }
 }
 protected override void GatherKeyColumns(DbSqlParserTable table)
 {
     using (OracleCommand command = this._connection.CreateCommand())
     {
         command.Transaction = this._connection.Transaction;
         string schemaName = CatalogCase(table.SchemaName);
         string tableName  = CatalogCase(table.TableName);
         string str        = schemaName;
         string str4       = tableName;
         command.CommandText = this.GetSynonymQueryStatement(schemaName, tableName);
         using (OracleDataReader reader2 = command.ExecuteReader())
         {
             if (reader2.Read())
             {
                 str  = reader2.GetString(0);
                 str4 = reader2.GetString(1);
             }
         }
         StringBuilder builder2 = new StringBuilder(ConstraintQuery1a);
         StringBuilder builder  = new StringBuilder(ConstraintQuery2a);
         if (System.Data.Common.ADP.IsEmpty(str))
         {
             builder2.Append(ConstraintQuery1b_ownerDefault);
             builder.Append(ConstraintQuery2b_ownerDefault);
         }
         else
         {
             command.Parameters.Add(new OracleParameter(ConstraintOwnerParameterName, DbType.String)).Value = str;
             builder2.Append(ConstraintQuery1b_ownerIsKnown);
             builder.Append(ConstraintQuery2b_ownerIsKnown);
         }
         command.Parameters.Add(new OracleParameter(ConstraintTableParameterName, DbType.String)).Value = str4;
         builder2.Append(ConstraintQuery1c);
         builder.Append(ConstraintQuery2c);
         string[] strArray3 = new string[] { builder2.ToString(), builder.ToString() };
         foreach (string str6 in strArray3)
         {
             command.CommandText = str6;
             using (OracleDataReader reader = command.ExecuteReader())
             {
                 ArrayList list  = new ArrayList();
                 bool      flag2 = reader.Read();
                 bool      flag  = false;
                 while (flag2)
                 {
                     ConstraintColumn column;
                     list.Clear();
                     string str5 = reader.GetString(0);
                     do
                     {
                         column = new ConstraintColumn {
                             columnName     = reader.GetString(1),
                             constraintType = (DbSqlParserColumn.ConstraintType)((int)reader.GetDecimal(2)),
                             parsedColumn   = null
                         };
                         list.Add(column);
                         flag2 = reader.Read();
                     }while (flag2 && (str5 == reader.GetString(0)));
                     flag = true;
                     for (int i = 0; i < list.Count; i++)
                     {
                         column = (ConstraintColumn)list[i];
                         column.parsedColumn = this.FindConstraintColumn(schemaName, tableName, column.columnName);
                         if (column.parsedColumn == null)
                         {
                             flag = false;
                             break;
                         }
                     }
                     if (flag)
                     {
                         for (int j = 0; j < list.Count; j++)
                         {
                             column = (ConstraintColumn)list[j];
                             column.parsedColumn.SetConstraint(column.constraintType);
                         }
                         break;
                     }
                 }
                 if (flag)
                 {
                     return;
                 }
             }
         }
     }
 }