@@ -220,7 +220,9 @@ public UpsertResp upsert(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStu
220220 }
221221
222222 public QueryResp query (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub , QueryReq request ) {
223- String title = String .format ("QueryRequest collectionName:%s, databaseName:%s" , request .getCollectionName (), request .getDatabaseName ());
223+ String dbName = request .getDatabaseName ();
224+ String collectionName = request .getCollectionName ();
225+ String title = String .format ("QueryRequest collectionName:%s, databaseName:%s" , collectionName , dbName );
224226 if (request .getFilter () == null && request .getIds () == null ) {
225227 throw new MilvusClientException (ErrorCode .INVALID_PARAMS , "filter and ids can't be null at the same time" );
226228 } else if (request .getFilter () != null && request .getIds () != null ) {
@@ -229,9 +231,19 @@ public QueryResp query(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub,
229231
230232
231233 if (request .getIds () != null && request .getFilter () == null ) {
232- DescribeCollectionReq descReq = DescribeCollectionReq .builder ().databaseName (request .getDatabaseName ()).collectionName (request .getCollectionName ()).build ();
233- DescribeCollectionResp descResp = collectionService .describeCollection (blockingStub , descReq );
234- request .setFilter (vectorUtils .getExprById (descResp .getPrimaryFieldName (), request .getIds ()));
234+ DescribeCollectionResponse descResp = getCollectionInfo (blockingStub , dbName , collectionName , false );
235+ String primaryKeyName = "" ;
236+ List <FieldSchema > fields = descResp .getSchema ().getFieldsList ();
237+ for (FieldSchema field : fields ) {
238+ if (field .getIsPrimaryKey ()) {
239+ primaryKeyName = field .getName ();
240+ break ;
241+ }
242+ }
243+ if (StringUtils .isEmpty (primaryKeyName )) {
244+ throw new MilvusClientException (ErrorCode .SERVER_ERROR , "cannot find the primary key field in collection schema" );
245+ }
246+ request .setFilter (vectorUtils .getExprById (primaryKeyName , request .getIds ()));
235247 }
236248
237249 // reset the db name so that the timestamp cache can set correct key for this collection
@@ -287,15 +299,17 @@ public SearchResp hybridSearch(MilvusServiceGrpc.MilvusServiceBlockingStub block
287299
288300 public QueryIterator queryIterator (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub ,
289301 QueryIteratorReq request ) {
290- DescribeCollectionResponse descResp = describeCollection (blockingStub , request .getDatabaseName (), request .getCollectionName ());
302+ DescribeCollectionResponse descResp = getCollectionInfo (blockingStub , request .getDatabaseName (),
303+ request .getCollectionName (), false );
291304 DescribeCollectionResp respR = convertUtils .convertDescCollectionResp (descResp );
292305 CreateCollectionReq .FieldSchema pkField = respR .getCollectionSchema ().getField (respR .getPrimaryFieldName ());
293306 return new QueryIterator (request , blockingStub , pkField );
294307 }
295308
296309 public SearchIterator searchIterator (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub ,
297310 SearchIteratorReq request ) {
298- DescribeCollectionResponse descResp = describeCollection (blockingStub , request .getDatabaseName (), request .getCollectionName ());
311+ DescribeCollectionResponse descResp = getCollectionInfo (blockingStub , request .getDatabaseName (),
312+ request .getCollectionName (), false );
299313 DescribeCollectionResp respR = convertUtils .convertDescCollectionResp (descResp );
300314 CreateCollectionReq .FieldSchema pkField = respR .getCollectionSchema ().getField (respR .getPrimaryFieldName ());
301315 return new SearchIterator (request , blockingStub , pkField );
0 commit comments