public override List<SchemaIndexColumn> GetIndexColumns(string owner, string tableName, string indexName)
 {
     using (DbConnectionInfo cn = Db.CreateConnection())
     {
         DataTable dt = cn.GetSchema("IndexColumns", new string[] { cn.Database, owner, tableName, indexName });
         DataRowCollection drc = dt.Rows;
         List<SchemaIndexColumn> list = new List<SchemaIndexColumn>(drc.Count);
         for (int i = 0; i < drc.Count; i++)
         {
             SchemaIndexColumn item = new SchemaIndexColumn();
             item.IndexOwner = drc[i]["INDEX_OWNER"].IfNull(String.Empty);
             item.IndexName = drc[i]["INDEX_NAME"].IfNull(String.Empty);
             item.TableOwner = drc[i]["TABLE_OWNER"].IfNull(String.Empty);
             item.TableName = drc[i]["TABLE_NAME"].IfNull(String.Empty);
             item.OrdinalPosition = drc[i]["COLUMN_POSITION"].IfNull(0);
             item.ColumnName = drc[i]["COLUMN_NAME"].IfNull(String.Empty);
             //drc[i]["DESCEND"]
             list.Add(item);
         }
         return list;
     }
 }
 public override List<SchemaIndexColumn> GetIndexColumns(string owner, string tableName, string indexName)
 {
     using (DbConnectionInfo cn = Db.CreateConnection())
     {
         DataTable dt = cn.GetSchema("IndexColumns", new string[] { cn.Database, owner, tableName, indexName });
         DataRowCollection drc = dt.Rows;
         List<SchemaIndexColumn> list = new List<SchemaIndexColumn>(drc.Count);
         for (int i = 0; i < drc.Count; i++)
         {
             SchemaIndexColumn item = new SchemaIndexColumn();
             item.IndexOwner = drc[i]["constraint_schema"].IfNull(String.Empty);
             item.IndexName = drc[i]["constraint_name"].IfNull(String.Empty);
             item.TableOwner = drc[i]["table_schema"].IfNull(String.Empty);
             item.TableName = drc[i]["table_name"].IfNull(String.Empty);
             item.OrdinalPosition = drc[i]["ordinal_position"].IfNull(0);
             item.ColumnName = drc[i]["column_name"].IfNull(String.Empty);
             //drc[i]["keytype"] //56 unique key, 167 index, 108 primary key...
             list.Add(item);
         }
         return list;
     }
 }