feat(java): let a read request name what it wants pushed down - #971
feat(java): let a read request name what it wants pushed down#971keksmd wants to merge 1 commit into
Conversation
|
cc @SemyonSinchenko @SYaoJun — next slice after #961 (merged). Green CI. |
|
@SemyonSinchenko @SYaoJun this is the read half of the IO API you reviewed in #961, so it may be easiest to look at with that context. Rebased on current It adds the request vocabulary only: projection, optional row range, optional predicate and limit. No query AST and no Arrow dependency in the public surface. |
A physical read is not only a URI. A caller knows which columns it needs, which source rows, which values, and how many rows are enough - and a backend that learns all four up front can skip work that a caller would otherwise have to discard after the fact. Add the request half of the read API: an ordered projection, a half-open row range, an AND conjunction of column filters over immutable scalars, and a row limit. A request also reports which of those hints it actually carries, so a backend can answer for each one instead of guessing. Constraint: filter literals stay immutable and lossless. NaN, infinity, and sub-millisecond timestamps are refused rather than silently compared against a value a stored format cannot represent.
7d920aa to
72abab9
Compare
|
@SemyonSinchenko when you have a moment — this one is green and rebased on current I cannot add reviewers on this repo, so a ping is the only lever I have. Merging this before #972 keeps that one down to a single commit. |
Adds the request-side value types for a pushdown-capable read:
Projection,RowRange,Filter,ComparisonOperator,Literal,ReadRequest, and theReadCapabilityenum a physical reader declares support for.This is the next slice after #961 (merged) — it only describes what a caller can ask a reader to push down. It does not add a reader, a result type, or IO. That's the follow-up PR.
Focused verify:
mvn --no-transfer-progress -f maven-projects/pom.xml -pl io-api -am spotless:checkandclean verify -Dspotless.check.skip=true— clean, tests green.