// Open open or create database from given desc. func Open(d desc.Desc, o *opt.Options) (db *DB, err error) { s := newSession(d, o) err = s.recover() if os.IsNotExist(err) && o.HasFlag(opt.OFCreateIfMissing) { err = s.create() } else if err == nil && o.HasFlag(opt.OFErrorIfExist) { err = os.ErrExist } if err != nil { return } return open(s) }