[Bug]: aggregate_records (MCP) generates an invalid default ORDER BY SUM(<raw column>) against the grouped derived table on dwsql (Microsoft Fabric Warehouse) → Invalid column name
维护者通常 1 天内回复
@souvikghosh04 已经在做这个了。
开始于 2026年7月7日。
评估
这个 Issue 还没有评估数据。
描述
What happened?
Summary
When calling the MCP aggregate_records tool with a numeric aggregate (sum/avg/min/max) plus groupby against a dwsql data source (Microsoft Fabric Warehouse), DAB emits a query whose outer default ORDER BY re-applies the aggregate over the pre-aggregation raw column (e.g. ORDER BY SUM([alias].[amount]) DESC). The outer query's FROM is the grouped derived table, which only exposes the group-by columns and the aliased aggregate ([sum_amount]), not the raw column [amount]. SQL Server therefore fails name resolution with:
Msg 207, Level 16, State 1: Invalid column name 'amount'.
The inner grouped subquery is correct; only the auto-generated outer ORDER BY is wrong. As a result, sum/avg aggregations via MCP are unusable on Fabric Warehouse.
Environment
- Data API builder: 2.0.9 (
Microsoft.DataApiBuilder 2.0.9) — also reproduced on 2.0.8 - Data source
database-type:dwsql - Backend: Microsoft Fabric Warehouse (SQL analytics endpoint,
*.datawarehouse.fabric.microsoft.com) - Surface: MCP SQL Server (
runtime.mcp), toolaggregate_records - Entity: a
view(dbo.my_view) withkey-fieldsdefined - OS: Windows 11
Configuration (relevant excerpt)
All object names, column names, and connection-string names below are synthetic and minimized for reproduction. The permission setting is also a minimal sample for reproduction only.
{
"data-source": {
"database-type": "dwsql",
"connection-string": "@env('my-connection-string')",
"options": { "set-session-context": false }
},
"runtime": {
"mcp": {
"enabled": true,
"path": "/mcp",
"dml-tools": {
"describe-entities": true,
"read-records": true,
"aggregate-records": true
}
}
},
"entities": {
"my_view": {
"source": { "object": "dbo.my_view", "type": "view", "key-fields": ["id"] },
"permissions": [ { "role": "anonymous", "actions": [ { "action": "read" } ] } ]
}
}
}
Repro steps
- Point DAB (
database-type: dwsql) at a Fabric Warehouse and expose a view with a numeric column (hereamount) and a string column (category). - Start DAB:
dab start --LogLevel Debug. - Call the MCP
aggregate_recordstool:
{
"method": "tools/call",
"params": {
"name": "aggregate_records",
"arguments": {
"entity": "my_view",
"function": "sum",
"field": "amount",
"groupby": ["category"]
}
}
}
- The call fails with
InternalServerError: Invalid column name 'amount'.
Note: passing an explicit
orderby(e.g.["category asc"]) does not change the generated SQL — the broken defaultORDER BY SUM(<raw column>) DESCis still emitted, so there is no client-side workaround.
Actual generated SQL (from --LogLevel Debug)
SELECT COALESCE('['+STRING_AGG('{'+N'"category":' + ISNULL('"'+STRING_ESCAPE([category],'json')+'"','null')+', '+N'"sum_amount":' + ISNULL(STRING_ESCAPE(CONVERT(NVARCHAR(MAX), [sum_amount]),'json'),'null')+'}',', ')+']','[]')
FROM (
SELECT TOP 101
[dbo_my_view].[category] AS [category],
sum([dbo_my_view].[amount]) AS [sum_amount]
FROM [dbo].[my_view] AS [dbo_my_view]
WHERE 1 = 1
GROUP BY [dbo_my_view].[category]
) AS [dbo_my_view]
ORDER BY SUM([dbo_my_view].[amount]) DESC -- <-- invalid: [amount] is not a column of the derived table
The derived table aliased [dbo_my_view] only exposes [category] and [sum_amount]. The outer ORDER BY SUM([dbo_my_view].[amount]) references the raw, pre-aggregation column [amount], which does not exist at that scope → Invalid column name 'amount'.
Expected behavior
The default ordering should reference the projected aggregate alias, not re-aggregate the raw column in the outer scope:
) AS [dbo_my_view]
ORDER BY [sum_amount] DESC
(Equivalently, DAB should either order by the aliased aggregation output or omit the default ORDER BY when the client did not request one.)
Additional context / scoping
read_recordson the same entity and the same column (SELECT amount ...) works correctly — the column and permissions are fine.aggregate_recordswithfunction: "count",field: "*"works (it does not reference a raw measure column).- Only the numeric aggregates (
sum/avg/min/max) withgroupbyfail, and the failure is entirely in the auto-generated outerORDER BY. - Running the intended query by hand against the Warehouse (grouped subquery +
ORDER BY [sum_amount]) succeeds, confirming the issue is the generated SQL, not the data/schema/permissions. - This looks related to the
dwsqlquery builder's default order-by generation for aggregations (cf. previous fix "failing MCP aggregate_records tool caused by groupby default value", #3294).
Error detail
fail: Azure.DataApiBuilder.Core.Resolvers.IQueryExecutor[0]
Query execution error due to:
Invalid column name 'amount'.
Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'amount'.
at Azure.DataApiBuilder.Core.Resolvers.QueryExecutor`1.ExecuteQueryAgainstDbAsync[TResult](...) in /_/src/Core/Resolvers/QueryExecutor.cs:line 296
Error Number: 207, State: 1, Class: 16
Version
2.0.9
What database are you using?
Azure SQL (dwsql(Microsoft Fabric Warehouse))
What hosting model are you using?
Local (including CLI)
Which API approach are you accessing DAB through?
MCP
Code of Conduct
- I agree to follow this project's Code of Conduct
- 主要语言
- C#
- 星标
- 1.5k
- 派生
- 372
- 平均合并
- 9 天 2 小时
- 30 天内合并 PR
- 10
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Azure/data-api-builder 的其他 Issue
-
pgsql
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3598 ·
维护者通常 1 天内回复
-
2.x cli mcp-server
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3576 ·
维护者通常 1 天内回复
-
2.x health-endpoint
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3570 ·
维护者通常 1 天内回复
-
2.x telemetry
难度 2/5 1-3 小时 新手友好度 68/100
Azure/data-api-builder#3564 ·
维护者通常 1 天内回复
-
2.x telemetry
难度 2/5 1-3 小时 新手友好度 70/100
Azure/data-api-builder#3562 ·
维护者通常 1 天内回复
查看 Azure/data-api-builder 的全部 Issue
相似的 Issue
-
area-System.Numerics.Tensors untriaged
难度 2/5 1-3 小时 新手友好度 78/100
dotnet/runtime#134691 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
unoplatform/uno.templates#2277 ·
维护者通常 5 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
microsoft/fluentui-blazor#5344 · 1 条评论 ·
维护者通常 1 天内回复
-
difficulty/starter 🚀 good first issue kind/bug platform/all project/core-tools 🛠️ triage/untriaged
难度 2/5 1-3 小时 新手友好度 88/100
unoplatform/uno#24757 ·
维护者通常 1 天内回复
-
ci-failure-cause test-failure
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复