mirror of https://github.com/milvus-io/milvus.git
enhance: [GoSDK] Support alter/drop index properties (#40417)
Related to #31293 Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>pull/40394/head^2
parent
2cd03a20d4
commit
a56b24054f
|
@ -178,3 +178,19 @@ func (c *Client) DropIndex(ctx context.Context, opt DropIndexOption, callOptions
|
|||
return merr.CheckRPCCall(resp, err)
|
||||
})
|
||||
}
|
||||
|
||||
func (c *Client) AlterIndexProperties(ctx context.Context, opt AlterIndexPropertiesOption, callOptions ...grpc.CallOption) error {
|
||||
req := opt.Request()
|
||||
return c.callService(func(milvusService milvuspb.MilvusServiceClient) error {
|
||||
resp, err := milvusService.AlterIndex(ctx, req, callOptions...)
|
||||
return merr.CheckRPCCall(resp, err)
|
||||
})
|
||||
}
|
||||
|
||||
func (c *Client) DropIndexProperties(ctx context.Context, opt DropIndexPropertiesOption, callOptions ...grpc.CallOption) error {
|
||||
req := opt.Request()
|
||||
return c.callService(func(milvusService milvuspb.MilvusServiceClient) error {
|
||||
resp, err := milvusService.AlterIndex(ctx, req, callOptions...)
|
||||
return merr.CheckRPCCall(resp, err)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -150,3 +150,60 @@ func NewDropIndexOption(collectionName string, indexName string) *dropIndexOptio
|
|||
indexName: indexName,
|
||||
}
|
||||
}
|
||||
|
||||
type AlterIndexPropertiesOption interface {
|
||||
Request() *milvuspb.AlterIndexRequest
|
||||
}
|
||||
|
||||
type alterIndexPropertiesOption struct {
|
||||
collectionName string
|
||||
indexName string
|
||||
properties map[string]string
|
||||
}
|
||||
|
||||
func (opt *alterIndexPropertiesOption) Request() *milvuspb.AlterIndexRequest {
|
||||
return &milvuspb.AlterIndexRequest{
|
||||
CollectionName: opt.collectionName,
|
||||
IndexName: opt.indexName,
|
||||
ExtraParams: entity.MapKvPairs(opt.properties),
|
||||
}
|
||||
}
|
||||
|
||||
func (opt *alterIndexPropertiesOption) WithProperty(key string, value any) *alterIndexPropertiesOption {
|
||||
opt.properties[key] = fmt.Sprintf("%v", value)
|
||||
return opt
|
||||
}
|
||||
|
||||
func NewAlterIndexPropertiesOption(collectionName string, indexName string) *alterIndexPropertiesOption {
|
||||
return &alterIndexPropertiesOption{
|
||||
collectionName: collectionName,
|
||||
indexName: indexName,
|
||||
properties: make(map[string]string),
|
||||
}
|
||||
}
|
||||
|
||||
type DropIndexPropertiesOption interface {
|
||||
Request() *milvuspb.AlterIndexRequest
|
||||
}
|
||||
|
||||
type dropIndexPropertiesOption struct {
|
||||
collectionName string
|
||||
indexName string
|
||||
keys []string
|
||||
}
|
||||
|
||||
func (opt *dropIndexPropertiesOption) Request() *milvuspb.AlterIndexRequest {
|
||||
return &milvuspb.AlterIndexRequest{
|
||||
CollectionName: opt.collectionName,
|
||||
IndexName: opt.indexName,
|
||||
DeleteKeys: opt.keys,
|
||||
}
|
||||
}
|
||||
|
||||
func NewDropIndexPropertiesOption(collectionName string, indexName string, keys ...string) *dropIndexPropertiesOption {
|
||||
return &dropIndexPropertiesOption{
|
||||
collectionName: collectionName,
|
||||
indexName: indexName,
|
||||
keys: keys,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -217,6 +217,78 @@ func (s *IndexSuite) TestDropIndex() {
|
|||
})
|
||||
}
|
||||
|
||||
func (s *IndexSuite) TestAlterIndexProperties() {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
s.Run("success", func() {
|
||||
collectionName := fmt.Sprintf("coll_%s", s.randString(6))
|
||||
indexName := fmt.Sprintf("idx_%s", s.randString(6))
|
||||
|
||||
key := fmt.Sprintf("key_%s", s.randString(6))
|
||||
val := fmt.Sprintf("val_%s", s.randString(6))
|
||||
|
||||
s.mock.EXPECT().AlterIndex(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, air *milvuspb.AlterIndexRequest) (*commonpb.Status, error) {
|
||||
s.Equal(collectionName, air.GetCollectionName())
|
||||
s.Equal(indexName, air.GetIndexName())
|
||||
if s.Len(air.GetExtraParams(), 1) {
|
||||
kv := air.GetExtraParams()[0]
|
||||
s.Equal(key, kv.GetKey())
|
||||
s.Equal(val, kv.GetValue())
|
||||
}
|
||||
|
||||
return merr.Success(), nil
|
||||
}).Once()
|
||||
|
||||
err := s.client.AlterIndexProperties(ctx, NewAlterIndexPropertiesOption(collectionName, indexName).WithProperty(key, val))
|
||||
s.NoError(err)
|
||||
})
|
||||
|
||||
s.Run("failure", func() {
|
||||
collectionName := fmt.Sprintf("coll_%s", s.randString(6))
|
||||
indexName := fmt.Sprintf("idx_%s", s.randString(6))
|
||||
|
||||
key := fmt.Sprintf("key_%s", s.randString(6))
|
||||
val := fmt.Sprintf("val_%s", s.randString(6))
|
||||
s.mock.EXPECT().AlterIndex(mock.Anything, mock.Anything).Return(nil, merr.WrapErrServiceInternal("mocked")).Once()
|
||||
|
||||
err := s.client.AlterIndexProperties(ctx, NewAlterIndexPropertiesOption(collectionName, indexName).WithProperty(key, val))
|
||||
s.Error(err)
|
||||
})
|
||||
}
|
||||
|
||||
func (s *IndexSuite) TestDropIndexProperties() {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
s.Run("success", func() {
|
||||
collectionName := fmt.Sprintf("coll_%s", s.randString(6))
|
||||
indexName := fmt.Sprintf("idx_%s", s.randString(6))
|
||||
|
||||
key := fmt.Sprintf("key_%s", s.randString(6))
|
||||
|
||||
s.mock.EXPECT().AlterIndex(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, air *milvuspb.AlterIndexRequest) (*commonpb.Status, error) {
|
||||
s.Equal(collectionName, air.GetCollectionName())
|
||||
s.Equal(indexName, air.GetIndexName())
|
||||
s.ElementsMatch([]string{key}, air.GetDeleteKeys())
|
||||
|
||||
return merr.Success(), nil
|
||||
}).Once()
|
||||
|
||||
err := s.client.DropIndexProperties(ctx, NewDropIndexPropertiesOption(collectionName, indexName, key))
|
||||
s.NoError(err)
|
||||
})
|
||||
|
||||
s.Run("failure", func() {
|
||||
collectionName := fmt.Sprintf("coll_%s", s.randString(6))
|
||||
indexName := fmt.Sprintf("idx_%s", s.randString(6))
|
||||
|
||||
key := fmt.Sprintf("coll_%s", s.randString(6))
|
||||
s.mock.EXPECT().AlterIndex(mock.Anything, mock.Anything).Return(nil, merr.WrapErrServiceInternal("mocked")).Once()
|
||||
|
||||
err := s.client.DropIndexProperties(ctx, NewDropIndexPropertiesOption(collectionName, indexName, key))
|
||||
s.Error(err)
|
||||
})
|
||||
}
|
||||
|
||||
func TestIndex(t *testing.T) {
|
||||
suite.Run(t, new(IndexSuite))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue