René's URL Explorer Experiment


Title: fix(compute-engine/local): Honor field_mapping on join keys in dedup + join nodes by 1fanwang · Pull Request #6395 · feast-dev/feast · GitHub

Open Graph Title: fix(compute-engine/local): Honor field_mapping on join keys in dedup + join nodes by 1fanwang · Pull Request #6395 · feast-dev/feast

X Title: fix(compute-engine/local): Honor field_mapping on join keys in dedup + join nodes by 1fanwang · Pull Request #6395 · feast-dev/feast

Description: What this PR does Fixes #5942. The bug isn't actually Snowflake-specific despite the issue title — it lives in the local compute engine's DAG nodes. Path: _get_column_names() returns the reverse-mapped join keys (e.g. ["USERID"]). pull_latest_from_table_or_query is called with those raw names — correct, the offline store needs them. LocalSourceReadNode.execute renames the result columns via field_mapping.get(col, col) — the table now has user_id. LocalDedupNode and LocalJoinNode then look up column_info.join_keys (still ["USERID"]) on a df whose columns are user_id. pandas raises KeyError: Index(['USERID'], dtype='object') — the exact error in the issue. The existing ColumnInfo class already has mapped properties for timestamp_column and created_timestamp_column (precedent: PR #4886, which fixed the analogous bug for get_historical_features). This PR adds the missing join_keys_columns mapped property and uses it in LocalDedupNode and LocalJoinNode. How was this tested? New regression test test_local_dedup_node_with_field_mapping_on_join_key in tests/unit/infra/compute_engines/local/test_nodes.py. Reproduces the exact KeyError(['USERID']) on master; passes with this PR. All 9 existing tests in test_nodes.py still pass. All 62 tests under tests/unit/infra/compute_engines/ still pass. ruff check, ruff format --check, mypy all clean. Scope Local-engine only. The Spark, Ray, AWS Lambda, k8s, and Snowflake compute engines have the same column_info.join_keys lookup pattern in their nodes and likely the same latent bug. Each is a separate <50 LoC follow-up — happy to file those if maintainers want them in this PR or as stacked.

Open Graph Description: What this PR does Fixes #5942. The bug isn't actually Snowflake-specific despite the issue title — it lives in the local compute engine's DAG nodes. Path: _get_column_names() returns the r...

X Description: What this PR does Fixes #5942. The bug isn&#39;t actually Snowflake-specific despite the issue title — it lives in the local compute engine&#39;s DAG nodes. Path: _get_column_names() retur...

Opengraph URL: https://github.com/feast-dev/feast/pull/6395

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:6caff467-6346-a4e8-9ba1-a40542f639ad
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idDE48:4F8A:1350BEC:1A27E36:6A4EEC0B
html-safe-nonce0766a5352975fb089edc290405b1bb3117c55c75255b8262dc5b08dbf7efc350
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERTQ4OjRGOEE6MTM1MEJFQzoxQTI3RTM2OjZBNEVFQzBCIiwidmlzaXRvcl9pZCI6IjYxMzg5MTcxMDcyMzQ5NTgzNDciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmace4e8990bdefe0adbb8e3961cbef821a33bd24acf8d3c501f800987b5b6e34dab
hovercard-subject-tagpull_request:3667339023
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/feast-dev/feast/pull/6395/files
twitter:imagehttps://avatars.githubusercontent.com/u/21269208?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/21269208?s=400&v=4
og:image:altWhat this PR does Fixes #5942. The bug isn't actually Snowflake-specific despite the issue title — it lives in the local compute engine's DAG nodes. Path: _get_column_names() returns the r...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/feast-dev/feast git https://github.com/feast-dev/feast.git
octolytics-dimension-user_id57027613
octolytics-dimension-user_loginfeast-dev
octolytics-dimension-repository_id161133770
octolytics-dimension-repository_nwofeast-dev/feast
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id161133770
octolytics-dimension-repository_network_root_nwofeast-dev/feast
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release00d04d6b867d2f16ab50bebae8ccc56e07c8988b
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/feast-dev/feast/pull/6395/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F6395%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F6395%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=feast-dev%2Ffeast
Reloadhttps://github.com/feast-dev/feast/pull/6395/files
Reloadhttps://github.com/feast-dev/feast/pull/6395/files
Reloadhttps://github.com/feast-dev/feast/pull/6395/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6395/files
feast-dev https://github.com/feast-dev
feasthttps://github.com/feast-dev/feast
Notifications https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Fork 1.4k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Star 7.1k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Code https://github.com/feast-dev/feast
Issues 212 https://github.com/feast-dev/feast/issues
Pull requests 171 https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security and quality 1 https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Code https://github.com/feast-dev/feast
Issues https://github.com/feast-dev/feast/issues
Pull requests https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security and quality https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
franciscojavierarceohttps://github.com/franciscojavierarceo
feast-dev:masterhttps://github.com/feast-dev/feast/tree/master
1fanwang:fix/materialize-field-mapping-on-join-keyshttps://github.com/1fanwang/feast/tree/fix/materialize-field-mapping-on-join-keys
Conversation 1 https://github.com/feast-dev/feast/pull/6395
Commits 3 https://github.com/feast-dev/feast/pull/6395/commits
Checks 26 https://github.com/feast-dev/feast/pull/6395/checks
Files changed https://github.com/feast-dev/feast/pull/6395/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6395/files
fix(compute-engine/local): Honor field_mapping on join keys in dedup + join nodes https://github.com/feast-dev/feast/pull/6395/files#top
Show all changes 3 commits https://github.com/feast-dev/feast/pull/6395/files
068c388 fix: Apply field mapping to join keys in local compute engine nodes 1fanwang May 12, 2026 https://github.com/feast-dev/feast/pull/6395/commits/068c3887c8a05854f5b000ba6d9a763f2ad52f2a
61e440f test: also cover LocalJoinNode field_mapping case 1fanwang May 12, 2026 https://github.com/feast-dev/feast/pull/6395/commits/61e440f05e78e38ded075f6835dc1f7c48dda292
2262af5 Merge branch 'master' into fix/materialize-field-mapping-on-join-keys 1fanwang May 13, 2026 https://github.com/feast-dev/feast/pull/6395/commits/2262af55374ce3e4617a287d73c3ade00889524d
Clear filters https://github.com/feast-dev/feast/pull/6395/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6395/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/6395/files
context.py https://github.com/feast-dev/feast/pull/6395/files#diff-35a490928119fa6e3653c7bfd377836af895ed1387a43c66d596169f6263d1b0
nodes.py https://github.com/feast-dev/feast/pull/6395/files#diff-2bd83cc19ff86d45bccb21f290302107ce03cff87ace4e600cda864645481f8d
test_nodes.py https://github.com/feast-dev/feast/pull/6395/files#diff-c4d5ec42f07bbfbdb88dcb8c681da2c25e94694dcb9200116eb604777d57fb8f
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L10
sdk/python/feast/infra/compute_engines/dag/context.pyhttps://github.com/feast-dev/feast/pull/6395/files#diff-35a490928119fa6e3653c7bfd377836af895ed1387a43c66d596169f6263d1b0
View file https://github.com/1fanwang/feast/blob/2262af55374ce3e4617a287d73c3ade00889524d/sdk/python/feast/infra/compute_engines/dag/context.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6395/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6395/files#diff-35a490928119fa6e3653c7bfd377836af895ed1387a43c66d596169f6263d1b0
https://github.com/feast-dev/feast/pull/6395/files#diff-35a490928119fa6e3653c7bfd377836af895ed1387a43c66d596169f6263d1b0
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L10
sdk/python/feast/infra/compute_engines/local/nodes.pyhttps://github.com/feast-dev/feast/pull/6395/files#diff-2bd83cc19ff86d45bccb21f290302107ce03cff87ace4e600cda864645481f8d
View file https://github.com/1fanwang/feast/blob/2262af55374ce3e4617a287d73c3ade00889524d/sdk/python/feast/infra/compute_engines/local/nodes.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6395/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6395/files#diff-2bd83cc19ff86d45bccb21f290302107ce03cff87ace4e600cda864645481f8d
https://github.com/feast-dev/feast/pull/6395/files#diff-2bd83cc19ff86d45bccb21f290302107ce03cff87ace4e600cda864645481f8d
https://github.com/feast-dev/feast/pull/6395/files#diff-2bd83cc19ff86d45bccb21f290302107ce03cff87ace4e600cda864645481f8d
https://github.com/feast-dev/feast/pull/6395/files#diff-2bd83cc19ff86d45bccb21f290302107ce03cff87ace4e600cda864645481f8d
https://github.com/feast-dev/feast/pull/6395/files#diff-2bd83cc19ff86d45bccb21f290302107ce03cff87ace4e600cda864645481f8d
https://github.com/feast-dev/feast/blob/master/CODEOWNERS#L10
sdk/python/tests/unit/infra/compute_engines/local/test_nodes.pyhttps://github.com/feast-dev/feast/pull/6395/files#diff-c4d5ec42f07bbfbdb88dcb8c681da2c25e94694dcb9200116eb604777d57fb8f
View file https://github.com/1fanwang/feast/blob/2262af55374ce3e4617a287d73c3ade00889524d/sdk/python/tests/unit/infra/compute_engines/local/test_nodes.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/feast-dev/feast/pull/6395/{{ revealButtonHref }}
https://github.com/feast-dev/feast/pull/6395/files#diff-c4d5ec42f07bbfbdb88dcb8c681da2c25e94694dcb9200116eb604777d57fb8f
https://github.com/feast-dev/feast/pull/6395/files#diff-c4d5ec42f07bbfbdb88dcb8c681da2c25e94694dcb9200116eb604777d57fb8f
Please reload this pagehttps://github.com/feast-dev/feast/pull/6395/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.