Skip to content

feat: Add SingleStore online store support for feature view versioning#6195

Open
antznette1 wants to merge 22 commits intofeast-dev:masterfrom
antznette1:singlestore-online-versioning
Open

feat: Add SingleStore online store support for feature view versioning#6195
antznette1 wants to merge 22 commits intofeast-dev:masterfrom
antznette1:singlestore-online-versioning

Conversation

@antznette1
Copy link
Copy Markdown
Contributor

@antznette1 antznette1 commented Mar 29, 2026

What this PR does / why we need it:

This PR adds online feature view versioning support for the SingleStore online store when registry.enable_online_feature_view_versioning is enabled.

It updates SingleStore’s table routing to read/write from versioned namespaces (e.g. {project}_{feature_view}_v{N}) so version-qualified refs like driver_stats@v1:avg_daily_trips can be served from the correct underlying online table. It also updates the global online-store guard to allow version-qualified reads for SingleStore (and still reject unsupported stores) when versioning is enabled.

Additionally, it adds an integration/universal test covering SingleStore version-qualified reads.

Which issue(s) this PR fixes:

Fixes #6181

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

Misc

Notes:

  • Version-qualified reads are only allowed when registry.enable_online_feature_view_versioning is enabled; otherwise VersionedOnlineReadNotSupported is raised.
  • The new SingleStore integration/universal test may be skipped locally if the universal SingleStore environment is not part of the parametrized test matrix (it should run in CI where SingleStore is enabled).

Open with Devin

@antznette1 antznette1 requested review from a team as code owners March 29, 2026 22:42
@antznette1 antznette1 requested review from ejscribner, franciscojavierarceo and shuchu and removed request for a team March 29, 2026 22:42
devin-ai-integration[bot]

This comment was marked as resolved.

@antznette1 antznette1 force-pushed the singlestore-online-versioning branch from 88a6e5b to 0de8845 Compare March 30, 2026 15:26
@antznette1
Copy link
Copy Markdown
Contributor Author

Good day @franciscojavierarceo
I have created the PR, awaiting your review.

Comment thread sdk/python/feast/infra/online_stores/singlestore_online_store/singlestore.py Outdated
Comment thread sdk/python/feast/infra/online_stores/singlestore_online_store/singlestore.py Outdated
Comment thread sdk/python/feast/infra/online_stores/online_store.py Outdated
Comment thread sdk/python/feast/errors.py Outdated
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

@antznette1 antznette1 requested a review from ntkathole April 2, 2026 21:41
@ntkathole ntkathole force-pushed the singlestore-online-versioning branch from ef34979 to 857d237 Compare April 3, 2026 05:00
Comment thread sdk/python/feast/infra/online_stores/singlestore_online_store/singlestore.py Outdated
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

@antznette1 antznette1 force-pushed the singlestore-online-versioning branch from a197d10 to 6cd6eb7 Compare April 5, 2026 09:15
Comment thread infra/feast-operator/Dockerfile Outdated
@antznette1 antznette1 requested a review from ntkathole April 6, 2026 20:46
@ntkathole
Copy link
Copy Markdown
Member

@antznette1 Can you please take a look at #6193, it has shared helper added now for table name and pattern for deleting all versions in teardown ?

@antznette1 antznette1 force-pushed the singlestore-online-versioning branch from c646964 to b06b1ce Compare April 8, 2026 11:29
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

antznette1 and others added 7 commits April 16, 2026 13:07
…singlestore.py

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
@antznette1 antznette1 force-pushed the singlestore-online-versioning branch from f97a997 to 8a64179 Compare April 16, 2026 12:18
devin-ai-integration[bot]

This comment was marked as resolved.

Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
@antznette1
Copy link
Copy Markdown
Contributor Author

@ntkathole , Please can I get a review to this PR?

@antznette1 Sure, please fix the conflicts and the tests

Conflicts has been fixed, can we proceed?

@antznette1
Copy link
Copy Markdown
Contributor Author

@ntkathole , Please can I get a review to my PR?

Comment thread infra/feast-operator/Dockerfile Outdated
@ntkathole
Copy link
Copy Markdown
Member

ntkathole commented Apr 22, 2026

@antznette1 Can you please take a look at #6193, it has shared helper added now for table name and pattern for deleting all versions in teardown ?

@antznette1 I mentioned this to see if we really need registry object passing down the calls or can be resolved with the same approach that PR to handle version cleanup ?

def teardown(self, config, tables, entities, registry=None) -> None:
    project = config.project
    versioning = config.registry.enable_online_feature_view_versioning
    with self._get_cursor(config) as cur:
        for table in tables:
            if not versioning:
                _drop_table_and_index(cur, project, table, enable_versioning=False)
            else:
                # Discover all versioned tables from DB — same as MySQL
                base = f"{project}_{table.name}"
                cur.execute(
                    "SELECT table_name FROM information_schema.tables "
                    "WHERE table_schema = DATABASE() AND "
                    "(table_name = %s OR table_name REGEXP %s)",
                    (base, f"^{base}_v[0-9]+$"),
                )
                for (name,) in cur.fetchall():
                    cur.execute(f"DROP INDEX IF EXISTS {_quote_identifier(name + '_ek')} "
                                f"ON {_quote_identifier(name)}")
                    cur.execute(f"DROP TABLE IF EXISTS {_quote_identifier(name)}")

Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
@antznette1
Copy link
Copy Markdown
Contributor Author

@ntkathole
I have done the requested fixes

Comment thread sdk/python/feast/infra/online_stores/singlestore_online_store/singlestore.py Outdated
Comment thread sdk/python/tests/universal/feature_repos/universal/online_store/postgres.py Outdated
Comment thread sdk/python/feast/metrics.py Outdated
Copy link
Copy Markdown
Member

@franciscojavierarceo franciscojavierarceo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you elaborate on why some of the changes are included in this PR? feels like maybe some other items snuck in. 😅

Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
@antznette1
Copy link
Copy Markdown
Contributor Author

antznette1 commented Apr 23, 2026

can you elaborate on why some of the changes are included in this PR? feels like maybe some other items snuck in. 😅

My bad.
The few unrelated changes snuck into this PR while I was iterating locally (PGVector container wait tweaks, metrics import fallback, and a HybridOnlineStore teardown refactor). They’re not required for SingleStore versioned online store support, so I’ll reverted them locally to keep this PR focused strictly on SingleStore versioning + teardown behavior. I’ll push the revert commit now.

devin-ai-integration[bot]

This comment was marked as resolved.

Signed-off-by: antznette1 <ochiezeanthonette@gmail.com>
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

View 19 additional findings in Devin Review.

Open in Devin Review

@antznette1
Copy link
Copy Markdown
Contributor Author

Good day,
please, I am still waiting for a review on this PR

@antznette1
Copy link
Copy Markdown
Contributor Author

Hello

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add feature view versioning support to SingleStore online store

3 participants