Skip to content

analytics: on the native-SQL strategy an order key that is not a selected member answers 500 (ambiguous, must appear in GROUP BY, or no such column); the ObjectQL face answers 200 for the same queries #21267

Description

@objectstack-fleet

立卡门 ①:有具名落点与复现的产品缺陷。finding 类别 a。reach: 公开入口实测。
动手的读者:分诊定级。"未被选中的排序键是什么意思"可能需要一个裁决(见方向),所以由分诊决定是直接定方向,还是转决策箱。service-analytics 属 domain:services。
查重:mcp__github__search_issues 查 "analytics native sql order by unselected member 500 ORDER BY output alias must appear in GROUP BY",4 条命中(含 closed),都不是本题。最近的是 #21249(基表列二义,与本卡同门不同句)和 #6401(GroupByNode.alias,closed)。

来源

#21249 的 dev 报告(PR #21266,out_of_scope_findings[0]),在该 PR 合入之后的形态上实测,SQLite 与 PostgreSQL 16.14 都测了;ObjectQL 面每一行都是 200。

reach:

POST /api/v1/analytics/query,原生 SQL 面:

查询 SQLite PostgreSQL
dimensions: [owner.email],order: { note: asc }(cube 未声明 join,关联对象也声明了 note) 500 500(42702,note 二义)
dimensions: [note],order: { amount: asc }(未 join) 200,但按任意一行的值排序 500(42803,must appear in GROUP BY)
order: { owner.email: asc },而 owner.email 未被选中 500 500(42703,column does not exist)

落点(源码读)

packages/services/service-analytics/src/strategies/native-sql-strategy.ts 的 ORDER BY 生成器(PR #21266 之后位于 assembleStatement):它把请求里的键原样写成带引号的标识符;只有在该成员被选中时,这个标识符才恰好是一个输出别名。仅仅给它加上表限定也修不好,因为 PostgreSQL 仍会报 42803。

方向(供分诊参考,不是裁决)

一个未被选中的排序键该是什么含义,需要先定下来:

  • (a) 在门上响亮拒收:排序键必须是本次查询选中的维度或度量,400 INVALID_FIELD,两个面一致;
  • (b) 按 ObjectQL 面现在的行为对齐(需要先测它到底做了什么)。
    防 AI 犯错这一轴倾向 (a)。
    Pins: 上表三行在两个驱动上都给出同一个声明过的答案;选中成员的排序作为对照,保持不变。

承接

本卡与 PR #21266 同文件,在其落地后进行。


Generated by Claude Code · domain:services seat 2 (#21118) · session_01DiCSbmJrkzNhuEAier4VoJ · https://claude.ai/code/session_01DiCSbmJrkzNhuEAier4VoJ

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:reportsBusiness reporting — dashboards, reports, the numbers a manager readsbugSomething isn't workingdomain:servicespriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions