yoke_snowwolf
  • Joined on 2020-09-18
yoke_snowwolf opened issue xorm/xorm#1910 2021-05-24 13:35:51 +00:00
Session.Count 在有 group by 时处理的问题
yoke_snowwolf opened issue xorm/xorm#1909 2021-05-24 12:55:33 +00:00
TableNameNoSchema ORACLE 处理错误
yoke_snowwolf commented on issue xorm/xorm#1837 2021-05-17 12:10:38 +00:00
能否考虑支持达梦

兄弟请问这个什么情况了~~

这里把文档补一下

yoke_snowwolf commented on issue xorm/xorm#1837 2020-12-11 11:53:59 +00:00
能否考虑支持达梦

可以安装最新版本的达梦数据库开发版,安装目录下 drivers\go\dm-go-driver.zip 压缩包, 这里我先直接上传一份到附件,可以先参考下。

yoke_snowwolf opened issue xorm/xorm#1837 2020-11-27 12:49:12 +00:00
能否考虑支持达梦
yoke_snowwolf commented on issue xorm/xorm#1798 2020-09-23 06:25:52 +00:00
新版本用什么方式代替 session.Clone

好的,谢谢

resetStatement 机制是看错了,v0.8-v1一直都有,只会原来是叫 Init(),没细看 reset时也调用了。有这机制好像问题也不是太大。。。

前面说的按老方式Clone 导致原session丢失信息 是因为 session.statement v1 改成指针引用了, 我这暂时加了个 session statement 的浅拷贝扩展来兼容,

func (session *Session) CopyStatementFrom(src *Session) *Session {

	if session.statement == nil {
		return session
	}

	var statementNew = *src.statement
	if src.statement.LimitN != nil {
		var LimitNNew = *src.statement.LimitN
		statementNew.LimitN = &LimitNNew
	}
	session.statement = &statementNew
	return session
}

要维护完整的 session clone 或 engine clone 确实比较麻烦且容易出问题,但是 statement 变化应该不会太大,能否考虑直接提供一个类似的 statement 拷贝实现,还是有一定需求的。

yoke_snowwolf commented on issue xorm/xorm#1798 2020-09-21 06:16:23 +00:00
新版本用什么方式代替 session.Clone

再次稍微看了下 v1.x的实现,觉得问题可能还不是这么简单。

v1.x 造成我前面所说 clone 无法正常使用的原因其实是 statement 被自动 reset 了,

v1.x 现在会根据 session.autoResetStatement 来决定是否 执行 session.resetStatement(),

但是 session.autoResetStatement 并不受外部控制,默认在内部实现执行结束时都会为 true,就是说现在执行后都是会被 reset,

这个逻辑对于现在想同步升级的我来说,觉得是不太合适的,除了兼容性的问题外,往往很多地方都会复用同一个 session 执行一系列操作,特别是 table 引用,我真不想去执行一个select 后又再次 setup 一次 tableName, 现在外部又无法控制 autoResetStatement, 并且开放该项貌似也没用,内部实现某些时候会直接改变这个值(内部实现保证自身多个序列正常执行,先设为 false,执行完直接置为 true)。

这个逻辑是必须的吗。。。? 如果前面我看得没错的话,我觉得这个对于老版本兼容是毁灭性的,相信稍微复杂点的应用都会有不需要 reset 的需求。 我很奇怪为什么没人提出这个问题,是我理解错误还是没人从 v0.8.x升级上来过。

yoke_snowwolf commented on issue xorm/xorm#1798 2020-09-21 03:36:53 +00:00
新版本用什么方式代替 session.Clone

感谢,我想要的是 clone 的效果,并不是

yoke_snowwolf opened issue xorm/xorm#1798 2020-09-18 13:47:24 +00:00
新版本用什么方式代替 session.Clone