From 8692767f9d4e0549b00b0c16a931740844019d5b Mon Sep 17 00:00:00 2001 From: Bingyi Sun Date: Sun, 8 Oct 2023 12:07:26 +0800 Subject: [PATCH] [Go & Cpp] Validate schema when opening a space (#69) Signed-off-by: sunby --- cpp/src/storage/space.cpp | 2 ++ go/storage/space.go | 3 +++ 2 files changed, 5 insertions(+) diff --git a/cpp/src/storage/space.cpp b/cpp/src/storage/space.cpp index 0fd1b7df..409bc1d5 100644 --- a/cpp/src/storage/space.cpp +++ b/cpp/src/storage/space.cpp @@ -246,6 +246,8 @@ Result> Space::Open(const std::string& uri, Options optio if (options.schema == nullptr) { return Status::InvalidArgument("schema should not be nullptr"); } + + RETURN_NOT_OK(options.schema->Validate()); manifest = std::make_shared(options.schema); RETURN_NOT_OK(SafeSaveManifest(fs, path, manifest.get())); } else { diff --git a/go/storage/space.go b/go/storage/space.go index 26b97dc5..0f1b7121 100644 --- a/go/storage/space.go +++ b/go/storage/space.go @@ -100,6 +100,9 @@ func Open(uri string, opt options.Options) (*Space, error) { log.Error("schema is nil") return nil, errors.ErrSchemaIsNil } + if err = opt.Schema.Validate(); err != nil { + return nil, err + } m = manifest.NewManifest(opt.Schema) m.SetVersion(0) //TODO: check if this is necessary if err = rw.Write(m); err != nil {