Part 1: Support Scan Planning in Rest Client
About the change
Solves https://github.com/apache/iceberg/issues/13005
PR for resuming the work for scan planning (previous pr : https://github.com/apache/iceberg/pull/11180), presently since the client is not ready it can't be used even if IRC Server (for ex Apache Polaris ) supports it. Scan planning unblocks many use-cases such as inter-op.
This is Part 1 of changes https://github.com/apache/iceberg/pull/13004#issuecomment-2877132959 have rest 2 in my local will send them over part by part !
Parsers : [1] ContentFileParser for Delete and DataFile is re-used, there is one API change though that now the fromJson and toJson require specsById, as unless the file is parsed we don;t know which spec it belongs to in rest case [2] TableScanResponseParser is introduced which is a stateful parser, introduced via #13191
[3] Request (and its corresponding models) [a] PlanTableScanRequestParser : parser for https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml#L4370 [b] FetchScanTasksRequestParser : parser for https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml#L4434 4 Response (and its corresponding models)
[a] FetchPlanningResultResponseParser : parser for https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml#L4700 [b] FetchScanTasksResponseParser : parser for https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml#L4707 [c] PlanTableScanResponseParser : parser for https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml#L4693.
Acknowledgement
I connected with the author i.e @rahil-c to see if he plans to resume it, apparently he doesn't have cycles and was kind enough to allow me to push this to the end.
I just rebased the pr, on the current main and go break the pr into smaller chunks while addressing the pending feedback from review, I have something working locally, will publish them soon
(SideNote : I was one of the reviewers to the PR too, will be interesting to see the other side 😌)
Co-author: @rahil-c
Breaking this change in to 3 logical changes, have all 3 working locally, will send these as we go !
- [X] Request / Response Models, Parsers
- [ ] Plumbing (RestTable /RestScan) to core module
- [ ] Spark Integ
Have couple of things to propose to spec as well, will do it in the Plumbing and Spark Integ phase of the PR
This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the [email protected] list. Thank you for your contributions.
Thanks @singhpk234 @rahil-c for the implementation and patience in following through on this. Thanks @danielcweeks for the review!
Thanks @singhpk234 for pushing this thru, happy to see it finally get merged! Thanks @amogh-jahagirdar reviewing this for such a long time!