悲观锁 Fair Locking 客户端的流程原理大概是什么呢

https://github.com/pingcap/tidb/blob/master/pkg/sessiontxn/isolation/readcommitted.go#L297

// AdviseOptimizeWithPlan in read-committed covers as many cases as repeatable-read.
// We do not fetch latest ts immediately for such scenes.
// 1. A query like the form of “SELECT … FOR UPDATE” whose execution plan is “PointGet”.
// 2. An INSERT statement without “SELECT” subquery.
// 3. A UPDATE statement whose sub execution plan is “PointGet”.
// 4. A DELETE statement whose sub execution plan is “PointGet”.

几乎全对。
你写的这段好像是在这个里面实现的。
看上去确实有几种场景不需要检查ts。
而且根据事务隔离级别的不一样,这个方法的实现也不一样。

如果需要检查ts,就把这个变量打开。

p.checkTSInWriteStmt = true

看了个大概,不甚准确。

其实特别正常,跨几个代码库了,能找到一个人能从tidb,到client到tikv都熟悉的,估计也挺不容易的。
写这段的是个大牛。起码他写明白了是一回事,也留下了准备清理的注释,不然一般人哪里搞的清楚。