mikebridge opened a new pull request, #44832:
URL: https://github.com/apache/superset/pull/44832

   ### SUMMARY
   
   Semantic-layer providers can page their results. Today a chart silently 
renders only the first provider page (e.g. MetricFlow's 1,024 rows) and looks 
complete. For a time series, that means the oldest rows are shown and recent 
history is missing without any warning.
   
   This PR makes result completeness an explicit contract:
   
   - Providers can report whether a result is **verified complete**. The host 
fails the query with an actionable error when a result is **incomplete** (fewer 
rows delivered than requested/available) or **unverified** (completeness 
evidence missing, malformed or contradictory). No partial success is returned.
   - Verified complete results succeed unchanged, including results of exactly 
the page size (1,024). Explicit row limits keep their meaning.
   - The same guard applies to chart data, the datasource values endpoint, 
time-comparison subqueries and cached results. A legacy cached result without 
verified completeness is not served as complete.
   - Async Explore surfaces the safe, actionable completeness message instead 
of the generic "One or more chart-data queries failed".
   - `superset-core`: optional completeness signalling on the semantic-layer 
result type, with backwards-compatible defaults for providers that don't 
implement it.
   
   Supported pagination beyond the first page is out of scope here; this is the 
correctness guard that prevents silent truncation.
   
   ### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
   
   Before: a 1,025+ row semantic query renders 1,024 rows as an apparently 
complete chart.
   After: the chart shows an actionable "results are incomplete" error; 
verified complete results render as before. (Screenshots to follow with browser 
acceptance.)
   
   ### TESTING INSTRUCTIONS
   
   - `pytest tests/unit_tests/semantic_layers/ 
tests/unit_tests/common/test_query_context_processor.py 
tests/unit_tests/tasks/test_async_queries.py`
   - `npm run test -- src/middleware/asyncEvent.test.ts` (in 
`superset-frontend`)
   - With a provider that pages at N rows: request N-1, N and N+1 rows. N-1 and 
N succeed; N+1 fails with the incomplete-result error in both sync and async 
Explore.
   
   ### ADDITIONAL INFORMATION
   
   - [ ] Has associated issue:
   - [ ] Required feature flags:
   - [x] Changes UI
   - [ ] Includes DB Migration
   - [ ] Introduces new feature or API
   - [ ] Removes existing feature or API
   
   Draft: async browser acceptance is still outstanding, and the branch needs a 
master merge before review.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to