AnswerDotAI / AnswerDotAI/sqlite-minutils
With manual transactions, race conditions on `last_insert_rowid()` need to be accounted for
- Langage dominant
- Python
- Étoiles
- 17
- Forks
- 9
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
## Race condition scenario with new configuration:
```python
# pseudocode
# We insert the record here!
db.insert(...)
# ! Record adding in different process increments the ROWID by another one
# Let's see the last PK, but now it's been incremented 0-to-many times
print(db.last_pk)
```
## Probably not a fix
```python
db.begin()
db.insert(...)
print(db.get_last_rowid()) # Not necessarily the record
db.commit()
```
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par suivre les points d’entrée db.insert, db.last_pk et db.get_last_rowid décrits dans l’issue, puis examinez comment les transactions manuelles interagissent avec les processus concurrents. Reproduisez l’entrelacement montré dans le pseudocode et établissez le comportement attendu de la clé primaire avant de décider ce que devrait couvrir un correctif ou un test complet.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python, sqlite
- Domaine
- databases
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100