@@ -350,7 +350,7 @@ private static FieldData genStructSubFieldData(CreateCollectionReq.FieldSchema f
350350 FieldData .Builder builder = FieldData .newBuilder ().setFieldName (fieldName );
351351
352352 if (ParamUtils .isVectorDataType (dataType )) {
353- VectorArray vectorArr = genVectorArray (dataType , objects );
353+ VectorArray vectorArr = genVectorArray (dataType , objects , fieldSchema . getDimension () );
354354 if (vectorArr .getDim () > 0 && vectorArr .getDim () != fieldSchema .getDimension ()) {
355355 String msg = String .format ("Dimension mismatch for field %s, expected: %d, actual: %d" ,
356356 fieldName , fieldSchema .getDimension (), vectorArr .getDim ());
@@ -380,8 +380,8 @@ private static FieldData genStructSubFieldData(CreateCollectionReq.FieldSchema f
380380 }
381381
382382 @ SuppressWarnings ("unchecked" )
383- public static VectorArray genVectorArray (DataType dataType , List <?> objects ) {
384- VectorArray .Builder builder = VectorArray .newBuilder ().setElementType (dataType );
383+ public static VectorArray genVectorArray (DataType dataType , List <?> objects , int dim ) {
384+ VectorArray .Builder builder = VectorArray .newBuilder ().setElementType (dataType ). setDim ( dim ) ;
385385 switch (dataType ) {
386386 case FloatVector :
387387 case BinaryVector :
@@ -398,19 +398,21 @@ public static VectorArray genVectorArray(DataType dataType, List<?> objects) {
398398 List <?> listOfList = (List <?>) object ;
399399 if (listOfList .isEmpty ()) {
400400 // struct field value is empty, fill the VectorArray with zero-dim vectors?
401- builder .addData (VectorField .newBuilder ().build ());
401+ VectorField .Builder vfBuilder = VectorField .newBuilder ().setDim (dim );
402+ if (dataType == DataType .FloatVector ) {
403+ vfBuilder .setFloatVector (FloatArray .newBuilder ().build ());
404+ } else {
405+ // not supported yet
406+ throw new MilvusClientException (ErrorCode .INVALID_PARAMS , "Unsupported type: " + dataType .name ());
407+ }
408+ builder .addData (vfBuilder .build ());
402409 continue ;
403410 }
404411
405412 VectorField vf = ParamUtils .genVectorField (dataType , listOfList );
406- if (vf .getDim () == 0 ) {
407- throw new MilvusClientException (ErrorCode .INVALID_PARAMS , "Vector cannot be empty list" );
408- }
409- if (builder .getDataCount () == 0 ) {
410- builder .setDim (vf .getDim ());
411- } else if (builder .getDim () != vf .getDim ()) {
412- String msg = String .format ("Dimension mismatch for vector field, the first dimension: %d, mismatched: %d" ,
413- builder .getDim (), vf .getDim ());
413+ if (vf .getDim () != dim ) {
414+ String msg = String .format ("Dimension mismatch for vector field, schema dimension: %d, actual dimension: %d" ,
415+ dim , vf .getDim ());
414416 throw new MilvusClientException (ErrorCode .INVALID_PARAMS , msg );
415417 }
416418 builder .addData (vf );
0 commit comments