Emits a Difference, which the engine has no relation function for, as a full outer join (PLAN §8.8, §11.7):

  1. each input renames its difference columns x to x_1 or x_2;
  2. the inputs are joined on the keys as a FULL join is (emitJoinRelation);
  3. one extend gives each x_valueDifference: x | $x.x_1->coalesce(0) - $x.x_2->coalesce(0), so an empty value counts as 0;
  4. a select gives the columns the schema's order and drops the temporary keys.

The difference must be valid for its input schemas.