protected PhysicalRequirements emptyUnaryRequirements(int numberOfChildren) { StructuralPropertiesVector[] req = new StructuralPropertiesVector[numberOfChildren]; for (int i = 0; i < numberOfChildren; i++) { req[i] = StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR; } return new PhysicalRequirements(req, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
IPhysicalPropertiesVector[] reqdProperties = null; if (pr != null) { reqdProperties = pr.getRequiredProperties(); .trace(">>>> Properties delivered by " + child.getPhysicalOperator() + ": " + delivered + "\n"); IPartitioningRequirementsCoordinator prc = pr.getPartitioningCoordinator();
IPhysicalPropertiesVector[] reqdProperties = null; if (pr != null) { reqdProperties = pr.getRequiredProperties();
protected PhysicalRequirements emptyUnaryRequirements() { StructuralPropertiesVector[] req = new StructuralPropertiesVector[] { StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR }; return new PhysicalRequirements(req, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { List<ILocalStructuralProperty> localProps = new ArrayList<ILocalStructuralProperty>(sortColumns.length); localProps.add(new LocalOrderProperty(Arrays.asList(sortColumns))); StructuralPropertiesVector[] r = new StructuralPropertiesVector[] { new StructuralPropertiesVector(null, localProps) }; return new PhysicalRequirements(r, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>(); scanVariables.addAll(keys); scanVariables.add(payload); if (additionalNonFilteringFields != null) { scanVariables.addAll(additionalNonFilteringFields); } IPhysicalPropertiesVector r = dataSource.getPropertiesProvider().computePropertiesVector(scanVariables); r.getLocalProperties().clear(); IPhysicalPropertiesVector[] requirements = new IPhysicalPropertiesVector[1]; requirements[0] = r; return new PhysicalRequirements(requirements, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>(); scanVariables.addAll(keys); scanVariables.add(new LogicalVariable(-1)); IPhysicalPropertiesVector r = dataSource.getPropertiesProvider().computePropertiesVector(scanVariables); IPhysicalPropertiesVector[] requirements = new IPhysicalPropertiesVector[1]; requirements[0] = r; return new PhysicalRequirements(requirements, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { List<ILocalStructuralProperty> orderProps = new LinkedList<ILocalStructuralProperty>(); List<OrderColumn> columns = new ArrayList<OrderColumn>(); for (OrderColumn oc : partitioningFields) { LogicalVariable var = oc.getColumn(); columns.add(new OrderColumn(var, oc.getOrder())); } orderProps.add(new LocalOrderProperty(columns)); StructuralPropertiesVector[] r = new StructuralPropertiesVector[] { new StructuralPropertiesVector(null, orderProps) }; return new PhysicalRequirements(r, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { List<ILocalStructuralProperty> orderProps = new LinkedList<ILocalStructuralProperty>(); List<OrderColumn> columns = new ArrayList<OrderColumn>(); for (OrderColumn oc : orderColumns) { LogicalVariable var = oc.getColumn(); columns.add(new OrderColumn(var, oc.getOrder())); } orderProps.add(new LocalOrderProperty(columns)); StructuralPropertiesVector[] r = new StructuralPropertiesVector[] { new StructuralPropertiesVector(null, orderProps) }; return new PhysicalRequirements(r, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { DistributeResultOperator write = (DistributeResultOperator) op; IDataSink sink = write.getDataSink(); IPartitioningProperty pp = sink.getPartitioningProperty(); StructuralPropertiesVector[] r = new StructuralPropertiesVector[] { new StructuralPropertiesVector(pp, null) }; return new PhysicalRequirements(r, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { List<LogicalVariable> scanVariables = new ArrayList<LogicalVariable>(); scanVariables.addAll(primaryKeys); scanVariables.add(new LogicalVariable(-1)); for (int i = 0; i < numOfAdditionalNonFilteringFields; i++) { scanVariables.add(new LogicalVariable(-1)); } IPhysicalPropertiesVector r = dataSourceIndex.getDataSource().getPropertiesProvider().computePropertiesVector(scanVariables); r.getLocalProperties().clear(); IPhysicalPropertiesVector[] requirements = new IPhysicalPropertiesVector[1]; requirements[0] = r; return new PhysicalRequirements(requirements, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { WriteOperator write = (WriteOperator) op; IDataSink sink = write.getDataSink(); IPartitioningProperty pp = sink.getPartitioningProperty(); StructuralPropertiesVector[] r = new StructuralPropertiesVector[] { new StructuralPropertiesVector(pp, null) }; return new PhysicalRequirements(r, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { AbstractLogicalOperator limitOp = (AbstractLogicalOperator) op; if (limitOp.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.UNPARTITIONED) { StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1]; pv[0] = new StructuralPropertiesVector(IPartitioningProperty.UNPARTITIONED, null); return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION); } else { return emptyUnaryRequirements(); } }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { List<LogicalVariable> scanVariables = new ArrayList<>(); scanVariables.addAll(primaryKeys); scanVariables.add(new LogicalVariable(-1)); IPhysicalPropertiesVector physicalProps = dataSource.getPropertiesProvider().computePropertiesVector(scanVariables); StructuralPropertiesVector spv = new StructuralPropertiesVector(physicalProps.getPartitioningProperty(), physicalProps.getLocalProperties()); return new PhysicalRequirements(new IPhysicalPropertiesVector[] { spv }, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { if (requiresBroadcast) { StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1]; pv[0] = new StructuralPropertiesVector(new BroadcastPartitioningProperty(null), null); return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION); } else { return super.getRequiredPropertiesForChildren(op, reqdByParent, context); } }
/** * Forward operator requires that the global aggregate operator broadcasts the range map. No required properties at * the data source input. * @param op {@see {@link ForwardOperator}} * @param requiredByParent parent's requirements, which are not enforced for now, as we only explore one plan * @param context the optimization context * @return broadcast requirement at input 1; empty requirements at input 0; No coordination between the two. */ @Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector requiredByParent, IOptimizationContext context) { // broadcast the range map to the cluster node domain INodeDomain targetDomain = context.getComputationNodeDomain(); List<ILocalStructuralProperty> noProp = new ArrayList<>(); StructuralPropertiesVector[] requiredAtInputs = new StructuralPropertiesVector[2]; requiredAtInputs[0] = StructuralPropertiesVector.EMPTY_PROPERTIES_VECTOR; requiredAtInputs[1] = new StructuralPropertiesVector(new BroadcastPartitioningProperty(targetDomain), noProp); return new PhysicalRequirements(requiredAtInputs, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1]; List<ILocalStructuralProperty> localProps = new ArrayList<>(); List<OrderColumn> orderColumns = new ArrayList<>(); for (LogicalVariable column : columnList) { orderColumns.add(new OrderColumn(column, OrderOperator.IOrder.OrderKind.ASC)); } localProps.add(new LocalOrderProperty(orderColumns)); IPartitioningProperty pp = null; AbstractLogicalOperator aop = (AbstractLogicalOperator) op; if (aop.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.PARTITIONED) { pp = new UnorderedPartitionedProperty(new ListSet<>(columnList), context.getComputationNodeDomain()); } pv[0] = new StructuralPropertiesVector(pp, localProps); return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION); }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { if (requiresBroadcast) { StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1]; pv[0] = new StructuralPropertiesVector(new BroadcastPartitioningProperty(domain), null); return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION); } else { return super.getRequiredPropertiesForChildren(op, reqdByParent, context); } }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { AggregateOperator aggOp = (AggregateOperator) op; StructuralPropertiesVector[] pv = new StructuralPropertiesVector[1]; if (aggOp.isGlobal() && aggOp.getExecutionMode() == AbstractLogicalOperator.ExecutionMode.UNPARTITIONED) { pv[0] = new StructuralPropertiesVector(IPartitioningProperty.UNPARTITIONED, null); return new PhysicalRequirements(pv, IPartitioningRequirementsCoordinator.NO_COORDINATION); } else { return emptyUnaryRequirements(); } }
@Override public PhysicalRequirements getRequiredPropertiesForChildren(ILogicalOperator op, IPhysicalPropertiesVector reqdByParent, IOptimizationContext context) { //skVarMap is used to remove duplicated variable references for order operator Map<Integer, Object> skVarMap = new HashMap<Integer, Object>(); List<LogicalVariable> scanVariables = new ArrayList<>(); scanVariables.addAll(primaryKeys); scanVariables.add(new LogicalVariable(-1)); IPhysicalPropertiesVector physicalProps = dataSourceIndex.getDataSource().getPropertiesProvider().computePropertiesVector(scanVariables); List<ILocalStructuralProperty> localProperties = new ArrayList<>(); List<OrderColumn> orderColumns = new ArrayList<OrderColumn>(); // Data needs to be sorted based on the [token, number of token, PK] // OR [token, PK] if the index is not partitioned for (LogicalVariable skVar : secondaryKeys) { if (!skVarMap.containsKey(skVar.getId())) { orderColumns.add(new OrderColumn(skVar, OrderKind.ASC)); skVarMap.put(skVar.getId(), null); } } for (LogicalVariable pkVar : primaryKeys) { orderColumns.add(new OrderColumn(pkVar, OrderKind.ASC)); } localProperties.add(new LocalOrderProperty(orderColumns)); StructuralPropertiesVector spv = new StructuralPropertiesVector(physicalProps.getPartitioningProperty(), localProperties); return new PhysicalRequirements(new IPhysicalPropertiesVector[] { spv }, IPartitioningRequirementsCoordinator.NO_COORDINATION); }