Executing a Broken Statement Causes a Hang
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
Ejecuta la reproducción proporcionada en main.go y rastrea los puntos de entrada sqlitepool.NewPool, BeginTx y transaction.Exec. Determina por qué una sentencia no válida dentro de una transacción no retorna y verifica la corrección confirmando que el ejemplo informa de un error en lugar de quedar bloqueado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi,
whenever you try to execute an invalid statement in a transaction an error isn't returned (nor a panic thrown) the program just hangs.
I'd initially noticed this when inserting twice into a table that expected a column to be unique assuming I'd see an error but instead the program just hung.
this does not seem to be directly related to the unique constraint, it seems to happened with any invalid statement; even if they aren't valid SQL.
here's a example:
package main
import (
"context"
"log"
"github.com/tailscale/sqlite/sqliteh"
"github.com/tailscale/sqlite/sqlitepool"
)
var db *sqlitepool.Pool
func init() {
var err error
db, err = sqlitepool.NewPool("file:./db.sqlite", 10, func(init sqliteh.DB) error { return nil }, nil)
if err != nil {
panic(err)
}
}
func main() {
defer db.Close()
transaction, err := db.BeginTx(context.Background(), "")
if err != nil {
panic(err)
}
log.Println("executing invalid statement")
err = transaction.Exec("this should throw an error")
if err != nil {
panic(err)
}
log.Println("done")
err = transaction.Commit()
if err != nil {
panic(err)
}
}
running this program yields the following then hangs forever:
% go run main.go
2023/03/01 22:43:26 executing invalid statement
- Lenguaje dominante
- C
- Estrellas
- 225
- Forks
- 11
- Merge medio
- 20 min
- PR fusionados (30 d)
- 2
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de tailscale/sqlite
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
-
This vs. crawshaw.io/sqlite? Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Todos los issues de tailscale/sqlite
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
level/task module/gcp type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
-
Build failure with newer clang Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
hapostgres/pg_auto_failover#1190 ·
-
docs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
P3 sonic-vpp
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
sonic-net/sonic-buildimage#29662 ·