diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java index 9e54e2dd0ee24c4be2f06bfaab945c2fe0cc3ab1..c256660f04dd5425003607b486cae5bd0caf6250 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/FilterSettingsDialog.java @@ -445,9 +445,15 @@ class FilterSettingsDialog extends HelpEnabledDialog { } else { dataFilter.setWhere(null); } + + boolean filtersChanged = true; + if (dataFilter.equalFilters(resultSetViewer.getModel().getDataFilter(), true)) { + // Only attribute visibility was changed + filtersChanged = false; + } resultSetViewer.setDataFilter( dataFilter, - true); // TODO: refresh data only if filter was changed + filtersChanged); super.okPressed(); } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java index b35a29d568126171648fcd3b2d26d0562b5bb465..bc8144be2fa0371300ce69e56967ce8fd878ead3 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java @@ -1173,7 +1173,7 @@ public class ResultSetViewer extends Viewer // Search in history for (int i = 0; i < stateHistory.size(); i++) { HistoryStateItem item = stateHistory.get(i); - if (item.dataContainer == dataContainer && item.filter != null && item.filter.equalFilters(dataFilter)) { + if (item.dataContainer == dataContainer && item.filter != null && item.filter.equalFilters(dataFilter, false)) { item.filter = dataFilter; // Update data filter - it may contain some orderings curState = item; historyPosition = i; diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeConstraint.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeConstraint.java index 049f78e47dbefbfd8afbeadb536bda71e62f9c31..c95cc55b04c7180534add8a8fe22029dfcf30a8a 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeConstraint.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDAttributeConstraint.java @@ -189,8 +189,14 @@ public class DBDAttributeConstraint { this.visualPosition = originalVisualPosition; } - public boolean equalFilters(DBDAttributeConstraint obj) + public boolean equalFilters(DBDAttributeConstraint obj, boolean compareOrders) { + if (compareOrders) { + if (this.orderPosition != obj.orderPosition || + this.orderDescending != obj.orderDescending) { + return false; + } + } return CommonUtils.equalObjects(this.attribute, obj.attribute) && CommonUtils.equalObjects(this.criteria, obj.criteria) && diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDDataFilter.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDDataFilter.java index 223e561ace4c5a1420a57c7f846d20204332ed98..a53a561bbd60af2b5d8ff725506e77729b5c8dc8 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDDataFilter.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/data/DBDDataFilter.java @@ -251,7 +251,7 @@ public class DBDDataFilter { * @param source object to compare to * @return true if filters equals */ - public boolean equalFilters(DBDDataFilter source) + public boolean equalFilters(DBDDataFilter source, boolean compareOrders) { if (anyConstraint != source.anyConstraint) { return false; @@ -260,7 +260,7 @@ public class DBDDataFilter { return false; } for (int i = 0; i < source.constraints.size(); i++) { - if (!constraints.get(i).equalFilters(source.constraints.get(i))) { + if (!constraints.get(i).equalFilters(source.constraints.get(i), compareOrders)) { return false; } }