fix: Null expr does not work for json field (#40456)

issue: https://github.com/milvus-io/milvus/issues/40455

Signed-off-by: sunby <sunbingyi1992@gmail.com>
This commit is contained in:
Bingyi Sun 2025-03-14 16:06:08 +08:00 committed by GitHub
parent 001fc992df
commit 8fbacf3583
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 14 deletions

View File

@ -54,9 +54,7 @@ class ChunkedColumnBase : public ColumnBase {
ChunkedColumnBase() = default;
// memory mode ctor
explicit ChunkedColumnBase(const FieldMeta& field_meta) {
if (field_meta.is_nullable()) {
nullable_ = true;
}
nullable_ = field_meta.is_nullable();
}
virtual ~ChunkedColumnBase() = default;
@ -248,7 +246,9 @@ class ChunkedColumn : public ChunkedColumnBase {
: ChunkedColumnBase(field_meta) {
}
explicit ChunkedColumn(const std::vector<std::shared_ptr<Chunk>>& chunks) {
explicit ChunkedColumn(const FieldMeta& field_meta,
const std::vector<std::shared_ptr<Chunk>>& chunks)
: ChunkedColumnBase(field_meta) {
for (auto& chunk : chunks) {
AddChunk(chunk);
}
@ -272,7 +272,9 @@ class ChunkedSparseFloatColumn : public ChunkedColumnBase {
}
explicit ChunkedSparseFloatColumn(
const std::vector<std::shared_ptr<Chunk>>& chunks) {
const FieldMeta& field_meta,
const std::vector<std::shared_ptr<Chunk>>& chunks)
: ChunkedColumnBase(field_meta) {
for (auto& chunk : chunks) {
AddChunk(chunk);
}
@ -317,7 +319,9 @@ class ChunkedVariableColumn : public ChunkedColumnBase {
}
explicit ChunkedVariableColumn(
const std::vector<std::shared_ptr<Chunk>>& chunks) {
const FieldMeta& field_meta,
const std::vector<std::shared_ptr<Chunk>>& chunks)
: ChunkedColumnBase(field_meta) {
for (auto& chunk : chunks) {
AddChunk(chunk);
}
@ -397,7 +401,9 @@ class ChunkedArrayColumn : public ChunkedColumnBase {
}
explicit ChunkedArrayColumn(
const std::vector<std::shared_ptr<Chunk>>& chunks) {
const FieldMeta& field_meta,
const std::vector<std::shared_ptr<Chunk>>& chunks)
: ChunkedColumnBase(field_meta) {
for (auto& chunk : chunks) {
AddChunk(chunk);
}

View File

@ -531,7 +531,7 @@ ChunkedSegmentSealedImpl::MapFieldData(const FieldId field_id,
// DEFAULT_MMAP_VRCOL_BLOCK_SIZE);
auto var_column =
std::make_shared<ChunkedVariableColumn<std::string>>(
chunks);
field_meta, chunks);
// var_column->Seal(std::move(indices));
column = std::move(var_column);
break;
@ -539,21 +539,22 @@ ChunkedSegmentSealedImpl::MapFieldData(const FieldId field_id,
case milvus::DataType::JSON: {
auto var_column =
std::make_shared<ChunkedVariableColumn<milvus::Json>>(
chunks);
field_meta, chunks);
// var_column->Seal(std::move(indices));
column = std::move(var_column);
break;
}
case milvus::DataType::ARRAY: {
auto arr_column = std::make_shared<ChunkedArrayColumn>(chunks);
auto arr_column =
std::make_shared<ChunkedArrayColumn>(field_meta, chunks);
// arr_column->Seal(std::move(indices),
// std::move(element_indices));
column = std::move(arr_column);
break;
}
case milvus::DataType::VECTOR_SPARSE_FLOAT: {
auto sparse_column =
std::make_shared<ChunkedSparseFloatColumn>(chunks);
auto sparse_column = std::make_shared<ChunkedSparseFloatColumn>(
field_meta, chunks);
// sparse_column->Seal(std::move(indices));
column = std::move(sparse_column);
break;
@ -564,7 +565,7 @@ ChunkedSegmentSealedImpl::MapFieldData(const FieldId field_id,
}
}
} else {
column = std::make_shared<ChunkedColumn>(chunks);
column = std::make_shared<ChunkedColumn>(field_meta, chunks);
}
// column->SetValidData(std::move(valid_data));

View File

@ -106,7 +106,7 @@ ChunkCache::Read(const std::string& filepath,
data_type);
} else {
std::vector<std::shared_ptr<Chunk>> chunks{chunk};
column = std::make_shared<ChunkedColumn>(chunks);
column = std::make_shared<ChunkedColumn>(field_meta, chunks);
}
if (mmap_enabled && mmap_rss_not_need) {
auto ok = madvise(reinterpret_cast<void*>(