Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Reject or preserve literal RefProxy semantics in remote subset wire

未关闭
#2,187 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
sqlite, typescript
领域
database

调研方向

Start in packages/db-sqlite-persistence-core/src/remote-subset-wire.ts, where projectWireValue handles IR.Value.value and its plain-record branch turns a literal RefProxy into {}. Read docs/contributing/oracle-reviews/pr-2134-identity-and-persisted-key.md for the context. The contract must be decided first, probably rejecting with RemoteSubsetWireValueError, and then a receiving oracle case must be added to show the outcome.

由索引模型根据 Issue 内容生成。

描述

Problem

The managed SQLite remote-subset wire accepts a literal RefProxy in an IR.Value, but projects it to {}. A predicate whose literal has reference identity then reaches the provider with different semantics. This is separate from PR #2134's query-identity and historical-owner repairs.

packages/db-sqlite-persistence-core/src/remote-subset-wire.ts calls projectWireValue for IR.Value.value. Its plain-record branch sees the proxy's empty enumerable shape and emits {}. The package's stated wire domain is values whose complete semantics survive transport; an opaque reference proxy does not meet that rule.

During PR #2134's real SQLite receiving attempt, a proxy captured through public Collection.createIndex reached this path, and the provider received {}. Object.is(originalProxy, projectedValue) was false. A row with the projected value therefore cannot establish ownership for the original literal-proxy demand. The attempted row-bearing upgrade witness was removed rather than counted as passing; the limitation is recorded in docs/contributing/oracle-reviews/pr-2134-identity-and-persisted-key.md.

Expected follow-up

Decide the wire contract for opaque literal values. A defensible default is to reject the request with RemoteSubsetWireValueError before coordinator or storage work, since cross-process transport cannot preserve the proxy's reference identity. Add a receiving oracle case using a proxy from the same public @tanstack/db package instance as Query Collection; compare admission, provider requests, and storage work. If the intended contract instead supports such literals, specify and test the identity-preserving representation first.

This issue does not block the primitive singleton-IN migration covered by PR #2134's real SQLite restart tests. It does block a claim that row-bearing historical literal-proxy ownership was migrated through the managed SQLite path.

主要语言
TypeScript
星标
3.9k
派生
277
平均合并
22 小时 54 分钟
30 天内合并 PR
236

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

TanStack/db 的其他 Issue

查看 TanStack/db 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。