perf: add a bounded paged query cursor
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 28/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Attiva
- Stack tecnologico
- cpp, javascript, react-native, sqlite
- Ambito
- databases, mobile-dev, performance
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- C
- Stelle
- 580
- Fork
- 53
- Merge medio
- 1g 19h
- PR unite (30g)
- 68
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di margelo/react-native-nitro-sqlite
-
area:api area:runtime enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
margelo/react-native-nitro-sqlite#402 ·
I maintainer di solito rispondono entro 1 giorno
-
area:api area:runtime enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
margelo/react-native-nitro-sqlite#401 ·
I maintainer di solito rispondono entro 1 giorno
-
area:api area:runtime enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
margelo/react-native-nitro-sqlite#400 ·
I maintainer di solito rispondono entro 1 giorno
-
area:api area:runtime enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
margelo/react-native-nitro-sqlite#398 ·
I maintainer di solito rispondono entro 1 giorno
-
area:api area:runtime enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 48/100
margelo/react-native-nitro-sqlite#397 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di margelo/react-native-nitro-sqlite
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
fluent/fluent-bit#12579 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
obsproject/obs-studio#14036 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100