|
41 | 41 | import com.facebook.presto.metadata.Metadata; |
42 | 42 | import com.facebook.presto.metadata.SessionPropertyManager; |
43 | 43 | import com.facebook.presto.operator.OperatorInfo; |
44 | | -import com.facebook.presto.operator.OperatorStats; |
| 44 | +import com.facebook.presto.operator.OperatorInfoUnion; |
45 | 45 | import com.facebook.presto.operator.TableFinishInfo; |
46 | 46 | import com.facebook.presto.operator.TaskStats; |
47 | 47 | import com.facebook.presto.server.BasicQueryInfo; |
|
82 | 82 | import java.util.LinkedHashMap; |
83 | 83 | import java.util.List; |
84 | 84 | import java.util.Map; |
| 85 | +import java.util.Objects; |
85 | 86 | import java.util.Optional; |
86 | 87 | import java.util.stream.Collectors; |
87 | 88 |
|
@@ -601,10 +602,22 @@ private static QueryIOMetadata getQueryIOMetadata(QueryInfo queryInfo) |
601 | 602 |
|
602 | 603 | Optional<QueryOutputMetadata> output = Optional.empty(); |
603 | 604 | if (queryInfo.getOutput().isPresent()) { |
| 605 | + // Check both info (JSON) and infoUnion (Thrift) fields for TableFinishInfo |
604 | 606 | Optional<TableFinishInfo> tableFinishInfo = queryInfo.getQueryStats().getOperatorSummaries().stream() |
605 | | - .map(OperatorStats::getInfo) |
606 | | - .filter(TableFinishInfo.class::isInstance) |
607 | | - .map(TableFinishInfo.class::cast) |
| 607 | + .map(operatorStats -> { |
| 608 | + // First try the info field (JSON serialization) |
| 609 | + OperatorInfo info = operatorStats.getInfo(); |
| 610 | + if (info instanceof TableFinishInfo) { |
| 611 | + return (TableFinishInfo) info; |
| 612 | + } |
| 613 | + // Fall back to infoUnion field (Thrift serialization) |
| 614 | + OperatorInfoUnion infoUnion = operatorStats.getInfoUnion(); |
| 615 | + if (infoUnion != null) { |
| 616 | + return infoUnion.getTableFinishInfo(); |
| 617 | + } |
| 618 | + return null; |
| 619 | + }) |
| 620 | + .filter(Objects::nonNull) |
608 | 621 | .findFirst(); |
609 | 622 |
|
610 | 623 | Optional<List<OutputColumnMetadata>> outputColumnsMetadata = queryInfo.getOutput().get().getColumns() |
|
0 commit comments