diff --git a/internal/rootcoord/alter_collection_task.go b/internal/rootcoord/alter_collection_task.go index e48f7bf332..da07298021 100644 --- a/internal/rootcoord/alter_collection_task.go +++ b/internal/rootcoord/alter_collection_task.go @@ -34,6 +34,7 @@ import ( "github.com/milvus-io/milvus/pkg/v2/log" "github.com/milvus-io/milvus/pkg/v2/mq/msgstream" "github.com/milvus-io/milvus/pkg/v2/proto/querypb" + "github.com/milvus-io/milvus/pkg/v2/util/funcutil" "github.com/milvus-io/milvus/pkg/v2/util/merr" ) @@ -47,6 +48,10 @@ func (a *alterCollectionTask) Prepare(ctx context.Context) error { return errors.New("alter collection failed, collection name does not exists") } + if funcutil.SliceContain(a.Req.GetDeleteKeys(), common.EnableDynamicSchemaKey) { + return merr.WrapErrParameterInvalidMsg("cannot delete key %s, dynamic field schema could support set to true/false", common.EnableDynamicSchemaKey) + } + return nil } diff --git a/internal/rootcoord/alter_collection_task_test.go b/internal/rootcoord/alter_collection_task_test.go index d9d5b607d7..24f5d85795 100644 --- a/internal/rootcoord/alter_collection_task_test.go +++ b/internal/rootcoord/alter_collection_task_test.go @@ -33,6 +33,7 @@ import ( mockrootcoord "github.com/milvus-io/milvus/internal/rootcoord/mocks" "github.com/milvus-io/milvus/pkg/v2/common" "github.com/milvus-io/milvus/pkg/v2/mq/msgstream" + "github.com/milvus-io/milvus/pkg/v2/util/merr" ) func Test_alterCollectionTask_Prepare(t *testing.T) { @@ -42,6 +43,17 @@ func Test_alterCollectionTask_Prepare(t *testing.T) { assert.Error(t, err) }) + t.Run("banned_delete_keys", func(t *testing.T) { + task := &alterCollectionTask{Req: &milvuspb.AlterCollectionRequest{ + Base: &commonpb.MsgBase{MsgType: commonpb.MsgType_AlterCollection}, + CollectionName: "test_collection", + DeleteKeys: []string{common.EnableDynamicSchemaKey}, + }} + err := task.Prepare(context.Background()) + assert.Error(t, err) + assert.ErrorIs(t, err, merr.ErrParameterInvalid) + }) + t.Run("normal case", func(t *testing.T) { task := &alterCollectionTask{ Req: &milvuspb.AlterCollectionRequest{