@@ -343,6 +343,40 @@ public Void alterCollectionField(MilvusServiceGrpc.MilvusServiceBlockingStub blo
343343 return null ;
344344 }
345345
346+ public Void dropCollectionField (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub , DropCollectionFieldReq request ) {
347+ String dbName = request .getDatabaseName ();
348+ String collectionName = request .getCollectionName ();
349+ String fieldName = request .getFieldName ();
350+ Long fieldId = request .getFieldId ();
351+ boolean hasFieldName = StringUtils .isNotBlank (fieldName );
352+ boolean hasFieldId = fieldId != null && fieldId > 0 ;
353+ if (hasFieldName == hasFieldId ) {
354+ throw new MilvusClientException (ErrorCode .INVALID_PARAMS ,
355+ "Exactly one of fieldName or fieldId must be provided." );
356+ }
357+
358+ String title = String .format ("Drop field of collection: '%s' in database: '%s'" , collectionName , dbName );
359+ AlterCollectionSchemaRequest .DropRequest .Builder dropBuilder = AlterCollectionSchemaRequest .DropRequest .newBuilder ();
360+ if (hasFieldName ) {
361+ dropBuilder .setFieldName (fieldName );
362+ } else {
363+ dropBuilder .setFieldId (fieldId );
364+ }
365+
366+ AlterCollectionSchemaRequest .Builder builder = AlterCollectionSchemaRequest .newBuilder ()
367+ .setCollectionName (collectionName )
368+ .setAction (AlterCollectionSchemaRequest .Action .newBuilder ()
369+ .setDropRequest (dropBuilder )
370+ .build ());
371+ if (StringUtils .isNotEmpty (dbName )) {
372+ builder .setDbName (dbName );
373+ }
374+
375+ AlterCollectionSchemaResponse response = blockingStub .alterCollectionSchema (builder .build ());
376+ rpcUtils .handleResponse (title , response .getAlterStatus ());
377+ return null ;
378+ }
379+
346380 public Void dropCollectionProperties (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub , DropCollectionPropertiesReq request ) {
347381 String dbName = request .getDatabaseName ();
348382 String collectionName = request .getCollectionName ();
@@ -697,6 +731,40 @@ public Void addCollectionFunction(MilvusServiceGrpc.MilvusServiceBlockingStub bl
697731 return null ;
698732 }
699733
734+ public Void addFunctionField (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub ,
735+ AddFunctionFieldReq request ) {
736+ if (request .getFunction () == null ) {
737+ throw new MilvusClientException (ErrorCode .INVALID_PARAMS , "Function cannot be null." );
738+ }
739+
740+ String dbName = request .getDatabaseName ();
741+ String collectionName = request .getCollectionName ();
742+ String title = String .format ("Add function field to collection: '%s' in database: '%s'" , collectionName , dbName );
743+
744+ CreateCollectionReq .FieldSchema fieldSchema = SchemaUtils .convertFieldReqToFieldSchema (request );
745+ FieldSchema grpcFieldSchema = SchemaUtils .convertToGrpcFieldSchema (fieldSchema , true );
746+ AlterCollectionSchemaRequest .FieldInfo fieldInfo = AlterCollectionSchemaRequest .FieldInfo .newBuilder ()
747+ .setFieldSchema (grpcFieldSchema )
748+ .build ();
749+ AlterCollectionSchemaRequest .AddRequest addRequest = AlterCollectionSchemaRequest .AddRequest .newBuilder ()
750+ .addFieldInfos (fieldInfo )
751+ .addFuncSchema (SchemaUtils .convertToGrpcFunction (request .getFunction ()))
752+ .build ();
753+
754+ AlterCollectionSchemaRequest .Builder builder = AlterCollectionSchemaRequest .newBuilder ()
755+ .setCollectionName (collectionName )
756+ .setAction (AlterCollectionSchemaRequest .Action .newBuilder ()
757+ .setAddRequest (addRequest )
758+ .build ());
759+ if (StringUtils .isNotEmpty (dbName )) {
760+ builder .setDbName (dbName );
761+ }
762+
763+ AlterCollectionSchemaResponse response = blockingStub .alterCollectionSchema (builder .build ());
764+ rpcUtils .handleResponse (title , response .getAlterStatus ());
765+ return null ;
766+ }
767+
700768 public Void alterCollectionFunction (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub ,
701769 AlterCollectionFunctionReq request ) {
702770 if (request .getFunction () == null ) {
@@ -740,6 +808,32 @@ public Void dropCollectionFunction(MilvusServiceGrpc.MilvusServiceBlockingStub b
740808 return null ;
741809 }
742810
811+ public Void dropFunctionField (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub ,
812+ DropFunctionFieldReq request ) {
813+ if (StringUtils .isEmpty (request .getFunctionName ())) {
814+ throw new MilvusClientException (ErrorCode .INVALID_PARAMS , "Function name cannot be empty." );
815+ }
816+
817+ String dbName = request .getDatabaseName ();
818+ String collectionName = request .getCollectionName ();
819+ String title = String .format ("Drop function field of collection: '%s' in database: '%s'" , collectionName , dbName );
820+ AlterCollectionSchemaRequest .Builder builder = AlterCollectionSchemaRequest .newBuilder ()
821+ .setCollectionName (collectionName )
822+ .setAction (AlterCollectionSchemaRequest .Action .newBuilder ()
823+ .setDropRequest (AlterCollectionSchemaRequest .DropRequest .newBuilder ()
824+ .setFunctionName (request .getFunctionName ())
825+ .setDropFunctionOutputFields (true )
826+ .build ())
827+ .build ());
828+ if (StringUtils .isNotEmpty (dbName )) {
829+ builder .setDbName (dbName );
830+ }
831+
832+ AlterCollectionSchemaResponse response = blockingStub .alterCollectionSchema (builder .build ());
833+ rpcUtils .handleResponse (title , response .getAlterStatus ());
834+ return null ;
835+ }
836+
743837 private void waitForLoadCollection (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub , String databaseName ,
744838 String collectionName , Long timeoutMs , boolean refreshLoad ) {
745839 long startTime = System .currentTimeMillis ();
0 commit comments