Skip to content

fix: fold Power BI pagination and boolean filters - #27

Open
iamlinjunhong wants to merge 1 commit into
mainfrom
codex/powerbi-regression-20260831
Open

fix: fold Power BI pagination and boolean filters#27
iamlinjunhong wants to merge 1 commit into
mainfrom
codex/powerbi-regression-20260831

Conversation

@iamlinjunhong

Copy link
Copy Markdown
Collaborator

Summary

  • advertise Power Query LimitOffset now that MatrixOne supports standalone OFFSET
  • fold Table.Skip and combined skip/take instead of fetching skipped rows locally
  • align MatrixOne BOOL/ODBC SQL_BIT metadata and inline TRUE/FALSE while parameter bindings are disabled
  • isolate strict-folding diagnostics so stale command text cannot create false failures
  • rename the offset-only deep test now that the current server path passes

Evidence

Against MatrixOne main@989e5f2976f5a098e08d89cfbb5f326a1e008dfa:

  • Microsoft Power Query SDK SkipTake.query.pq passes with strict folding
  • before: Table.Skip(264) issued an unbounded SELECT and discarded rows locally
  • after: Table.Skip(264) issues OFFSET 264
  • after: Table.FirstN(Table.Skip(...), 1) issues LIMIT 1 OFFSET 200
  • Microsoft SelectRowsBoolColumn.query.pq folds to WHERE store_and_fwd_flag = TRUE, projection, sort, and LIMIT 2
  • designed boolean filter + projection + group + sort + limit case folds to one server query
  • strict boolean distinct/group/sort/limit control returns NULL, false, and true groups
  • final candidate MatrixOne.mez SHA-256: 97ad85b7c7224e7c4f35ab84e7d4afcc99274f27b836b0c194a7e2ac46e9c9cc
  • real Power BI Desktop DirectQuery refresh passes with the rebuilt MatrixOne.mez
  • real string slicer selection folds and refreshes its visual; Power BI's boolean-slicer limitation is tracked separately in [Power BI]: DirectQuery boolean field cannot populate a slicer #26
  • Unicode deep suite: 37/38; the only failure is server issue [Bug]: Connector/ODBC binary prepared HAVING plus LIMIT loses execute arguments matrixone#27907
  • ANSI deep suite: 37/38; the only failure is server issue [Bug]: Connector/ODBC binary prepared HAVING plus LIMIT loses execute arguments matrixone#27907
  • strict Power Query: Sanity 8/9 (one stale expected nullability result), Standard 88/203
  • compared with the pagination-only candidate, boolean handling fixes IfBoolean, LogicalFrom, SelectRowsBoolColumn, and Sort with no new failures
  • the remaining Standard failures are 77 PQTest null references before ODBC and 38 explicit non-folding expressions, mostly conversions/math/temporal coverage

The strict test runner previously reused files under Diagnostics/MatrixOne.
PQTest treats those files as golden SQL, so a later run could report
Expected diagnostics do not match even when the expression fully folded.
Each strict invocation now uses an empty private temporary directory.

Reproduction artifacts

  • diagnostics-skiptake/SkipTake.odbc.diagnostics (before)
  • diagnostics-skiptake-limitoffset/SkipTake.odbc.diagnostics (after)
  • SelectRowsBoolColumn.fixed.odbc.diagnostics
  • BoolDistinctGroup.strict.log
  • mo-odbc-deep-unicode-limitoffset.log
  • mo-odbc-deep-ansi-limitoffset.log
  • powerquery-strict-folding-pagination-bool.log

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant