code: func (s *session) InitTxnWithStartTS(startTS uint64) error {
  	if s.txn.Valid() {
  		return nil
  	}
  
  	// no need to get txn from txnFutureCh since txn should init with startTs
  	txn, err := s.store.BeginWithStartTS(startTS)
  	if err != nil {
  		return err
  	}
  	s.txn.changeInvalidToValid(txn)
  	s.txn.SetCap(s.getMembufCap())
  	err = s.loadCommonGlobalVariablesIfNeeded()
  	if err != nil {
  		return err
  	}
  	return nil
  }
docs: // InitTxnWithStartTS create a transaction with startTS.