code: func (m *DbMap) AddTableWithNameAndSchema(i interface{}, schema string, name string) *TableMap {
  	t := reflect.TypeOf(i)
  	if name == "" {
  		name = t.Name()
  	}
  
  	// check if we have a table for this type already
  	// if so, update the name and return the existing pointer
  	for i := range m.tables {
  		table := m.tables[i]
  		if table.gotype == t {
  			table.TableName = name
  			return table
  		}
  	}
  
  	tmap := &TableMap{gotype: t, TableName: name, SchemaName: schema, dbmap: m}
  	var primaryKey []*ColumnMap
  	tmap.Columns, primaryKey = m.readStructColumns(t)
  	m.tables = append(m.tables, tmap)
  	if len(primaryKey) > 0 {
  		tmap.keys = append(tmap.keys, primaryKey...)
  	}
  
  	return tmap
  }
docs: // AddTableWithNameAndSchema has the same behavior as AddTable, but sets
  // table.TableName to name.