mirror of
https://github.com/apache/superset.git
synced 2026-04-18 23:55:00 +00:00
fix(table): use column label instead of SQL expression for orderby in downloads (#39332)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
8471e82342
commit
b3e88db87e
@@ -238,12 +238,11 @@ const buildQuery: BuildQuery<TableChartFormData> = (
|
||||
});
|
||||
|
||||
if (matchingColumn) {
|
||||
if (
|
||||
typeof matchingColumn === 'object' &&
|
||||
'sqlExpression' in matchingColumn
|
||||
) {
|
||||
return matchingColumn.sqlExpression;
|
||||
}
|
||||
// Return the label, not the raw sqlExpression. The backend
|
||||
// (helpers.py get_sqla_query) resolves orderby strings by
|
||||
// matching adhoc column labels, then uses adhoc_column_to_sqla
|
||||
// to emit the actual SQL expression into ORDER BY — so this
|
||||
// is dialect-safe across all database engines.
|
||||
return getColumnLabel(matchingColumn);
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ describe('plugin-chart-ag-grid-table', () => {
|
||||
},
|
||||
).queries[0];
|
||||
|
||||
expect(query.orderby).toEqual([['degree_type', true]]);
|
||||
expect(query.orderby).toEqual([['Highest Degree', true]]);
|
||||
});
|
||||
|
||||
test('should map string metric colId to backend identifier', () => {
|
||||
@@ -267,6 +267,25 @@ describe('plugin-chart-ag-grid-table', () => {
|
||||
]);
|
||||
});
|
||||
|
||||
test('should use label (not sqlExpression) for adhoc column in CSV export sortModel', () => {
|
||||
const adhocColumn = createAdhocColumn('sales / 100', 'Margin');
|
||||
|
||||
const query = buildQuery(
|
||||
{
|
||||
...basicFormData,
|
||||
groupby: [adhocColumn],
|
||||
result_format: 'csv',
|
||||
},
|
||||
{
|
||||
ownState: {
|
||||
sortModel: [{ colId: 'Margin', sort: 'desc' }],
|
||||
},
|
||||
},
|
||||
).queries[0];
|
||||
|
||||
expect(query.orderby?.[0]).toEqual(['Margin', false]);
|
||||
});
|
||||
|
||||
test('should not add tie-breaker for non-download queries with server pagination', () => {
|
||||
const query = buildQuery(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user