code: func (b *Builder) InitWithDBInfos(dbInfos []*model.DBInfo, schemaVersion int64) (*Builder, error) {
  	info := b.is
  	info.schemaMetaVersion = schemaVersion
  	for _, di := range dbInfos {
  		err := b.createSchemaTablesForDB(di, tables.TableFromMeta)
  		if err != nil {
  			return nil, errors.Trace(err)
  		}
  	}
  
  	// Initialize virtual tables.
  	for _, driver := range drivers {
  		err := b.createSchemaTablesForDB(driver.DBInfo, driver.TableFromMeta)
  		if err != nil {
  			return nil, errors.Trace(err)
  		}
  	}
  	// TODO: Update INFORMATION_SCHEMA schema to use virtual table.
  	b.createSchemaTablesForInfoSchemaDB()
  	for _, v := range info.sortedTablesBuckets {
  		sort.Sort(v)
  	}
  	return b, nil
  }
docs: // InitWithDBInfos initializes an empty new InfoSchema with a slice of DBInfo and schema version.