diff --git a/internal/proxynode/paramtable.go b/internal/proxynode/paramtable.go
index a3ca31df19609f26c3e8bd695c98816176451fcf..307c4771374c854afd4685f413b580120e9f613e 100644
--- a/internal/proxynode/paramtable.go
+++ b/internal/proxynode/paramtable.go
@@ -177,6 +177,7 @@ func (pt *ParamTable) initQueryNodeIDList() []UniqueID {
 		}
 		ret = append(ret, UniqueID(v))
 	}
+	pt.QueryNodeIDList = ret
 	return ret
 }
 
diff --git a/internal/querynode/load_service.go b/internal/querynode/load_service.go
index 0039042260968944b9f302d75ebda9e10fe259f4..73043849ff7d0b1c4dc745cb6ab3ca9969c61da2 100644
--- a/internal/querynode/load_service.go
+++ b/internal/querynode/load_service.go
@@ -114,7 +114,12 @@ func (s *loadService) loadSegmentInternal(collectionID UniqueID, partitionID Uni
 		return err
 	}
 
-	targetFields := s.segLoader.getTargetFields(paths, srcFieldIDs, fieldIDs)
+	//fmt.Println("srcFieldIDs in internal:", srcFieldIDs)
+	//fmt.Println("dstFieldIDs in internal:", fieldIDs)
+	targetFields, err := s.segLoader.checkTargetFields(paths, srcFieldIDs, fieldIDs)
+	if err != nil {
+		return err
+	}
 	err = s.segLoader.loadSegmentFieldsData(segment, targetFields)
 	if err != nil {
 		return err
diff --git a/internal/querynode/load_service_test.go b/internal/querynode/load_service_test.go
index a8f2145daa43f293eb924b7dfb93ac9900de0bad..8ec4ee440ee841c21233407f8c42d9181fc095c8 100644
--- a/internal/querynode/load_service_test.go
+++ b/internal/querynode/load_service_test.go
@@ -1142,7 +1142,7 @@ func TestSegmentLoad_Search_Vector(t *testing.T) {
 	paths, srcFieldIDs, err := generateInsertBinLog(collectionID, partitionID, segmentID, keyPrefix)
 	assert.NoError(t, err)
 
-	fieldsMap := node.loadService.segLoader.getTargetFields(paths, srcFieldIDs, fieldIDs)
+	fieldsMap, _ := node.loadService.segLoader.checkTargetFields(paths, srcFieldIDs, fieldIDs)
 	assert.Equal(t, len(fieldsMap), 2)
 
 	segment, err := node.replica.getSegmentByID(segmentID)
diff --git a/internal/querynode/segment_loader.go b/internal/querynode/segment_loader.go
index 883c96e1758d1e6cf57bcda804adce5a70589c7e..b2a18961c332d8709dccd25ba7e7943192047cce 100644
--- a/internal/querynode/segment_loader.go
+++ b/internal/querynode/segment_loader.go
@@ -8,6 +8,7 @@ import (
 	"github.com/zilliztech/milvus-distributed/internal/kv"
 	minioKV "github.com/zilliztech/milvus-distributed/internal/kv/minio"
 	"github.com/zilliztech/milvus-distributed/internal/msgstream"
+	"github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
 	"github.com/zilliztech/milvus-distributed/internal/proto/datapb"
 	"github.com/zilliztech/milvus-distributed/internal/proto/internalpb2"
 	"github.com/zilliztech/milvus-distributed/internal/storage"
@@ -53,11 +54,11 @@ func (loader *segmentLoader) getInsertBinlogPaths(segmentID UniqueID) ([]*intern
 	}
 
 	pathResponse, err := loader.dataClient.GetInsertBinlogPaths(insertBinlogPathRequest)
-	if err != nil {
+	if err != nil || pathResponse.Status.ErrorCode != commonpb.ErrorCode_SUCCESS {
 		return nil, nil, err
 	}
 
-	if len(pathResponse.FieldIDs) != len(pathResponse.Paths) {
+	if len(pathResponse.FieldIDs) != len(pathResponse.Paths) || len(pathResponse.FieldIDs) <= 0 {
 		return nil, nil, errors.New("illegal InsertBinlogPathsResponse")
 	}
 
@@ -82,7 +83,7 @@ func (loader *segmentLoader) filterOutVectorFields(fieldIDs []int64, vectorField
 	return targetFields
 }
 
-func (loader *segmentLoader) getTargetFields(paths []*internalpb2.StringList, srcFieldIDS []int64, dstFields []int64) map[int64]*internalpb2.StringList {
+func (loader *segmentLoader) checkTargetFields(paths []*internalpb2.StringList, srcFieldIDs []int64, dstFieldIDs []int64) (map[int64]*internalpb2.StringList, error) {
 	targetFields := make(map[int64]*internalpb2.StringList)
 
 	containsFunc := func(s []int64, e int64) bool {
@@ -94,13 +95,14 @@ func (loader *segmentLoader) getTargetFields(paths []*internalpb2.StringList, sr
 		return false
 	}
 
-	for i, fieldID := range srcFieldIDS {
-		if containsFunc(dstFields, fieldID) {
-			targetFields[fieldID] = paths[i]
+	for i, fieldID := range dstFieldIDs {
+		if !containsFunc(srcFieldIDs, fieldID) {
+			return nil, errors.New("uncompleted fields")
 		}
+		targetFields[fieldID] = paths[i]
 	}
 
-	return targetFields
+	return targetFields, nil
 }
 
 func (loader *segmentLoader) loadSegmentFieldsData(segment *Segment, targetFields map[int64]*internalpb2.StringList) error {
diff --git a/tests/python/test_index.py b/tests/python/test_index.py
index ee7b36c5062cf05981c8cbf22c125cb18b142b75..cad7695c9530e04202b575951b1c0f4c567ee4c7 100644
--- a/tests/python/test_index.py
+++ b/tests/python/test_index.py
@@ -524,7 +524,6 @@ class TestIndexBase:
             connect.drop_index(collection, field_name)
 
 
-@pytest.mark.skip("r0.3-test")
 class TestIndexBinary:
     @pytest.fixture(
         scope="function",
@@ -594,6 +593,7 @@ class TestIndexBinary:
         ids = connect.bulk_insert(binary_collection, default_binary_entities, partition_tag=default_tag)
         connect.create_index(binary_collection, binary_field_name, get_jaccard_index)
 
+    @pytest.mark.skip("r0.3-test")
     @pytest.mark.timeout(BUILD_TIMEOUT)
     def test_create_index_search_with_query_vectors(self, connect, binary_collection, get_jaccard_index, get_nq):
         '''