mirror of
https://github.com/milvus-io/milvus.git
synced 2026-07-21 10:15:43 +00:00
pr: [#49328](https://github.com/milvus-io/milvus/pull/49328) pr: [#49724](https://github.com/milvus-io/milvus/pull/49724) pr: [#49763](https://github.com/milvus-io/milvus/pull/49763) pr: [#49698](https://github.com/milvus-io/milvus/pull/49698) issue: [#49241](https://github.com/milvus-io/milvus/issues/49241) issue: [#49746](https://github.com/milvus-io/milvus/issues/49746) issue: [#49634](https://github.com/milvus-io/milvus/issues/49634) ## Summary Backport the 2.6 partial update op series to `hotfix-2.6.16`: - support `ARRAY_APPEND` and `ARRAY_REMOVE` partial update ops for Array fields - expose `fieldOps` through REST upsert - preserve existing Array rows when an op payload row is null ## Target branch Base branch: `hotfix-2.6.16` ## Cherry-picks - `5849977c408be2abd063d13c318e970bb4515f06` from [#49328](https://github.com/milvus-io/milvus/pull/49328) - `017ee8e5d97ec891c442489b1354b60676ca3b15` from [#49724](https://github.com/milvus-io/milvus/pull/49724) - `4e10473389843ff2cedc1911083af5a93fa83ec6` from [#49763](https://github.com/milvus-io/milvus/pull/49763) - `824c642c71154952bf70eaaf7b57cbcd7d08e67f` backports the applicable WAL test/recovery stabilization from `73dc8d4034fd352f5c69fd47266fccc062704feb` / [#49698](https://github.com/milvus-io/milvus/pull/49698) after omitting newer rate-limit API changes that do not exist on `hotfix-2.6.16` The partial update cherry-picks applied cleanly on top of `milvus/hotfix-2.6.16`. ## Additional revert - `2753c8defc7a860446d1f5f76b11a50c3cc71550` reverts `8ae21f715094abc92e00369e89a7208681eecfed` to restore the 2.6.16 build environment image version after CI reported Conan 2.x in the newer image. ## Validation - `git diff --check milvus/hotfix-2.6.16...HEAD` - attempted targeted Go test for `internal/streamingnode/server/wal/adaptor`, blocked locally because this worktree lacks `rocksdb.pc` and `milvus_core.pc` PR CI is the validation gate for this backport. --------- Signed-off-by: Wei Liu <wei.liu@zilliz.com> Signed-off-by: Zhen Ye <chyezh@outlook.com> Co-authored-by: Zhen Ye <chyezh@outlook.com>
96 lines
3.8 KiB
Go
96 lines
3.8 KiB
Go
// Licensed to the LF AI & Data foundation under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package httpserver
|
|
|
|
type CreateCollectionReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
Dimension int32 `json:"dimension" validate:"required"`
|
|
Description string `json:"description"`
|
|
MetricType string `json:"metricType"`
|
|
PrimaryField string `json:"primaryField"`
|
|
VectorField string `json:"vectorField"`
|
|
EnableDynamicField bool `json:"enableDynamicField"`
|
|
}
|
|
|
|
type DropCollectionReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
}
|
|
|
|
type QueryReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
OutputFields []string `json:"outputFields"`
|
|
Filter string `json:"filter" validate:"required"`
|
|
Limit int32 `json:"limit"`
|
|
Offset int32 `json:"offset"`
|
|
}
|
|
|
|
type GetReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
OutputFields []string `json:"outputFields"`
|
|
ID interface{} `json:"id" validate:"required"`
|
|
}
|
|
|
|
type DeleteReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
ID interface{} `json:"id"`
|
|
Filter string `json:"filter"`
|
|
}
|
|
|
|
type InsertReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
Data []map[string]interface{} `json:"data" validate:"required"`
|
|
}
|
|
|
|
type SingleInsertReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
Data map[string]interface{} `json:"data" validate:"required"`
|
|
}
|
|
|
|
type UpsertReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
Data []map[string]interface{} `json:"data" validate:"required"`
|
|
PartialUpdate bool `json:"partialUpdate"`
|
|
FieldOps []FieldPartialUpdateOpReq `json:"fieldOps"`
|
|
}
|
|
|
|
type SingleUpsertReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
Data map[string]interface{} `json:"data" validate:"required"`
|
|
PartialUpdate bool `json:"partialUpdate"`
|
|
FieldOps []FieldPartialUpdateOpReq `json:"fieldOps"`
|
|
}
|
|
|
|
type SearchReq struct {
|
|
DbName string `json:"dbName"`
|
|
CollectionName string `json:"collectionName" validate:"required"`
|
|
Filter string `json:"filter"`
|
|
Limit int32 `json:"limit"`
|
|
Offset int32 `json:"offset"`
|
|
OutputFields []string `json:"outputFields"`
|
|
Vector []float32 `json:"vector"`
|
|
Params map[string]float64 `json:"params"`
|
|
}
|