CB-6069 grouping panel fix for a complex data type (#3271)

This commit is contained in:
Ainur
2025-02-19 12:42:35 +00:00
committed by GitHub
parent e93a3d1e62
commit bb23a2d587
3 changed files with 17 additions and 3 deletions
@@ -49,7 +49,7 @@ public class WebSQLQueryResultColumn {
@Property
public String getName() {
return attrMeta.getFullyQualifiedName(DBPEvaluationContext.UI);
return WebSQLUtils.getColumnName(attrMeta);
}
@Property
@@ -23,6 +23,7 @@ import io.cloudbeaver.utils.CBModelConstants;
import io.cloudbeaver.utils.ServletAppUtils;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.data.*;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.DBCSession;
@@ -255,4 +256,12 @@ public class WebSQLUtils {
}
return value;
}
/**
* Returns fully qualified name for a column.
*/
@NotNull
public static String getColumnName(@NotNull DBDAttributeBinding binding) {
return binding.getFullyQualifiedName(DBPEvaluationContext.UI);
}
}
@@ -20,6 +20,7 @@ package io.cloudbeaver.service.sql.impl;
import io.cloudbeaver.DBWebException;
import io.cloudbeaver.model.WebAsyncTaskInfo;
import io.cloudbeaver.model.WebConnectionInfo;
import io.cloudbeaver.model.WebTransactionLogInfo;
import io.cloudbeaver.model.session.WebAsyncTaskProcessor;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.service.WebServiceBindingBase;
@@ -42,7 +43,6 @@ import org.jkiss.dbeaver.model.exec.trace.DBCTraceProperty;
import org.jkiss.dbeaver.model.impl.sql.BasicSQLDialect;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import io.cloudbeaver.model.WebTransactionLogInfo;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.sql.*;
import org.jkiss.dbeaver.model.sql.completion.SQLCompletionAnalyzer;
@@ -555,13 +555,18 @@ public class WebServiceSQL implements DBWServiceSQL {
try {
WebSQLResultsInfo resultsInfo = contextInfo.getResults(resultsId);
List<SQLGroupingAttribute> groupingAttributes = Arrays.stream(resultsInfo.getAttributes())
.filter(attr -> columnsList.contains(WebSQLUtils.getColumnName(attr)))
.map(SQLGroupingAttribute::makeBound)
.toList();
var dataSource = contextInfo.getProcessor().getConnection().getDataSource();
var groupingQueryGenerator = new SQLGroupingQueryGenerator(
dataSource,
resultsInfo.getDataContainer(),
getSqlDialectFromConnection(dataSource.getContainer()),
contextInfo.getProcessor().getSyntaxManager(),
columnsList.stream().map(s -> SQLGroupingAttribute.makeCustom(dataSource, s)).toList(),
groupingAttributes,
functions == null ? List.of(SQLGroupingQueryGenerator.DEFAULT_FUNCTION) : functions, // backward compatibility
CommonUtils.getBoolean(showDuplicatesOnly, false));
return groupingQueryGenerator.generateGroupingQuery(resultsInfo.getQueryText());