diff --git a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs index 41e0ebca4..cf5be0c2b 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs @@ -84,7 +84,7 @@ namespace SqlSugar return result.Select(it => it.DbColumnName).ToList(); }); } - public virtual List GetIndexList() + public virtual List GetIndexList(string tableName) { return new List(); } diff --git a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs index 3a8f37c31..5b8b2263a 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IDbMaintenance.cs @@ -17,7 +17,7 @@ namespace SqlSugar List GetIsIdentities(string tableName); List GetPrimaries(string tableName); List GetProcList(string dbName); - List GetIndexList(); + List GetIndexList(string tableName); #endregion #region Check diff --git a/Src/Asp.Net/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs index 722645dbb..20e6496aa 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Dm/DbMaintenance/DmDbMaintenance.cs @@ -266,9 +266,9 @@ namespace SqlSugar #endregion #region Methods - public override List GetIndexList() + public override List GetIndexList(string tableName) { - var sql = $"SELECT index_name FROM user_indexes"; + var sql = $"SELECT index_name, index_type, column_name\r\nFROM user_ind_columns\r\nWHERE table_name = '{tableName}'"; return this.Context.Ado.SqlQuery(sql); } public override bool AddColumn(string tableName, DbColumnInfo columnInfo) diff --git a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs index 95f56f129..892be22ec 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs @@ -240,14 +240,14 @@ namespace SqlSugar #endregion #region Methods - public override List GetIndexList() + public override List GetIndexList(string tableName) { - var sql = $"SELECT indexname FROM pg_indexes WHERE UPPER(schemaname) = UPPER('" + GetSchema() + "') "; + var sql = $"SELECT indexname FROM sys_indexes WHERE UPPER(tablename) = UPPER('{tableName}') AND UPPER(schemaname) = UPPER('" + GetSchema() + "') "; return this.Context.Ado.SqlQuery(sql); } public override List GetProcList(string dbName) { - var sql = $"SELECT proname FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid WHERE n.nspname = '{dbName}'"; + var sql = $"SELECT proname FROM sys_proc p JOIN pg_namespace n ON p.pronamespace = n.oid WHERE UPPER(n.nspname) = UPPER('{dbName}')"; return this.Context.Ado.SqlQuery(sql); } private string GetSchema() diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs index a892e411b..5ead4fbfa 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs @@ -282,9 +282,9 @@ namespace SqlSugar #endregion #region Methods - public override List GetIndexList() + public override List GetIndexList(string tableName) { - var sql = $"SELECT index_name FROM information_schema.statistics WHERE table_schema = '" + this.Context.Ado.Connection.Database + "'"; + var sql = $"SHOW INDEX FROM {this.SqlBuilder.GetTranslationColumnName(tableName)}"; return this.Context.Ado.SqlQuery(sql); } public override List GetProcList(string dbName) diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs index 5736c1fa8..87c3dd880 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/DbMaintenance/OracleDbMaintenance.cs @@ -272,9 +272,9 @@ namespace SqlSugar #endregion #region Methods - public override List GetIndexList() + public override List GetIndexList(string tableName) { - var sql = $"SELECT index_name FROM user_indexes"; + var sql = $"SELECT index_name, index_type, column_name\r\nFROM user_ind_columns\r\nWHERE table_name = '{tableName}'"; return this.Context.Ado.SqlQuery(sql); } public override List GetProcList(string dbName) diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs index 52954cadf..541741bd5 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs @@ -249,9 +249,9 @@ namespace SqlSugar #endregion #region Methods - public override List GetIndexList() + public override List GetIndexList(string tableName) { - var sql = $"SELECT indexname FROM pg_indexes WHERE schemaname = '"+GetSchema()+"'"; + var sql = $"SELECT indexname, indexdef FROM pg_indexes WHERE tablename = '{tableName}'"; return this.Context.Ado.SqlQuery(sql); } public override List GetProcList(string dbName) diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs index 6439d1094..2b7149ee3 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/DbMaintenance/SqlServerDbMaintenance.cs @@ -321,9 +321,9 @@ namespace SqlSugar #endregion #region Methods - public override List GetIndexList() + public override List GetIndexList(string tableName) { - return this.Context.Ado.SqlQuery("SELECT name FROM sys.indexes WHERE objectproperty(object_id, 'IsUserTable') = 1"); + return this.Context.Ado.SqlQuery($"SELECT indexname = i.name FROM sys.indexes i\r\nJOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id\r\nJOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id\r\nWHERE i.object_id = OBJECT_ID('{tableName}')"); } public override List GetProcList(string dbName) { diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs index 635de62ce..3d78bd248 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/DbMaintenance/SqliteDbMaintenance.cs @@ -258,9 +258,9 @@ namespace SqlSugar #endregion #region Methods - public override List GetIndexList() + public override List GetIndexList(string tableName) { - var sql = $"SELECT name FROM sqlite_master WHERE type='index'"; + var sql = $"PRAGMA index_list('{tableName}');"; return this.Context.Ado.SqlQuery(sql); } public override void AddDefaultValue(EntityInfo entityInfo)