Aleksandr Efimov has posted comments on this change. (
http://gerrit.cloudera.org:8080/24741 )
Change subject: IMPALA-15296: Export the seam plan to Substrait
......................................................................
Patch Set 9:
This is the second of four changes and the one to read first; the other three
are smaller and lean on it.
24667 438 lines what Isthmus can and cannot take from the seam, as a
test
24741 1441 lines the exporter and the operator mappings <- start here
24749 441 lines TPC-DS coverage and the reading side
24752 144 lines Calcite's estimates carried into the plan as hints
All of it lives under src/test, apart from a test-scope dependency block in
java/calcite-planner/pom.xml. Nothing runs in a query path, so the series can
only affect the build and the tests themselves.
Two things I would rather you challenged than took on trust.
The refusals are decisions, not gaps. SINGLE_VALUE could be exported as
any_value, and I think it should not be: Calcite uses it to guard a scalar
subquery, Impala turns it into a runtime cardinality check, and any_value picks
a row and asserts nothing, so a query that fails on bad data would start
returning an arbitrary one with nothing in the plan for a consumer to notice.
An Iceberg snapshot is refused on the same ground -- after RemoveSnapshotRule
the name left on the scan is synthetic, so a consumer falling back to the base
name would read the table as it stands now. Both sit in the rejection enum with
the reasoning beside them.
The mappings are keyed on operator identity, which is the part most likely to
rot. Isthmus resolves a scalar call by looking the operator up in a map, and
Calcite compares operators by class, name and kind, so an Impala operator
meaning exactly what Substrait's does still misses. Aggregates escape this
because Isthmus normalises them by SqlKind. That asymmetry is why the list
reads as arbitrary: it is a list of what identity comparison loses, not of what
Impala has.
Two gaps are upstream and tracked -- GROUPING has no Substrait function
(substrait-java#993), and the Iceberg read type is in the spec but not in
substrait-java (#1172, filed this week).
On CI: I could not get a dryrun today. The built-in node on jenkins.impala.io
has not been able to fork a process since early Wednesday, which takes out
gerrit-verify-dryrun-external and auto-critic together; there is a thread on
dev@ about it. Locally I ran the whole calcite-planner module against a
baseline of the same tree without the series, and the failure counts match
class for class.
No rush on my side -- take it whenever it suits.
--
To view, visit http://gerrit.cloudera.org:8080/24741
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I06e7645e6d6af599af6ec3c53780d12935ab7efb
Gerrit-Change-Number: 24741
Gerrit-PatchSet: 9
Gerrit-Owner: Aleksandr Efimov <[email protected]>
Gerrit-Reviewer: Aleksandr Efimov <[email protected]>
Gerrit-Reviewer: Impala Public Jenkins <[email protected]>
Gerrit-Reviewer: Joe McDonnell <[email protected]>
Gerrit-Reviewer: Michael Smith <[email protected]>
Gerrit-Reviewer: Steve Carlin <[email protected]>
Gerrit-Comment-Date: Wed, 26 Aug 2026 09:47:50 +0000
Gerrit-HasComments: No