Skip to content

[finding] isMissingSourceError 仍把 Postgres 的「缺列」措辞 column "c" of relation "t" does not exist 判为「缺源」——文档明说不该,今天靠读路径不产生该措辞而无害 #6035

Closed

Description

@hotlong

观察(#5717 落地过程中量出的残留,非 #5717 范围)

packages/services/service-analytics/src/analytics-service.ts 的 isMissingSourceError 自己的文档写着:

Deliberately scoped to MISSING SOURCE (table/object/relation) — not column/syntax errors, which stay hard failures so real query bugs still surface.

但 Postgres 的缺列措辞里含有一段完整的缺表措辞:

column "label" of relation "acct" does not exist

relation "acct" does not exist 是它的子串,所以:

命中的后果与 #5717 描述的一致:missingSourceRelation 会把 acct 当成「缺失的关系」,于是要么降级成空网格(若 acct 就是 dataset 自己的 object),要么报成跨库拓扑错误(若是 join 表)——两者都不是真相,真相是一个列名写错了,正是文档说要让它响亮失败的那一类。

为什么今天无害(observation 类)

analytics 是只读面。Postgres 在 SELECT 里遇到未知列说的是 column "bogus_dim" does not exist(不含 relation,不命中);column … of relation … does not exist 是 INSERT/UPDATE/ALTER 的措辞,dataset 查询路径不产生它。所以这是一条「判据比文档宽」的静默残留,不是今天有人踩得到的缺陷。

量化(#5717 的 13 条仓内真实措辞语料):收紧前后该串均为 HIT,是 13 条里唯一一条「判据与自身文档不一致」的。

可能的方向(不预判,留给 triage)

参考

Activity

  1. claude commented on Aug 6, 2026

    @claude
    Contributor

    发现分诊轮(#4949 纪律):晋级 pm:queue,摘 finding。域维持 domain:services。

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. self-assigned this
    on Aug 7, 2026
  3. hotlong commented on Aug 7, 2026

    @hotlong
    ContributorAuthor

    认领:PM 循环第 8 轮(补位;同文件串行前提 #5918→PR #6292 已 MERGED,解除)
    会话:session_015a5qkLzpGXhLL2F5gvJ7dD
    分支:claude/issue-6035-column-phrase-missing-source
    Worktree:objectstack-6035
    域:domain:services
    文件面:packages/services/service-analytics/src/analytics-service.ts(isMissingSourceError :96 的宽判据本体——分诊事实修正:#5717 的收紧落在 :125 的 missingSourceRelation 正则,宽判据仍在服役,修法要动 :96)+ 测试

    修法照分诊钉死:抄 packages/rest/src/rest-server.ts:825 的两步法先例(先摘 column … of relation … does not exist 缺列措辞、再判缺表),让缺列保持硬失败(与函数自身文档一致);派前条件已核:#5717 方向 A(驱动侧结构化 code)无开放单/在飞,无并入对象。⚠️ 该文件今日已被 #6292(dotted measure)触及,基于当前 origin/main。


    Generated by Claude Code

  4. hotlong commented on Aug 7, 2026

    @hotlong
    ContributorAuthor

    ACCEPT → PR #6346(draft 转 ready + auto-merge)。

    先更正本座位派发令里的一处过时前提(dev 用测量推翻,公开留档):我在认领贴里照抄了分诊评论的「事实修正——:96 宽判据仍在服役,修法要动 :96」。该判读基于 origin/main 9e3709a,而 #5717 的实现 PR #6045 在其后合并,已把 isMissingSourceError 的 postgres 支收紧为锚定正则 ⇒ 该前提今天不成立。真正的落点是判定顺序:column "c" of relation "t" does not exist 字面上就是合法缺表措辞的超串,任何形式的「收紧」都排除不掉它,只有先问更具体的问题(先摘缺列)才行。派发令按旧前提写,dev 未照单执行而是先测再改——正确做法。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions