| distribute result [$$28] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- DISTRIBUTE_RESULT |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| |
| project ([$$28]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- STREAM_PROJECT |PARTITIONED| |
| assign [$$28] <- [{"p1": $$p1, "id": $$30}] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ASSIGN |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- SORT_MERGE_EXCHANGE [$$30(ASC) ] |PARTITIONED| |
| order (ASC, $$30) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- STABLE_SORT [$$30(ASC)] |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| |
| project ([$$p1, $$30]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- STREAM_PROJECT |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| |
| join (eq($$31, $$30)) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- HYBRID_HASH_JOIN [$$31][$$30] |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- HASH_PARTITION_EXCHANGE [$$31] |PARTITIONED| |
| assign [$$31] <- [$$p1.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ASSIGN |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| |
| data-scan []<-[$$p1] <- test.ParquetDataset [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- DATASOURCE_SCAN |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| |
| empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- EMPTY_TUPLE_SOURCE |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- HASH_PARTITION_EXCHANGE [$$30] |PARTITIONED| |
| project ([$$30]) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- STREAM_PROJECT |PARTITIONED| |
| assign [$$30] <- [$$p2.getField("id")] [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ASSIGN |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| |
| data-scan []<-[$$p2] <- test.ParquetDataset2 project ({id:any}) [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- DATASOURCE_SCAN |PARTITIONED| |
| exchange [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| |
| empty-tuple-source [cardinality: 0.0, op-cost: 0.0, total-cost: 0.0] |
| -- EMPTY_TUPLE_SOURCE |PARTITIONED| |