// 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 }