tikv的IterReverse哪个版本计划加入lower bound limit以及Transaction出错的时候需要rollback吗

1: IterReverse 很有用,但目前无法指定开始的key, 看计划有TODO,但好久了

type Retriever interface {
	Getter
	// Iter creates an Iterator positioned on the first entry that k <= entry's key.
	// If such entry is not found, it returns an invalid Iterator with no error.
	// It yields only keys that < upperBound. If upperBound is nil, it means the upperBound is unbounded.
	// The Iterator must be Closed after use.
	Iter(k Key, upperBound Key) (Iterator, error)

	// IterReverse creates a reversed Iterator positioned on the first entry which key is less than k.
	// The returned iterator will iterate from greater key to smaller key.
	// If k is nil, the returned iterator will be positioned at the last key.
	// TODO: Add lower bound limit
	IterReverse(k Key) (Iterator, error)
}

2: tikv写入的时候开始一个Transaction, 写入过程中失败了(比如网络连接断开)有必要rollback吗? 还是直接忽略就可以

3: 实际测试IterReverse返回的iter不在最后一个key上,如果传入参数为nil的话. iter也是无效的

4: tikv的go-client的iter没有找到直接移动到last的选项,比如我想无任何key过滤取我所有数据的最后一条数据

你好,

已将此问题归类为 开发者问答,会有研发小伙伴来回答哦~

  • 问题一,想要参与开发并获得更多一些帮助,可以加入我们 事务 SIG,内有加入 SIG 交流平台的方式。

  • 问题二:两者都可以:

    • 直接忽略,后面读写遇到锁时,可以再根据 primary key 上事务的状态,决定如何清锁
    • 发起 rollback, 直接清锁就可以
  • 问题三、四:同问题一的处理方式。

  • 目前 go-client 虽然跟 TiDB 脱离比较久,但是使用方式依旧可以去参考 TiDB 的相关源代码。