plusplusjiajia opened a new pull request, #1092: URL: https://github.com/apache/paimon-rust/pull/1092
### Purpose Follow-up to #1089. Under `query-auth.enabled`, a read with BLOB columns resolves the BLOB views its predicates read before LIMIT applies, a whole batch at a time. With `WHERE picture IS NOT NULL LIMIT 2`, every reference in the batch is looked up, including ones past the quota, and a missing upstream object fails a query whose result never needed it. The unrestricted read already avoids this by reading one candidate at a time when a LIMIT has a predicate on resolved values (`DataEvolutionReader::effective_batch_size`). This brings the query-auth path in line. ### Brief change log - `read_restricted`: when a LIMIT is set and a pending predicate reads a BLOB view that will be resolved (including a masked alias of one), the unresolved inner read uses `read.batch-size = 1`. The view lookup and the LIMIT downstream both pull lazily, so the read stops at the quota. - The masked BLOB options are computed before the inner read so the check sees masked aliases. Out of scope: views read by another `OR` branch are still resolved for the whole batch, on both the ordinary and the query-auth paths. ### Tests `test_blob_view_limit_only_resolves_selected_references` gains a query-auth case: the server's row filter admits the invalid fourth reference, and `picture IS NOT NULL LIMIT 2` must return rows 1 and 3 without resolving it. ### API and Format None. ### Documentation None. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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]
