Skip to content

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

Description

@hotlong

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

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

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 existINSERT/UPDATE/ALTER 的措辞,dataset 查询路径不产生它。所以这是一条「判据比文档宽」的静默残留,不是今天有人踩得到的缺陷。

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

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

参考

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions