Your Question

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    PrepareStmt: true, 
})

newDb := db.Session(&gorm.Session{
        PrepareStmt: false,
})

db.Session set PrepareStmt: false is invalid,newDb PrepareStmt is still true

The document you expected this should be explained

Performance - GORM - The fantastic ORM library for Golang, aims to be developer friendly.

Expected answer

I think newDb PrepareStmt should is false

Comment From: Mr-houzi

add: 1. version 1.22.4; 2. I find it https://github.com/go-gorm/gorm/blob/e5894ca44951fecc3b3f31f1aa46df7de6024b04/gorm.go#L244-L255

Comment From: li-jin-gou

hello @Mr-houzi you can look this doc https://gorm.cn/docs/session.html#PrepareStmt

Comment From: Mr-houzi

hello @Mr-houzi you can look this doc https://gorm.cn/docs/session.html#PrepareStmt

I looked it。

case 1

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    PrepareStmt: false,  // look it
})

newDb := db.Session(&gorm.Session{
        PrepareStmt: true,
})

case 2

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    PrepareStmt: true, 
})

newDb := db.Session(&gorm.Session{
        PrepareStmt: false,
})

case 1 is valid, (PrepareStmt from false to true), case 2 is invalid (PrepareStmt from true not to false) @li-jin-gou

Comment From: li-jin-gou

@Mr-houzi the same issue is https://github.com/go-gorm/gorm/issues/4991