code: func (s *SQLStore) CreateChannel(channel string) (*Channel, error) {
  	s.Lock()
  	defer s.Unlock()
  
  	// Verify that it does not already exist or that we did not hit the limits
  	if err := s.canAddChannel(channel); err != nil {
  		return nil, err
  	}
  
  	channelLimits := s.genericStore.getChannelLimits(channel)
  
  	cid := s.maxChannelID + 1
  	if _, err := s.preparedStmts[sqlAddChannel].Exec(cid, channel,
  		channelLimits.MaxMsgs, channelLimits.MaxBytes, int64(channelLimits.MaxAge)); err != nil {
  		return nil, sqlStmtError(sqlAddChannel, err)
  	}
  	s.maxChannelID = cid
  
  	msgStore := s.newSQLMsgStore(channel, cid, &channelLimits.MsgStoreLimits)
  	subStore := s.newSQLSubStore(cid, &channelLimits.SubStoreLimits)
  
  	c := &Channel{
  		Subs: subStore,
  		Msgs: msgStore,
  	}
  	s.channels[channel] = c
  
  	return c, nil
  }
docs: // CreateChannel implements the Store interface