diff --git a/pkg/local_object_storage/metabase/put.go b/pkg/local_object_storage/metabase/put.go index bd676cbd..a08d32b4 100644 --- a/pkg/local_object_storage/metabase/put.go +++ b/pkg/local_object_storage/metabase/put.go @@ -142,6 +142,10 @@ func objectIndices(obj *object.Object, parent bool) []bucketItem { key: v2object.FilterPropertyChildfree, val: childfreeVal, }, + bucketItem{ + key: v2object.FilterHeaderParent, + val: obj.GetParentID().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 6362c35d..0383fa63 100644 --- a/pkg/local_object_storage/metabase/select_test.go +++ b/pkg/local_object_storage/metabase/select_test.go @@ -184,3 +184,26 @@ func TestMissingObjectAttribute(t *testing.T) { testSelect(t, db, fs, obj1.Address()) } + +func TestSelectParentID(t *testing.T) { + db := newDB(t) + defer releaseDB(db) + + // generate 2 objects + obj1 := generateObject(t, testPrm{}) + obj2 := generateObject(t, testPrm{}) + + // set parent ID of 1st object + par := testOID() + object.NewRawFromObject(obj1).SetParentID(par) + + // store objects + require.NoError(t, db.Put(obj1)) + require.NoError(t, db.Put(obj2)) + + // filter by parent ID + fs := objectSDK.SearchFilters{} + fs.AddParentIDFilter(objectSDK.MatchStringEqual, par) + + testSelect(t, db, fs, obj1.Address()) +}