From ffeea2c003574d32d66d0cf8b740bf64357798f8 Mon Sep 17 00:00:00 2001 From: Leonard Lyubich Date: Fri, 20 Nov 2020 10:43:41 +0300 Subject: [PATCH] [#177] metabase: Add index by object ID Signed-off-by: Leonard Lyubich --- go.mod | 2 +- go.sum | 4 ++-- pkg/local_object_storage/metabase/put.go | 4 ++++ .../metabase/select_test.go | 17 +++++++++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index dc90d21f0..6509c03f3 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/multiformats/go-multiaddr-net v0.1.2 // v0.1.1 => v0.1.2 github.com/multiformats/go-multihash v0.0.13 // indirect github.com/nspcc-dev/neo-go v0.91.1-pre.0.20201030072836-71216865717b - github.com/nspcc-dev/neofs-api-go v1.20.2 + github.com/nspcc-dev/neofs-api-go v1.20.3-0.20201120074117-20ede88fe753 github.com/nspcc-dev/neofs-crypto v0.3.0 github.com/nspcc-dev/tzhash v1.4.0 github.com/panjf2000/ants/v2 v2.3.0 diff --git a/go.sum b/go.sum index 4b2b7756d..c653c1260 100644 --- a/go.sum +++ b/go.sum @@ -276,8 +276,8 @@ github.com/nspcc-dev/neo-go v0.73.1-pre.0.20200303142215-f5a1b928ce09/go.mod h1: github.com/nspcc-dev/neo-go v0.91.0/go.mod h1:G6HdOWvzQ6tlvFdvFSN/PgCzLPN/X/X4d5hTjFRUDcc= github.com/nspcc-dev/neo-go v0.91.1-pre.0.20201030072836-71216865717b h1:gk5bZgpWOehaDVKI5vBDkcjXTpRkKqcvIb1h/vHnBH4= github.com/nspcc-dev/neo-go v0.91.1-pre.0.20201030072836-71216865717b/go.mod h1:9s7LNp2lMgf0caH2t0sam4+WT2SIauXozwP0AdBqnEo= -github.com/nspcc-dev/neofs-api-go v1.20.2 h1:jOsfgOQdKhg7gTAGciRdIdOJxYX72CxqgkwaqzEscHw= -github.com/nspcc-dev/neofs-api-go v1.20.2/go.mod h1:G7dqincfdjBrAbL5nxVp82emF05fSVEqe59ICsoRDI8= +github.com/nspcc-dev/neofs-api-go v1.20.3-0.20201120074117-20ede88fe753 h1:POPtzByIf5zsvnEmPm+d89gQ41kFwYB7fxeMLqEwCqc= +github.com/nspcc-dev/neofs-api-go v1.20.3-0.20201120074117-20ede88fe753/go.mod h1:G7dqincfdjBrAbL5nxVp82emF05fSVEqe59ICsoRDI8= github.com/nspcc-dev/neofs-crypto v0.2.0/go.mod h1:F/96fUzPM3wR+UGsPi3faVNmFlA9KAEAUQR7dMxZmNA= github.com/nspcc-dev/neofs-crypto v0.2.3/go.mod h1:8w16GEJbH6791ktVqHN9YRNH3s9BEEKYxGhlFnp0cDw= github.com/nspcc-dev/neofs-crypto v0.3.0 h1:zlr3pgoxuzrmGCxc5W8dGVfA9Rro8diFvVnBg0L4ifM= diff --git a/pkg/local_object_storage/metabase/put.go b/pkg/local_object_storage/metabase/put.go index 7fde8b0d3..a42f0e9fa 100644 --- a/pkg/local_object_storage/metabase/put.go +++ b/pkg/local_object_storage/metabase/put.go @@ -124,6 +124,10 @@ func objectIndices(obj *object.Object, parent bool) []bucketItem { key: v2object.FilterHeaderParent, val: obj.ParentID().String(), }, + bucketItem{ + key: v2object.FilterHeaderObjectID, + val: obj.ID().String(), + }, // TODO: add remaining fields after neofs-api#72 ) diff --git a/pkg/local_object_storage/metabase/select_test.go b/pkg/local_object_storage/metabase/select_test.go index 04708db87..43371548a 100644 --- a/pkg/local_object_storage/metabase/select_test.go +++ b/pkg/local_object_storage/metabase/select_test.go @@ -207,3 +207,20 @@ func TestSelectParentID(t *testing.T) { testSelect(t, db, fs, obj1.Address()) } + +func TestSelectObjectID(t *testing.T) { + db := newDB(t) + defer releaseDB(db) + + // generate object + obj := generateObject(t, testPrm{}) + + // store objects + require.NoError(t, db.Put(obj)) + + // filter by object ID + fs := objectSDK.SearchFilters{} + fs.AddObjectIDFilter(objectSDK.MatchStringEqual, obj.ID()) + + testSelect(t, db, fs, obj.Address()) +}