GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat: Store arrays and Json natively in every new Milvus collection by jiwidi · Pull Request #7123 · feast-dev/feast

Conversation

@jiwidi

@jiwidi jiwidi commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

#7120 added native ARRAY and JSON columns to the Milvus online store, behind
enable_openai_compatible_store. This PR removes that condition. Every new collection stores
arrays and Json values natively:

Feast type Milvus column
Array of String, Bool, Int32, Int64, Float32, Float64 or UnixTimestamp, without vector_index ARRAY of the element type, with at most milvus.max_capacity elements (default and maximum 4096)
Json and Array(Json) JSON

enable_openai_compatible_store keeps its original meaning: it selects native numeric columns.
Map and Struct stay serialized, as in #7120.

Why no flag. The text storage is not a format to keep. A filter cannot reach a base64 column,
and Milvus cannot validate it. With the flag, a user gets the weaker storage unless they find a
setting whose name does not describe it. The #7120 benchmark shows that native columns cost nothing
on insert and make array and JSON path filters possible.

Effect on existing users. A collection that an older Feast version created keeps its VARCHAR
columns and keeps working. The column types of each collection decide how a row is written and
read, as #7025 does for numeric columns. Only new collections change, and three things differ for
them:

  • An array holds at most 4096 elements.
  • A Json value must be an object or an array.
  • JSON text comes back re-serialized, so its formatting can change.

The docs describe how to recreate a collection and a staged cutover that avoids a feast teardown.

Open question for maintainers. Is a new default with a release note acceptable here? If you
prefer to keep an opt-in flag, I will close this PR, or change it to a dedicated flag with a
clearer name.

Which issue(s) this PR fixes:

N/A

Checks

  • I've made sure the tests are passing.
  • My commits are signed off (git commit -s)
  • My PR title follows conventional commits format

Testing Strategy

  • Unit tests

  • Integration tests

  • Manual tests

  • Testing is not required for this change

  • Unit (mocked client): Json and arrays get nullable JSON and ARRAY columns with the flag
    off, and numerics stay VARCHAR until the flag is on.

  • Unit (Milvus Lite): the complex-value round-trip, the JSON path filter and the array element
    delete from feat: Add native complex types and scalar index tags to the Milvus online store #7120 now run with the default config.

  • Server: the same tests pass on a local Milvus 3.0.2 server without the flag.

76 unit tests on Milvus Lite 3.2.1 (pymilvus 3.0.2) and 15 server tests in
sdk/python/tests/integration/online_store/test_milvus_remote.py pass.

Misc

Follows #7120. This PR and #7118 change adjacent lines of the config table in the docs. I will
rebase the second one after the first merges.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@jiwidi
jiwidi requested a review from a team as a code owner November 10, 2026 12:29
@codecov-commenter

codecov-commenter commented Nov 10, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 51.81%. Comparing base (bf74b10) to head (bea58b2).
⚠️ Report is 6 commits behind head on master.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #7123      +/-   ##
==========================================
+ Coverage   51.79%   51.81%   +0.01%     
==========================================
  Files         458      458              
  Lines       57715    57736      +21     
  Branches     8483     8486       +3     
==========================================
+ Hits        29896    29918      +22     
+ Misses      25793    25792       -1     
  Partials     2026     2026              
Flag Coverage Δ *Carryforward flag
go-feature-server 30.58% <ø> (ø) Carriedforward from bf74b10
python-unit 53.31% <100.00%> (+0.02%) ⬆️

*This pull request uses carry forward flags. Click here to find out more.

Files with missing lines Coverage Δ
.../infra/online_stores/milvus_online_store/milvus.py 88.14% <100.00%> (+0.13%) ⬆️

Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 2f7f57e...bea58b2. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ntkathole
ntkathole force-pushed the feat/milvus-native-arrays-json-default branch from b9e5fda to 2575e2a Compare November 11, 2026 04:04
@ntkathole ntkathole added the ok-to-test label Nov 11, 2026
ntkathole
ntkathole approved these changes Nov 11, 2026
View reviewed changes
@jiwidi @ntkathole
feat: Store arrays and Json natively for every new collection
bea58b2
ARRAY and JSON columns are independent of enable_openai_compatible_store.
Every new collection gets them. A collection that an older Feast version
created keeps its VARCHAR columns, and the column types of each collection
decide how a row is written and read.

Signed-off-by: jiwidi <[email protected]>
@ntkathole
ntkathole force-pushed the feat/milvus-native-arrays-json-default branch from 2575e2a to bea58b2 Compare November 11, 2026 14:40
@ntkathole
ntkathole merged commit 4068002 into feast-dev:master Nov 11, 2026
18 of 23 checks passed

Uh oh!

There was an error while loading. Please reload this page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ntkathole ntkathole ntkathole approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

ok-to-test

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@jiwidi @codecov-commenter @ntkathole
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.