rana / ora

An Oracle database driver in Go.
MIT License
271 stars 66 forks source link

v4.1.15 Data chaos bug #270

Open freeman983 opened 4 years ago

freeman983 commented 4 years ago

` package main

import ( "fmt" "gopkg.in/rana/ora.v4" )

/*

CREATE TABLE testB ( userid VARCHAR2(64), sid VARCHAR2(64), addtime DATE )

insert into TESTB (USERID, SID, ADDTIME) values ( 'A2561273', '99', to_date( '2018-10-11 12:18:55', 'YYYY-MM-DD HH:MI:SS' ) )

*/

func main() {

dsn := fmt.Sprintf(
    "%s/%s@%s:%s/%s",
    "u_sqldev", "ofcard025", "172.21.4.253", "1521", "ofdb",
)

env, srv, ses, err := ora.NewEnvSrvSes(dsn)
if err != nil {
    fmt.Printf("初始化连接池失败 => [%s] [%v]", dsn, err)
    return
}

//conPool := env.NewSrvPool(srv.Cfg(), 2)

pool := env.NewPool(srv.Cfg(), ses.Cfg(), 2)

session, err := pool.Get()
if err != nil {

    fmt.Printf("初始化连接池失败1 => [%s] [%v]", "", err)
    return
}

defer session.Close()

//session.PrepAndExe("ALTER SESSION SET CURRENT_SCHEMA=QMUC ")

var i int = 0
for {
    i++
    sql := "select * from QMUC.TB_USER_SCENE_REL where id = '201810110710554057978'"
    result, err := session.PrepAndQry(sql)

    if err != nil {
        return
    }

    for {
        row := result.NextRow()

        if row == nil {
            break
        } else {
            fmt.Println("sid:",i,row[0],row[1], row[2],row[3])
        }
    }

    if i > 100 {
        break
    }

}

}

`

hi, I found serious bugs above v4.1.15,The same row of data, some fields may not get values, The result after my execution is like this

` sid: 1 201810110710554057978 A2561273 99 2018-10-11 19:18:55 +0800 +08:00 sid: 2 201810110710554057978 A2561273 99 sid: 3 201810110710554057978 A2561273 99 sid: 4 201810110710554057978 A2561273 99 sid: 5 201810110710554057978 A2561273 2018-10-11 19:18:55 +0800 +08:00 sid: 6 201810110710554057978 A2561273 99 sid: 7 201810110710554057978 A2561273 99 sid: 8 201810110710554057978 A2561273 99 sid: 9 201810110710554057978 A2561273 99 sid: 10 201810110710554057978 A2561273 99 ...

`

freeman983 commented 4 years ago

ora is the best golang-based oracle driver library I use now, please don't give up !