perf: add a bounded paged query cursor

Ouverte
#399 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
28/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
Active
Stack technique
cpp, javascript, react-native, sqlite

Piste de recherche

Start by locating the eager query implementation and the prepared-statement and connection lifecycle code, then read related issues #30, #62, and #389. Define the cursor ownership and cleanup behavior before implementing it. Done means bounded paging, explicit close, the listed lifecycle and concurrency tests, WAL cleanup documentation, and a large-result time-to-first-page and memory comparison.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

area:api area:runtime enhancement

Ordinary queries step every row and retain the complete result before returning it. Large SELECTs can hold the native result and its JavaScript conversion at once, so a caller that processes rows in batches still pays for the full result. The positional storage in #389 lowers per-row overhead but does not bound the number of retained rows.

Add an opt-in asynchronous cursor that returns a limited page of rows per request and continues stepping the same prepared statement on demand. Give callers an explicit close operation; finalization on garbage collection should be a fallback. The cursor must own its connection and statement safely across queued work, close, errors, and transaction completion. Define whether it uses a dedicated independent read connection or blocks other work on its connection while active.

Test early close, an empty result, page boundaries, metadata, BLOB lifetime, concurrent writes, and close with a page request pending. An open SQLite reader can hold a WAL snapshot and delay checkpoints, so document that cost and verify cleanup. Compare time to first page and peak memory with the eager API on a large result. Application code can use bounded keyset queries today; this issue is for a library-managed cursor.

Related: #30, #62, #389.

Langage dominant
C
Étoiles
582
Forks
53
Merge moyen
1 j 17 h
PR mergées (30 j)
10

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de margelo/react-native-nitro-sqlite

Toutes les issues de margelo/react-native-nitro-sqlite

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.