Ordered loader: a page-capping provider loses a moved row from a joined window after refetch
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 18/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
- Domaine
- databases
Piste de recherche
Start with the pinned it.fails test in packages/query-db-collection/tests/refetch-ordered-prefix-oracle.test.ts, which encodes the eight-step history against a provider with pageCap 2. Run it to see the failure 'window after refetch at step 3 was []; expected [7]', then trace where the ordered loader's repair path treats a short page as exhaustion. Read PR #2154 on branch fix-query-db-refetch-ordered-gap first. Done when the test passes without the it.fails marker and the refetch oracle's generated scenarios accept pageCap.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
With a provider that returns fewer rows than a request's limit (a page cap), an on-demand joined ordered window can lose a row after a refetch. The row's order changed, and the loader's own repair drops it. A short reply does not prove that the source is exhausted (glossary), so the loader must keep reading.
Reproduction
The pinned witness is a capped provider keeps a moved row in the window after a refetch (known loader defect) in packages/query-db-collection/tests/refetch-ordered-prefix-oracle.test.ts (branch fix-query-db-refetch-ordered-gap, PR #2154). It is an it.fails test today.
- Provider: cursor encoding,
pageCap: 2. - Query:
rank desc,offset 1,limit 2, LEFT-joined marker filter. - Initial rows: id 0 (rank 1, marked), id 1 (rank 0, unmarked).
- History:
- Mark id 7.
- Upsert id 2 at rank 1.
- Upsert id 7 at rank 0.
- Refetch.
- Delete id 3.
- Invalidate.
- Upsert id 3 at rank 1.
- Upsert id 0 at rank 0.
Failure: window after refetch at step 3 was []; expected [7].
Scope
This reproduces on main, through the loader's own repair. It is separate from #2136. The query-db refetch oracle's generated campaigns use an uncapped provider because of this defect. A page-capped trace together with a peer live query also fails (found while #2154 was reviewed). That trace fails the same way with the loader's first-page skip disabled.
Suggested witness and owner
- Owner: the ordered loader. The repair and continuation path must treat a short page as "not exhausted".
- Witness: flip the pinned
it.failstest, then addpageCapto the query-db refetch oracle's generated scenario.
This issue was written by Isaac.
- Langage dominant
- TypeScript
- Étoiles
- 3.9k
- Forks
- 272
- Merge moyen
- 22 h 54 min
- PR mergées (30 j)
- 236
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de TanStack/db
-
Difficulté 4/5 3-5 jours Accessibilité débutants 22/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 12/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 8/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 5/100
TanStack/db#2186 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de TanStack/db
Issues similaires
-
`cf complete zsh >> .zshrc` fails on vanilla zshPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
cloudflare/cf#340 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Rename Madson cameraOuverte
Difficulté 2/5 Moins d'une heure Accessibilité débutants 75/100
StoDevX/AAO-React-Native#8785 ·
Les mainteneurs répondent en général sous 1 jour
-
Broken links in the docsOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 75/100
-
bnv-manager-v2: accept_invite creates the Mailcow domain admin before the commitPeut-être pris @myOmikron l’a pris aujourd’hui. Ouvertebug ready-for-agent
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100