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

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions