code: func (s *Schema) Clone() *Schema {
  	cols := make([]*Column, 0, s.Len())
  	keys := make([]KeyInfo, 0, len(s.Keys))
  	for _, col := range s.Columns {
  		cols = append(cols, col.Clone().(*Column))
  	}
  	for _, key := range s.Keys {
  		keys = append(keys, key.Clone())
  	}
  	schema := NewSchema(cols...)
  	schema.SetUniqueKeys(keys)
  	for id, cols := range s.TblID2Handle {
  		schema.TblID2Handle[id] = make([]*Column, 0, len(cols))
  		for _, col := range cols {
  			var inColumns = false
  			for i, colInColumns := range s.Columns {
  				if col == colInColumns {
  					schema.TblID2Handle[id] = append(schema.TblID2Handle[id], schema.Columns[i])
  					inColumns = true
  					break
  				}
  			}
  			if !inColumns {
  				schema.TblID2Handle[id] = append(schema.TblID2Handle[id], col.Clone().(*Column))
  			}
  		}
  	}
  	return schema
  }
docs: // Clone copies the total schema.