Skip to content

feat(core): add SubstraitBuilder.fieldReference(s) methods for joins#712

Merged
andrew-coleman merged 2 commits intosubstrait-io:mainfrom
nielspardon:par-dsl-joinfieldref
Mar 2, 2026
Merged

feat(core): add SubstraitBuilder.fieldReference(s) methods for joins#712
andrew-coleman merged 2 commits intosubstrait-io:mainfrom
nielspardon:par-dsl-joinfieldref

Conversation

@nielspardon
Copy link
Member

This PR adds two convenience methods to SubstraitBuilder for creating field references from a JoinInput. Simplifies patterns like these:

Rel left;
Rel right;
sb.innerJoin(inputs -> sb.equal(sb.fieldReference(List.of(inputs.left, inputs.right), 0), sb.fieldReference(List.of(inputs.left, inputs.right), 10)), left, right);

// or 

Rel left;
Rel right;
List<Rel> inputRels = List.of(left, right);
sb.innerJoin(inputs -> sb.equal(sb.fieldReference(inputRels, 0), sb.fieldReference(inputRels, 10)), left, right);

to simply:

Rel left;
Rel right;
sb.innerJoin(inputs -> sb.equal(sb.fieldReference(inputs, 0), sb.fieldReference(inputs, 10)), left, right);

Signed-off-by: Niels Pardon <par@zurich.ibm.com>
@nielspardon
Copy link
Member Author

public FieldReference fieldReference(List<Rel> inputs, int index) mainly remains for backwards compatibility and for extension multi relations that have expressions but is otherwise no longer used in this repo

@andrew-coleman andrew-coleman merged commit 66d7c0b into substrait-io:main Mar 2, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants