lasdf1234 commented on PR #14552: URL: https://github.com/apache/gravitino/pull/14552#issuecomment-6602688006
Thanks for the careful review — addressed as follows: 1. **Residual names** — After planning, residuals are remapped back onto the request (current) schema by field id via `prepareTasksForResponse` / `remapResidualToSchema`, so clients see current column names (e.g. `l2`) rather than snapshot names. 2. **Client parse of dropped partition sources** — Tasks whose spec still has `unknown` are rewritten to the unpartitioned spec before the response (`asUnpartitionedTask`), so Iceberg clients can deserialize with their local `table.specs()` map. Covered with a serialize/parse round-trip test. 3. **Branch movement** — When rewriting for a snapshot with no branch, predicates on columns added after that snapshot become `alwaysTrue` for file pruning and are reattached as current-schema residuals via `postSnapshotResidual`, matching the `useRef` path. 4. **Source types** — Dropped partition sources are restored from historical table schemas (identity partition data only as a fallback). Transform result types and a binary guess are no longer used; unrestorable specs are left unchanged so empty plans are not made worse. 5. **Duplicate dropped sources** — Restoration dedupes by source id (`_dropped_source_<id>`). Also kept `select: ["*"]` as project-all, and dropped the unnecessary `PlannedScan` / `planFileScanTasks` wrapper — residual prep is inlined in `planTableScan`. -- 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]
