Skip to content

fix(dataset): clarify partition preview errors and preserve mapping focus - #45833

Open
hughhhh wants to merge 3 commits into
masterfrom
plan/sc-130303-partition-followup
Open

hughhhh wants to merge 3 commits into
masterfrom
plan/sc-130303-partition-followup

Conversation

@hughhhh

@hughhhh hughhhh commented Oct 29, 2026

Copy link
Copy Markdown
Member

SUMMARY

Partition preview messages could describe a throttled request or NULL output as a broken transform, claim an invalid expression was already saved, or omit the next step for a missing placeholder or incompatible output type. This change distinguishes those outcomes, offers an explicit retry for unavailable previews, and moves keyboard focus to the transform input after moving a mapping.

It also catches unmatched nested parentheses before warehouse probes and uses readable Hive partition-filter errors in Samples and drill-to-detail. Existing save eligibility, emitted predicates, transform defaults, and cached verdict semantics are preserved.

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

  • HTTP 429: “Filters will not be mirrored” → “Preview temporarily unavailable,” with a Retry button.
  • NULL output: generic evaluation failure → an explanation that one or more preview values returned NULL.
  • Move mapping: focus falls off the removed button → focus lands in Value transform.
  • Hive strict mode: raw TExecuteStatementResp(...) → guidance to add a suitable partition filter.

TESTING INSTRUCTIONS

Proof: 642 backend tests and 144 frontend tests pass; staged-file pre-commit checks pass, including mypy and frontend typechecking. Ten new or strengthened backend assertions fail against the unchanged base. Headless Chromium exercised the actual mapping component with controlled HTTP responses and verified focus transfer, accessible placeholder guidance, throttling, and successful retry without page errors.

With PARTITION_FILTER_MAPPING enabled:

  1. Preview extract(epoch from cast(:value as timestamp) and lower(:value), 'x': expect syntax guidance without a warehouse probe or a claim that the mapping was saved.
  2. Preview NULL-producing and incompatible-type transforms: expect distinct NULL and cast guidance. Enter a nonempty transform without :value: expect a nonblocking field warning.
  3. Throttle the preview endpoint: expect an unavailable-preview warning, then successful recovery through Retry.
  4. Activate “Move mapping to this column” with Enter or Space: continue typing directly in Value transform.
  5. On Hive strict mode, open Samples or drill detail without a partition filter: expect a readable error. A working filtered request should still succeed.

The Hive driver error shapes are covered by regression tests; a live Hive warehouse was not available for this run.

ADDITIONAL INFORMATION

  • Has associated issue:
  • Required feature flags: PARTITION_FILTER_MAPPING
  • Changes UI
  • Includes DB Migration
  • Introduces new feature or API: additive preview diagnostic reason null_result
  • Removes existing feature or API

Reviewed with sol-loop: 1 round with GPT-6.1 Sol. Sol verdict: approved.

Created with GPT-6 Astra in T3 Code through the Codex harness.

@github-actions github-actions Bot added the doc Namespace | Anything related to documentation label Oct 29, 2026
@netlify

netlify Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for superset-docs-preview ready!

Name Link
🔨 Latest commit fa83d9f
🔍 Latest deploy log https://app.netlify.com/projects/superset-docs-preview/deploys/6ae638df149586d39d8cf025
😎 Deploy Preview https://deploy-preview-45833--superset-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@codeant-ai-for-open-source

codeant-ai-for-open-source Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

CodeAnt  CodeAnt PR Risk

🟢  Low Risk

  • The PR appears safe to merge; no actionable issues were identified in the review.

Assessed commit: fa83d9f0f62c

@codecov

codecov Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.57143% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 84.77%. Comparing base (7519fa8) to head (fa83d9f).

Files with missing lines Patch % Lines
superset/connectors/sqla/partition_mapping.py 93.33% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master   #45833      +/-   ##
==========================================
+ Coverage   84.76%   84.77%   +0.01%     
==========================================
  Files        3072     3072              
  Lines      206119   206235     +116     
  Branches    48539    48570      +31     
==========================================
+ Hits       174718   174842     +124     
+ Misses      28101    28092       -9     
- Partials     3300     3301       +1     
Flag Coverage Δ
hive 34.48% <18.60%> (-0.01%) ⬇️
javascript 81.08% <100.00%> (+0.02%) ⬆️
mysql 52.59% <27.90%> (-0.02%) ⬇️
postgres 52.60% <27.90%> (-0.02%) ⬇️
presto 36.21% <9.30%> (-0.01%) ⬇️
python 87.77% <97.67%> (+<0.01%) ⬆️
sqlite 52.35% <23.25%> (-0.02%) ⬇️
unit 82.53% <97.67%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 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.

@github-actions github-actions Bot added i18n Namespace | Anything related to localization i18n:spanish Translation related to Spanish language i18n:italian Translation related to Italian language i18n:french Translation related to French language i18n:chinese Translation related to Chinese language i18n:japanese Translation related to Japanese language i18n:russian Translation related to Russian language i18n:korean Translation related to Korean language i18n:dutch i18n:slovak i18n:ukrainian i18n:portuguese i18n:brazilian labels Oct 29, 2026
@github-actions github-actions Bot added the requires:rebase Requires rebasing on top of current master label Oct 30, 2026
hughhhh and others added 3 commits October 31, 2026 14:47
The unmatched-parenthesis helper imported sqlglot directly, which the
disallowed-sql-import pylint check only permits under superset/sql. It
lives there as find_unmatched_parenthesis, with direct tests.

Regenerate messages.pot and the .po catalogs for the reworded partition
preview messages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fetch-retry re-sends a request that an earlier test aborted, and
fetch-mock still runs the route handler for it, so on a slow CI shard
those stray calls landed on this test's counter and its 429/500 slot.
Ignore calls whose signal is already aborted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot removed the requires:rebase Requires rebasing on top of current master label Oct 31, 2026

This branch has not been deployed

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

Labels

doc Namespace | Anything related to documentation i18n:brazilian i18n:chinese Translation related to Chinese language i18n:czech i18n:dutch i18n:french Translation related to French language i18n:italian Translation related to Italian language i18n:japanese Translation related to Japanese language i18n:korean Translation related to Korean language i18n:latvian i18n:persian i18n:portuguese i18n:russian Translation related to Russian language i18n:slovak i18n:spanish Translation related to Spanish language i18n:traditional-chinese i18n:ukrainian i18n Namespace | Anything related to localization size/XXL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant