echo
----
db0.Put(ctx, tk(1), sv(1)) // @0.000000001,0 <nil>
db0.Put(ctx, tk(1), sv(2)) // @0.000000002,0 <nil>
db0.Put(ctx, tk(2), sv(3)) // @0.000000002,0 <nil>
db0.Put(ctx, tk(2), sv(4)) // @0.000000003,0 <nil>
db0.Txn(ctx, func(ctx context.Context, txn *kv.Txn) error {
  txn.SetIsoLevel(isolation.Serializable)
  txn.Scan(ctx, tk(1), tk(3), 0) // (/Table/100/"0000000000000001":v1, /Table/100/"0000000000000002":v3, <nil>)
  txn.Scan(ctx, tk(2), tk(4), 0) // (/Table/100/"0000000000000002":v3, <nil>)
  return nil
}) // @0.000000002,0 <nil>
/Table/100/"0000000000000001"/0.000000001,0 @ s1 v1
/Table/100/"0000000000000001"/0.000000002,0 @ s2 v2
/Table/100/"0000000000000002"/0.000000002,0 @ s3 v3
/Table/100/"0000000000000002"/0.000000003,0 @ s4 v4
committed serializable txn non-atomic timestamps: [s]/Table/100/"000000000000000{1"-3"}:{0:[0.000000001,0, 0.000000002,0), 1:[0.000000002,0, 0.000000003,0), gap:[<min>, <max>)}->[/Table/100/"0000000000000001":v1, /Table/100/"0000000000000002":v3] [s]/Table/100/"000000000000000{2"-4"}:{0:[0.000000002,0, 0.000000003,0), gap:[<min>, <max>)}->[/Table/100/"0000000000000002":v3]
