Weston Pace created ARROW-18205:
-----------------------------------

             Summary: [C++] Substrait consumer is not converting right side 
references correctly on joins
                 Key: ARROW-18205
                 URL: https://issues.apache.org/jira/browse/ARROW-18205
             Project: Apache Arrow
          Issue Type: Bug
          Components: C++
            Reporter: Weston Pace


The Substrait plan expresses a join condition as a logical expression like:

{{field(0) == field(3)}} where {{0}} and {{3}} are indices into the *combined* 
schema.  These are then passed down to Acero which expects:

{{HashJoinNodeOptions(std::vector<FieldRef> in_left_keys, std::vector<FieldRef> 
in_right_keys)}}

However, {{in_left_keys}} are field references into the *left* schema and 
{{in_right_keys}} are field references into the *right* schema.

In other words, given the above expression ({{field(0) == field(3)}} if the 
schema were:

left:
  key: int32
  y: int32
  z: int32

right:
  key: int32
  x: int32

Then {{in_left_keys}} should be {{field(0)}} (works correct today) and 
{{in_right_keys}} should be {{field(0)}} (today we are sending in {{field(3)}}).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to