From 22a3549de0450af293e135b39d685a442e28440b Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Mon, 5 Jul 2021 15:30:33 +0300 Subject: [PATCH] CB-1020 Resultset ordering fix --- .../dbeaver/model/data/DBDAttributeConstraint.java | 11 +++++++++++ .../src/org/jkiss/dbeaver/model/sql/SQLUtils.java | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) 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 2464607a9a..61a34f7225 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 @@ -37,6 +37,7 @@ public class DBDAttributeConstraint extends DBDAttributeConstraintBase { private DBSAttributeBase attribute; private String attributeName; private int originalVisualPosition; + private boolean plainNameReference; // Disables ordering by column index public DBDAttributeConstraint(@NotNull DBDAttributeBinding attribute) { setAttribute(attribute); @@ -90,6 +91,15 @@ public class DBDAttributeConstraint extends DBDAttributeConstraintBase { return originalVisualPosition; } + // Disables ordering by column index + public boolean isPlainNameReference() { + return plainNameReference; + } + + public void setPlainNameReference(boolean plainNameReference) { + this.plainNameReference = plainNameReference; + } + @Override public boolean hasFilter() { return super.hasFilter() || // compare visual position only if it explicitly set @@ -142,4 +152,5 @@ public class DBDAttributeConstraint extends DBDAttributeConstraintBase { return isVisible() == constraint.isVisible() && getVisualPosition() == constraint.getVisualPosition() && Arrays.equals(getOptions(), constraint.getOptions()); } + } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java index d82c36bd6c..df27424258 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/sql/SQLUtils.java @@ -486,7 +486,7 @@ public final class SQLUtils { for (DBDAttributeConstraint co : filter.getOrderConstraints()) { if (hasOrder) query.append(','); String orderString = null; - if (co.getAttribute() == null || co.getAttribute() instanceof DBDAttributeBindingMeta || co.getAttribute() instanceof DBDAttributeBindingType) { + if (co.isPlainNameReference() || co.getAttribute() == null || co.getAttribute() instanceof DBDAttributeBindingMeta || co.getAttribute() instanceof DBDAttributeBindingType) { String orderColumn = co.getAttributeName(); if (co.getAttribute() == null || PATTERN_SIMPLE_NAME.matcher(orderColumn).matches()) { // It is a simple column. -- GitLab