private Global deriveGlobalProperties(TableLayout layout, Map<ColumnHandle, Symbol> assignments, Map<ColumnHandle, NullableValue> constants) { Optional<List<Symbol>> streamPartitioning = layout.getStreamPartitioningColumns() .flatMap(columns -> translateToNonConstantSymbols(columns, assignments, constants)); if (planWithTableNodePartitioning(session) && layout.getTablePartitioning().isPresent()) { TablePartitioning tablePartitioning = layout.getTablePartitioning().get(); if (assignments.keySet().containsAll(tablePartitioning.getPartitioningColumns())) { List<Symbol> arguments = tablePartitioning.getPartitioningColumns().stream() .map(assignments::get) .collect(toImmutableList()); return partitionedOn(tablePartitioning.getPartitioningHandle(), arguments, streamPartitioning); } } if (streamPartitioning.isPresent()) { return streamPartitionedOn(streamPartitioning.get()); } return arbitraryPartition(); }
private Global deriveGlobalProperties(TableLayout layout, Map<ColumnHandle, Symbol> assignments, Map<ColumnHandle, NullableValue> constants) { Optional<List<Symbol>> streamPartitioning = layout.getStreamPartitioningColumns() .flatMap(columns -> translateToNonConstantSymbols(columns, assignments, constants)); if (planWithTableNodePartitioning(session) && layout.getTablePartitioning().isPresent()) { TablePartitioning tablePartitioning = layout.getTablePartitioning().get(); if (assignments.keySet().containsAll(tablePartitioning.getPartitioningColumns())) { List<Symbol> arguments = tablePartitioning.getPartitioningColumns().stream() .map(assignments::get) .collect(toImmutableList()); return partitionedOn(tablePartitioning.getPartitioningHandle(), arguments, streamPartitioning); } } if (streamPartitioning.isPresent()) { return streamPartitionedOn(streamPartitioning.get()); } return arbitraryPartition(); }
@Override public GroupedExecutionProperties visitTableScan(TableScanNode node, Void context) { Optional<TablePartitioning> tablePartitioning = metadata.getLayout(session, node.getLayout().get()).getTablePartitioning(); if (!tablePartitioning.isPresent()) { return GroupedExecutionProperties.notCapable(); } List<ConnectorPartitionHandle> partitionHandles = nodePartitioningManager.listPartitionHandles(session, tablePartitioning.get().getPartitioningHandle()); if (ImmutableList.of(NOT_PARTITIONED).equals(partitionHandles)) { return new GroupedExecutionProperties(false, false, ImmutableList.of()); } else { return new GroupedExecutionProperties(true, false, ImmutableList.of(node.getId())); } }
@Override public GroupedExecutionProperties visitTableScan(TableScanNode node, Void context) { Optional<TablePartitioning> tablePartitioning = metadata.getLayout(session, node.getLayout().get()).getTablePartitioning(); if (!tablePartitioning.isPresent()) { return GroupedExecutionProperties.notCapable(); } List<ConnectorPartitionHandle> partitionHandles = nodePartitioningManager.listPartitionHandles(session, tablePartitioning.get().getPartitioningHandle()); if (ImmutableList.of(NOT_PARTITIONED).equals(partitionHandles)) { return new GroupedExecutionProperties(false, false, ImmutableList.of()); } else { return new GroupedExecutionProperties(true, false, ImmutableList.of(node.getId())); } }