private DataTable GetPrimaryKeyIndexes(string tableName) { return(BdpMetaDataHelper.GetIndices()); }
private DataTable GetUniqueIndexes(string tableName) { return(BdpMetaDataHelper.GetIndices()); }
private DataTable GetNonUniqueIndexes(string tableName) { StringBuilder sql = new StringBuilder(); StringBuilder where = new StringBuilder(); FbCommand select = new FbCommand(this.connection); ISQLCursor cursor = null; DataTable schema = BdpMetaDataHelper.GetIndices(); short resultCols = 0; sql.Append( @"SELECT " + "idx.rdb$relation_name AS TableName, " + "idx.rdb$index_name AS IndexName, " + "seg.rdb$field_name AS ColumnName, " + "seg.rdb$field_position AS FieldPosition, " + "idx.rdb$index_type AS IndexType, " + "idx.rdb$index_inactive AS InactiveIndex, " + "idx.rdb$unique_flag AS IsUnique, " + "idx.rdb$description AS Description " + "FROM " + "rdb$indices idx " + "left join rdb$index_segments seg ON idx.rdb$index_name = seg.rdb$index_name "); if (tableName != null && tableName.Length > 0) { where.AppendFormat("rdb$relation_name = '{0}' AND idx.rdb$unique_flag IS NULL", tableName); } if (where.Length > 0) { sql.AppendFormat(" WHERE {0} ", where.ToString()); } sql.Append(" ORDER BY idx.rdb$relation_name, idx.rdb$index_name, seg.rdb$field_position"); /* * RecNo * CatalogName * SchemaName * TableName * IndexName * ColumnName * ColumnPosition * PKeyName * IndexType * SortOrder * Filter */ // Prepare and execute the command select.Prepare(sql.ToString(), 0); select.Execute(out cursor, ref resultCols); int recno = 0; while (cursor.Next() != -1) { DataRow row = schema.NewRow(); row["Recno"] = recno++; row["CatalogName"] = null; row["SchemaName"] = null; row["TableName"] = ((FbCursor)cursor).GetValue(0).ToString().Trim(); row["IndexName"] = ((FbCursor)cursor).GetValue(1).ToString().Trim(); row["ColumnName"] = ((FbCursor)cursor).GetValue(2).ToString().Trim(); row["ColumnPosition"] = ((FbCursor)cursor).GetValue(3); row["PKeyName"] = String.Empty; row["IndexType"] = IndexType.NonUnique; row["SortOrder"] = String.Empty; row["Filter"] = String.Empty; schema.Rows.Add(row); } cursor.Release(); select.Release(); return(schema); }