code: func (txn *Txn) readableIndex(table, index string) *iradix.Txn {
  	// Look for existing transaction
  	if txn.write && txn.modified != nil {
  		key := tableIndex{table, index}
  		exist, ok := txn.modified[key]
  		if ok {
  			return exist
  		}
  	}
  
  	// Create a read transaction
  	path := indexPath(table, index)
  	raw, _ := txn.rootTxn.Get(path)
  	indexTxn := raw.(*iradix.Tree).Txn()
  	return indexTxn
  }
docs: // readableIndex returns a transaction usable for reading the given
  // index in a table. If a write transaction is in progress, we may need
  // to use an existing modified txn.