Describe the feature
// globally mode, all DB operations will create prepared statements and cache them
db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
PrepareStmt: true,
})
// disable in session
tx := db.Session(&Session{PrepareStmt: false})
Motivation
Enable globally for performance reason, but in some case we need to disabled for manually build SQL query, this may cause memory leak.
Related Issues
Comment From: ghost
英语不是很好:sob:,这里直接中文回复了, 感觉这里不好改,因为 false 本身就是 bool 类型的 零值 ,这就导致用 false 去判断会出现问题,想过改成 *bool 类型,但是这样属于破坏性变化了。这里可以试着全局关闭,局部打开的方式不知道是否可以?
Comment From: yinheli
确实是的,改动会稍大,可能破坏原有API
Comment From: ghost
确实是的,改动会稍大,可能破坏原有API
可以看下这个文档 https://gorm.io/zh_CN/docs/session.html#%E9%A2%84%E7%BC%96%E8%AF%91
// returns prepared statements manager
stmtManger, ok := tx.ConnPool.(*PreparedStmtDB)
// 关闭 *当前会话* 的预编译模式
stmtManger.Close()