sijms / go-ora

Pure go oracle client
MIT License
771 stars 169 forks source link

Panic in QueryRowContext when calling a request with an error #505

Closed blackhawk-skat closed 6 months ago

blackhawk-skat commented 6 months ago

If a SQL query fails due to an Oracle error, the program panics: panic: runtime error: invalid memory address or nil pointer dereference test_ora_err.go.txt

sijms commented 6 months ago

this is the code for database/sql

package main

import (
    "context"
    "database/sql"
    "fmt"
    _ "github.com/sijms/go-ora/v2"
    "os"
)

func main() {
    db, err := sql.Open("oracle", os.Getenv("DSN"))
    if err != nil {
        fmt.Println("can't open db: ", err)
        return
    }
    defer func() {
        err = db.Close()
        if err != nil {
            fmt.Println("Can't close db: ", err)
        }
    }()
    ctx := context.Background()
    rData := db.QueryRowContext(ctx, `select dummy, min(dummy) from dual where 1 = 1`, nil)
    //rData := conn.QueryRowContext(ctx, `select 1 from dual where 1 = 1`, nil)
    err = rData.Err()
    if err != nil {
        fmt.Println("Query error: ", err)
        return
    }

}

this is the result

Query error:  ORA-00937: not a single-group group function
sijms commented 6 months ago

I fix it. for direct code without sql/database

sijms commented 6 months ago

fixed in v2.8.7