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]

Reply via email to