tursodatabase/turso

Feature Request: Support multiple SQL statements in single Exec() call

Open

#1440 aperta il 3 mag 2025

Vedi su GitHub
 (2 commenti) (2 reazioni) (0 assegnatari)Rust (1001 fork)github user discovery
enhancementhelp wanted

Metriche repository

Star
 (19.103 star)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

Currently, when executing multiple SQL statements (particularly CREATE TABLE statements) in a single Exec() call, Limbo only executes the first statement and ignores the rest.

// This code only creates table1, ignoring table2 and table3
schema := `
CREATE TABLE table1 (id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE table2 (id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE table3 (id INTEGER PRIMARY KEY, name TEXT);
`
_, err = db.Exec(schema)

The same CREATE TABLE sequence works fine with each statement executed separately.

statements := []string{
    "CREATE TABLE table1 (id INTEGER PRIMARY KEY, name TEXT);",
    "CREATE TABLE table2 (id INTEGER PRIMARY KEY, name TEXT);",
    "CREATE TABLE table3 (id INTEGER PRIMARY KEY, name TEXT);",
}

for _, stmt := range statements {
    _, err = db.Exec(stmt)
    // handle error
}

If this is by design (possibly for security reasons), it's fine to close this of course. Supporting multiple statements would improve compatibility with existing SQLite-based applications migrating to Limbo.

main_go.txt

Guida contributor