{{ message }}
feat(go): Add MySQL registry store support for Go feature server#5933
Merged
ntkathole merged 2 commits intoFeb 6, 2026
Merged
feat(go): Add MySQL registry store support for Go feature server#5933ntkathole merged 2 commits into
ntkathole merged 2 commits into
Conversation
522e2c7 to
d2fa326
Compare
February 2, 2026 10:24
shuchu
approved these changes
Feb 6, 2026
shuchu
left a comment
Collaborator
There was a problem hiding this comment.
lgtm
Sorry, something went wrong.
This adds support for reading Feast registry data from a MySQL database in the Go feature server, enabling parity with the Python SDK's SQL registry store. - `mysql_registry_store.go`: MySQL registry store implementation - Parses SQLAlchemy-style URLs (mysql://user:pass@host:port/db) - Reads all registry tables (projects, entities, feature_views, etc.) - Uses generics for type-safe protobuf unmarshaling - Configurable connection pool settings - `mysql_registry_store_test.go`: Unit tests using in-memory SQLite - Tests registry loading with schema matching Python SQLAlchemy - Tests scheme routing for mysql:// URLs - `registry.go`: Added mysql scheme routing and MySQLRegistryStore factory - `repoconfig.go`: Added MySQL connection pool configuration options - mysql_max_open_conns (default: 20) - mysql_max_idle_conns (default: 10) - mysql_conn_max_lifetime_seconds (default: 300) - `repoconfig_test.go`: Added tests for new MySQL config options Users can configure the MySQL registry in feature_store.yaml: ```yaml registry: path: mysql://user:password@localhost:3306/feast_registry mysql_max_open_conns: 20 mysql_max_idle_conns: 10 mysql_conn_max_lifetime_seconds: 300 ``` The Go implementation reads from the same schema as the Python SQLAlchemy registry (sdk/python/feast/infra/registry/sql.py). When the Python schema evolves, the Go queries must be updated. Signed-off-by: PepeluDev <joseluislobell@gmail.com>
Signed-off-by: PepeluDev <joseluislobell@gmail.com>
88629a1 to
cb5b8ed
Compare
February 6, 2026 06:05
Hide details
View details
ntkathole
merged commit
19f9bb8
into
feast-dev:master
Feb 6, 2026
15 of 17 checks passed
YassinNouh21
pushed a commit
to YassinNouh21/feast
that referenced
this pull request
Feb 7, 2026
…st-dev#5933) * feat(go): Add MySQL registry store support for Go feature server This adds support for reading Feast registry data from a MySQL database in the Go feature server, enabling parity with the Python SDK's SQL registry store. - `mysql_registry_store.go`: MySQL registry store implementation - Parses SQLAlchemy-style URLs (mysql://user:pass@host:port/db) - Reads all registry tables (projects, entities, feature_views, etc.) - Uses generics for type-safe protobuf unmarshaling - Configurable connection pool settings - `mysql_registry_store_test.go`: Unit tests using in-memory SQLite - Tests registry loading with schema matching Python SQLAlchemy - Tests scheme routing for mysql:// URLs - `registry.go`: Added mysql scheme routing and MySQLRegistryStore factory - `repoconfig.go`: Added MySQL connection pool configuration options - mysql_max_open_conns (default: 20) - mysql_max_idle_conns (default: 10) - mysql_conn_max_lifetime_seconds (default: 300) - `repoconfig_test.go`: Added tests for new MySQL config options Users can configure the MySQL registry in feature_store.yaml: ```yaml registry: path: mysql://user:password@localhost:3306/feast_registry mysql_max_open_conns: 20 mysql_max_idle_conns: 10 mysql_conn_max_lifetime_seconds: 300 ``` The Go implementation reads from the same schema as the Python SQLAlchemy registry (sdk/python/feast/infra/registry/sql.py). When the Python schema evolves, the Go queries must be updated. Signed-off-by: PepeluDev <joseluislobell@gmail.com> * docs(go): Clarify MySQL registry store package documentation Signed-off-by: PepeluDev <joseluislobell@gmail.com> --------- Signed-off-by: PepeluDev <joseluislobell@gmail.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
YassinNouh21
pushed a commit
to YassinNouh21/feast
that referenced
this pull request
Feb 7, 2026
…st-dev#5933) * feat(go): Add MySQL registry store support for Go feature server This adds support for reading Feast registry data from a MySQL database in the Go feature server, enabling parity with the Python SDK's SQL registry store. - `mysql_registry_store.go`: MySQL registry store implementation - Parses SQLAlchemy-style URLs (mysql://user:pass@host:port/db) - Reads all registry tables (projects, entities, feature_views, etc.) - Uses generics for type-safe protobuf unmarshaling - Configurable connection pool settings - `mysql_registry_store_test.go`: Unit tests using in-memory SQLite - Tests registry loading with schema matching Python SQLAlchemy - Tests scheme routing for mysql:// URLs - `registry.go`: Added mysql scheme routing and MySQLRegistryStore factory - `repoconfig.go`: Added MySQL connection pool configuration options - mysql_max_open_conns (default: 20) - mysql_max_idle_conns (default: 10) - mysql_conn_max_lifetime_seconds (default: 300) - `repoconfig_test.go`: Added tests for new MySQL config options Users can configure the MySQL registry in feature_store.yaml: ```yaml registry: path: mysql://user:password@localhost:3306/feast_registry mysql_max_open_conns: 20 mysql_max_idle_conns: 10 mysql_conn_max_lifetime_seconds: 300 ``` The Go implementation reads from the same schema as the Python SQLAlchemy registry (sdk/python/feast/infra/registry/sql.py). When the Python schema evolves, the Go queries must be updated. Signed-off-by: PepeluDev <joseluislobell@gmail.com> * docs(go): Clarify MySQL registry store package documentation Signed-off-by: PepeluDev <joseluislobell@gmail.com> --------- Signed-off-by: PepeluDev <joseluislobell@gmail.com> Signed-off-by: yassinnouh21 <yassinnouh21@gmail.com>
franciscojavierarceo
pushed a commit
that referenced
this pull request
Feb 17, 2026
# [0.60.0](v0.59.0...v0.60.0) (2026-02-17) ### Bug Fixes * Added a flag to correctly download the go binaries ([0f77135](0f77135)) * Adds mapping of date Trino's type into string Feast's type ([531e839](531e839)) * **ci:** Use uv run for pytest in master_only benchmark step ([#5957](#5957)) ([5096010](5096010)) * Disable materialized odfvs for historical retrieval ([#5880](#5880)) ([739d28a](739d28a)) * Fix linting and formatting issues ([#5907](#5907)) ([42ca14a](42ca14a)) * Make timestamp field handling compatible with Athena V3 ([#5936](#5936)) ([e2bad34](e2bad34)) * Support pgvector under non-default schema ([#5970](#5970)) ([c636cd4](c636cd4)) * unit tests not running on main branch ([#5909](#5909)) ([62fe664](62fe664)) * Update java dep which blocking release ([#5903](#5903)) ([a5b8186](a5b8186)) * Update the dockerfile with golang 1.24.12. ([#5918](#5918)) ([be1b522](be1b522)) * Use context.Background() in client constructors ([#5897](#5897)) ([984f93a](984f93a)) ### Features * Add blog post for PyTorch ecosystem announcement ([#5906](#5906)) ([d2eb629](d2eb629)) * Add blog post on Feast dbt integration ([#5915](#5915)) ([b3c8138](b3c8138)) * Add DynamoDB in-place list update support for array-based features ([#5916](#5916)) ([aa5973f](aa5973f)) * Add HTTP connection pooling for remote online store client ([#5895](#5895)) ([e022bf8](e022bf8)) * Add integration tests for dbt import ([#5899](#5899)) ([a444692](a444692)) * Add lazy initialization and feature service caching ([#5924](#5924)) ([b37b7d0](b37b7d0)) * Add multiple entity support to dbt integration ([#5901](#5901)) ([05a4fb5](05a4fb5)), closes [#5872](#5872) * Add PostgreSQL online store support for Go feature server ([#5963](#5963)) ([b8c6f3d](b8c6f3d)) * Add publish docker image of Go feature server. ([#5923](#5923)) ([759d8c6](759d8c6)) * Add Set as feature type ([#5888](#5888)) ([52458fc](52458fc)) * Added online server worker config support in operator ([#5926](#5926)) ([193c72a](193c72a)) * Added support for OpenLineage integration ([#5884](#5884)) ([df70d8d](df70d8d)) * Adjust ray offline store to support abfs(s) ADLS Azure Storage ([#5911](#5911)) ([d6c0b2d](d6c0b2d)) * Batch_engine config injection in feature_store.yaml through operator ([#5938](#5938)) ([455d56c](455d56c)) * Consolidate Python packaging - remove setup.py/setup.cfg, standardize on pyproject.toml and uv ([16696b8](16696b8)) * **go:** Add MySQL registry store support for Go feature server ([#5933](#5933)) ([19f9bb8](19f9bb8)) * Improve local dev experience with file-aware hooks and auto parallelization ([#5956](#5956)) ([839b79e](839b79e)) * Modernize precommit hooks and optimize test performance ([#5929](#5929)) ([ea7d4fa](ea7d4fa)) * Optimize container infrastructure for production ([#5881](#5881)) ([5ebdac8](5ebdac8)) * Optimize DynamoDB online store for improved latency ([#5889](#5889)) ([fcc8274](fcc8274))
soooojinlee
pushed a commit
to soooojinlee/feast
that referenced
this pull request
Feb 18, 2026
# [0.60.0](feast-dev/feast@v0.59.0...v0.60.0) (2026-02-17) ### Bug Fixes * Added a flag to correctly download the go binaries ([0f77135](feast-dev@0f77135)) * Adds mapping of date Trino's type into string Feast's type ([531e839](feast-dev@531e839)) * **ci:** Use uv run for pytest in master_only benchmark step ([feast-dev#5957](feast-dev#5957)) ([5096010](feast-dev@5096010)) * Disable materialized odfvs for historical retrieval ([feast-dev#5880](feast-dev#5880)) ([739d28a](feast-dev@739d28a)) * Fix linting and formatting issues ([feast-dev#5907](feast-dev#5907)) ([42ca14a](feast-dev@42ca14a)) * Make timestamp field handling compatible with Athena V3 ([feast-dev#5936](feast-dev#5936)) ([e2bad34](feast-dev@e2bad34)) * Support pgvector under non-default schema ([feast-dev#5970](feast-dev#5970)) ([c636cd4](feast-dev@c636cd4)) * unit tests not running on main branch ([feast-dev#5909](feast-dev#5909)) ([62fe664](feast-dev@62fe664)) * Update java dep which blocking release ([feast-dev#5903](feast-dev#5903)) ([a5b8186](feast-dev@a5b8186)) * Update the dockerfile with golang 1.24.12. ([feast-dev#5918](feast-dev#5918)) ([be1b522](feast-dev@be1b522)) * Use context.Background() in client constructors ([feast-dev#5897](feast-dev#5897)) ([984f93a](feast-dev@984f93a)) ### Features * Add blog post for PyTorch ecosystem announcement ([feast-dev#5906](feast-dev#5906)) ([d2eb629](feast-dev@d2eb629)) * Add blog post on Feast dbt integration ([feast-dev#5915](feast-dev#5915)) ([b3c8138](feast-dev@b3c8138)) * Add DynamoDB in-place list update support for array-based features ([feast-dev#5916](feast-dev#5916)) ([aa5973f](feast-dev@aa5973f)) * Add HTTP connection pooling for remote online store client ([feast-dev#5895](feast-dev#5895)) ([e022bf8](feast-dev@e022bf8)) * Add integration tests for dbt import ([feast-dev#5899](feast-dev#5899)) ([a444692](feast-dev@a444692)) * Add lazy initialization and feature service caching ([feast-dev#5924](feast-dev#5924)) ([b37b7d0](feast-dev@b37b7d0)) * Add multiple entity support to dbt integration ([feast-dev#5901](feast-dev#5901)) ([05a4fb5](feast-dev@05a4fb5)), closes [feast-dev#5872](feast-dev#5872) * Add PostgreSQL online store support for Go feature server ([feast-dev#5963](feast-dev#5963)) ([b8c6f3d](feast-dev@b8c6f3d)) * Add publish docker image of Go feature server. ([feast-dev#5923](feast-dev#5923)) ([759d8c6](feast-dev@759d8c6)) * Add Set as feature type ([feast-dev#5888](feast-dev#5888)) ([52458fc](feast-dev@52458fc)) * Added online server worker config support in operator ([feast-dev#5926](feast-dev#5926)) ([193c72a](feast-dev@193c72a)) * Added support for OpenLineage integration ([feast-dev#5884](feast-dev#5884)) ([df70d8d](feast-dev@df70d8d)) * Adjust ray offline store to support abfs(s) ADLS Azure Storage ([feast-dev#5911](feast-dev#5911)) ([d6c0b2d](feast-dev@d6c0b2d)) * Batch_engine config injection in feature_store.yaml through operator ([feast-dev#5938](feast-dev#5938)) ([455d56c](feast-dev@455d56c)) * Consolidate Python packaging - remove setup.py/setup.cfg, standardize on pyproject.toml and uv ([16696b8](feast-dev@16696b8)) * **go:** Add MySQL registry store support for Go feature server ([feast-dev#5933](feast-dev#5933)) ([19f9bb8](feast-dev@19f9bb8)) * Improve local dev experience with file-aware hooks and auto parallelization ([feast-dev#5956](feast-dev#5956)) ([839b79e](feast-dev@839b79e)) * Modernize precommit hooks and optimize test performance ([feast-dev#5929](feast-dev#5929)) ([ea7d4fa](feast-dev@ea7d4fa)) * Optimize container infrastructure for production ([feast-dev#5881](feast-dev#5881)) ([5ebdac8](feast-dev@5ebdac8)) * Optimize DynamoDB online store for improved latency ([feast-dev#5889](feast-dev#5889)) ([fcc8274](feast-dev@fcc8274)) Signed-off-by: soojin <soojin@dable.io>
jyejare
pushed a commit
to opendatahub-io/feast
that referenced
this pull request
Mar 9, 2026
…st-dev#5933) * feat(go): Add MySQL registry store support for Go feature server This adds support for reading Feast registry data from a MySQL database in the Go feature server, enabling parity with the Python SDK's SQL registry store. - `mysql_registry_store.go`: MySQL registry store implementation - Parses SQLAlchemy-style URLs (mysql://user:pass@host:port/db) - Reads all registry tables (projects, entities, feature_views, etc.) - Uses generics for type-safe protobuf unmarshaling - Configurable connection pool settings - `mysql_registry_store_test.go`: Unit tests using in-memory SQLite - Tests registry loading with schema matching Python SQLAlchemy - Tests scheme routing for mysql:// URLs - `registry.go`: Added mysql scheme routing and MySQLRegistryStore factory - `repoconfig.go`: Added MySQL connection pool configuration options - mysql_max_open_conns (default: 20) - mysql_max_idle_conns (default: 10) - mysql_conn_max_lifetime_seconds (default: 300) - `repoconfig_test.go`: Added tests for new MySQL config options Users can configure the MySQL registry in feature_store.yaml: ```yaml registry: path: mysql://user:password@localhost:3306/feast_registry mysql_max_open_conns: 20 mysql_max_idle_conns: 10 mysql_conn_max_lifetime_seconds: 300 ``` The Go implementation reads from the same schema as the Python SQLAlchemy registry (sdk/python/feast/infra/registry/sql.py). When the Python schema evolves, the Go queries must be updated. Signed-off-by: PepeluDev <joseluislobell@gmail.com> * docs(go): Clarify MySQL registry store package documentation Signed-off-by: PepeluDev <joseluislobell@gmail.com> --------- Signed-off-by: PepeluDev <joseluislobell@gmail.com>
Shizoqua
pushed a commit
to Shizoqua/feast
that referenced
this pull request
Mar 18, 2026
…st-dev#5933) * feat(go): Add MySQL registry store support for Go feature server This adds support for reading Feast registry data from a MySQL database in the Go feature server, enabling parity with the Python SDK's SQL registry store. - `mysql_registry_store.go`: MySQL registry store implementation - Parses SQLAlchemy-style URLs (mysql://user:pass@host:port/db) - Reads all registry tables (projects, entities, feature_views, etc.) - Uses generics for type-safe protobuf unmarshaling - Configurable connection pool settings - `mysql_registry_store_test.go`: Unit tests using in-memory SQLite - Tests registry loading with schema matching Python SQLAlchemy - Tests scheme routing for mysql:// URLs - `registry.go`: Added mysql scheme routing and MySQLRegistryStore factory - `repoconfig.go`: Added MySQL connection pool configuration options - mysql_max_open_conns (default: 20) - mysql_max_idle_conns (default: 10) - mysql_conn_max_lifetime_seconds (default: 300) - `repoconfig_test.go`: Added tests for new MySQL config options Users can configure the MySQL registry in feature_store.yaml: ```yaml registry: path: mysql://user:password@localhost:3306/feast_registry mysql_max_open_conns: 20 mysql_max_idle_conns: 10 mysql_conn_max_lifetime_seconds: 300 ``` The Go implementation reads from the same schema as the Python SQLAlchemy registry (sdk/python/feast/infra/registry/sql.py). When the Python schema evolves, the Go queries must be updated. Signed-off-by: PepeluDev <joseluislobell@gmail.com> * docs(go): Clarify MySQL registry store package documentation Signed-off-by: PepeluDev <joseluislobell@gmail.com> --------- Signed-off-by: PepeluDev <joseluislobell@gmail.com> Signed-off-by: Shizoqua <hr.lanreshittu@gmail.com>
Shizoqua
pushed a commit
to Shizoqua/feast
that referenced
this pull request
Mar 18, 2026
# [0.60.0](feast-dev/feast@v0.59.0...v0.60.0) (2026-02-17) ### Bug Fixes * Added a flag to correctly download the go binaries ([0f77135](feast-dev@0f77135)) * Adds mapping of date Trino's type into string Feast's type ([531e839](feast-dev@531e839)) * **ci:** Use uv run for pytest in master_only benchmark step ([feast-dev#5957](feast-dev#5957)) ([5096010](feast-dev@5096010)) * Disable materialized odfvs for historical retrieval ([feast-dev#5880](feast-dev#5880)) ([739d28a](feast-dev@739d28a)) * Fix linting and formatting issues ([feast-dev#5907](feast-dev#5907)) ([42ca14a](feast-dev@42ca14a)) * Make timestamp field handling compatible with Athena V3 ([feast-dev#5936](feast-dev#5936)) ([e2bad34](feast-dev@e2bad34)) * Support pgvector under non-default schema ([feast-dev#5970](feast-dev#5970)) ([c636cd4](feast-dev@c636cd4)) * unit tests not running on main branch ([feast-dev#5909](feast-dev#5909)) ([62fe664](feast-dev@62fe664)) * Update java dep which blocking release ([feast-dev#5903](feast-dev#5903)) ([a5b8186](feast-dev@a5b8186)) * Update the dockerfile with golang 1.24.12. ([feast-dev#5918](feast-dev#5918)) ([be1b522](feast-dev@be1b522)) * Use context.Background() in client constructors ([feast-dev#5897](feast-dev#5897)) ([984f93a](feast-dev@984f93a)) ### Features * Add blog post for PyTorch ecosystem announcement ([feast-dev#5906](feast-dev#5906)) ([d2eb629](feast-dev@d2eb629)) * Add blog post on Feast dbt integration ([feast-dev#5915](feast-dev#5915)) ([b3c8138](feast-dev@b3c8138)) * Add DynamoDB in-place list update support for array-based features ([feast-dev#5916](feast-dev#5916)) ([aa5973f](feast-dev@aa5973f)) * Add HTTP connection pooling for remote online store client ([feast-dev#5895](feast-dev#5895)) ([e022bf8](feast-dev@e022bf8)) * Add integration tests for dbt import ([feast-dev#5899](feast-dev#5899)) ([a444692](feast-dev@a444692)) * Add lazy initialization and feature service caching ([feast-dev#5924](feast-dev#5924)) ([b37b7d0](feast-dev@b37b7d0)) * Add multiple entity support to dbt integration ([feast-dev#5901](feast-dev#5901)) ([05a4fb5](feast-dev@05a4fb5)), closes [feast-dev#5872](feast-dev#5872) * Add PostgreSQL online store support for Go feature server ([feast-dev#5963](feast-dev#5963)) ([b8c6f3d](feast-dev@b8c6f3d)) * Add publish docker image of Go feature server. ([feast-dev#5923](feast-dev#5923)) ([759d8c6](feast-dev@759d8c6)) * Add Set as feature type ([feast-dev#5888](feast-dev#5888)) ([52458fc](feast-dev@52458fc)) * Added online server worker config support in operator ([feast-dev#5926](feast-dev#5926)) ([193c72a](feast-dev@193c72a)) * Added support for OpenLineage integration ([feast-dev#5884](feast-dev#5884)) ([df70d8d](feast-dev@df70d8d)) * Adjust ray offline store to support abfs(s) ADLS Azure Storage ([feast-dev#5911](feast-dev#5911)) ([d6c0b2d](feast-dev@d6c0b2d)) * Batch_engine config injection in feature_store.yaml through operator ([feast-dev#5938](feast-dev#5938)) ([455d56c](feast-dev@455d56c)) * Consolidate Python packaging - remove setup.py/setup.cfg, standardize on pyproject.toml and uv ([16696b8](feast-dev@16696b8)) * **go:** Add MySQL registry store support for Go feature server ([feast-dev#5933](feast-dev#5933)) ([19f9bb8](feast-dev@19f9bb8)) * Improve local dev experience with file-aware hooks and auto parallelization ([feast-dev#5956](feast-dev#5956)) ([839b79e](feast-dev@839b79e)) * Modernize precommit hooks and optimize test performance ([feast-dev#5929](feast-dev#5929)) ([ea7d4fa](feast-dev@ea7d4fa)) * Optimize container infrastructure for production ([feast-dev#5881](feast-dev#5881)) ([5ebdac8](feast-dev@5ebdac8)) * Optimize DynamoDB online store for improved latency ([feast-dev#5889](feast-dev#5889)) ([fcc8274](feast-dev@fcc8274)) Signed-off-by: Shizoqua <hr.lanreshittu@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.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.
What this PR does / why we need it
Adds MySQL registry store support to the Go feature server, enabling it to read registry data from MySQL databases. This brings the Go feature server to parity with the Python SDK's SQL registry store.
Changes
New files
go/internal/feast/registry/mysql_registry_store.go- MySQL registry store implementationmysql://user:pass@host:port/db)go/internal/feast/registry/mysql_registry_store_test.go- Unit testsmysql://URLsModified files
go/internal/feast/registry/registry.go- Addedmysqlscheme routing andMySQLRegistryStorefactorygo/internal/feast/registry/repoconfig.go- Added MySQL connection pool configuration optionsgo/internal/feast/registry/repoconfig_test.go- Added tests for new config optionsConfiguration example
Schema compatibility
The Go implementation reads from the same schema as the Python SQLAlchemy registry (
sdk/python/feast/infra/registry/sql.py). When the Python schema evolves, the Go queries must be updated accordingly.Does this PR introduce a user-facing change?
Yes - Go feature server now supports MySQL registry stores.
Release Notes