コード例 #1
0
ファイル: db.go プロジェクト: allisonmorgan/qlbridge
// NewMemDbForSchema creates a MemDb with given indexes, columns
func NewMemDbForSchema(name string, ss *schema.SchemaSource, cols []string) (*MemDb, error) {

	if len(cols) < 1 {
		return nil, fmt.Errorf("must have columns provided")
	}

	m := &MemDb{}

	m.tbl = schema.NewTable(name, ss)
	ss.AddTable(m.tbl)
	if ss.Schema == nil {
		m.Schema = schema.NewSchema(name)
		m.Schema.AddSourceSchema(ss)
	} else {
		m.Schema = ss.Schema
	}

	m.tbl.SetColumns(cols)

	err := m.buildDefaultIndexes()
	if err != nil {
		u.Errorf("Default indexes could not be built %v", err)
		return nil, err
	}

	mdbSchema, err := makeMemDbSchema(m)
	if err != nil {
		u.Errorf("Must have valid schema %v", err)
		return nil, err
	}
	db, err := memdb.NewMemDB(mdbSchema)
	if err != nil {
		u.Warnf("could not create db %v", err)
		return nil, err
	}
	m.db = db
	return m, nil
}