从 #6212 的测量棒中带出(基线 d367f03d6)。不是类型冗余,是具体缺陷,故独立立单而非压在 #6212 的观察清单下。
事实
同名方法,第三参要的东西不一样:
| 驱动 |
签名 |
方法体怎么读 |
driver-memory/src/memory-driver.ts:612 |
distinct(object, field, query?: QueryInput) |
读 query.where(要 query 信封) |
driver-sql/src/sql-driver.ts:3481 |
distinct(object, field, filters?: any) |
直接 applyFilters(builder, filters)(要裸 filter) |
两边的测试自己就是证据:memory-driver.test.ts:310 传 { object, where: {...} };sql-driver-advanced.test.ts:393 与 sqlite-wasm-driver-advanced.test.ts:382 传 { status: 'completed' }。
运行期实测(built driver-memory,三行:Laptop/Mouse 为 completed、Ghost 为 pending)
memory.distinct envelope {object,where}: ["Laptop","Mouse"]
memory.distinct bare filter {status} : ["Laptop","Mouse","Ghost"]
memory.distinct no filter : ["Laptop","Mouse","Ghost"]
bare === unfiltered (SILENT PASS-THROUGH)? true
把 SQL 那一面的写法交给 memory:不报错、不告警,直接返回未过滤的全集。方向是放宽 —— 一个本意「按条件去重取值」的调用拿到了全部值。
为什么今天没炸
distinct 的非测试生产者为零(全仓实测),所以是休眠缺陷。但它与 #5234 刚更正过的那类同形:「静默错答案」在没有对抗性 fixture 时不会被任何测试看见。
处置线索(不代裁)
关联:#6212(测量棒出处)、#5234(同族「静默错答案」且严重度曾被低估)、#5499(冻结令)、#5181/#6075(签名收窄程序)。
从 #6212 的测量棒中带出(基线
d367f03d6)。不是类型冗余,是具体缺陷,故独立立单而非压在 #6212 的观察清单下。事实
同名方法,第三参要的东西不一样:
driver-memory/src/memory-driver.ts:612distinct(object, field, query?: QueryInput)query.where(要 query 信封)driver-sql/src/sql-driver.ts:3481distinct(object, field, filters?: any)applyFilters(builder, filters)(要裸 filter)两边的测试自己就是证据:
memory-driver.test.ts:310传{ object, where: {...} };sql-driver-advanced.test.ts:393与sqlite-wasm-driver-advanced.test.ts:382传{ status: 'completed' }。运行期实测(built driver-memory,三行:Laptop/Mouse 为 completed、Ghost 为 pending)
把 SQL 那一面的写法交给 memory:不报错、不告警,直接返回未过滤的全集。方向是放宽 —— 一个本意「按条件去重取值」的调用拿到了全部值。
为什么今天没炸
distinct的非测试生产者为零(全仓实测),所以是休眠缺陷。但它与 #5234 刚更正过的那类同形:「静默错答案」在没有对抗性 fixture 时不会被任何测试看见。处置线索(不代裁)
sql.distinct第三参的正确类型是裸 filter:实测FilterCondition对 sql / sqlite-wasm 三处调用点零报错,是现成的收窄目标;关联:#6212(测量棒出处)、#5234(同族「静默错答案」且严重度曾被低估)、#5499(冻结令)、#5181/#6075(签名收窄程序)。