code: public RequestedGlobalProperties filterByNodesConstantSet(OptimizerNode node, int input) {
  		// check if partitioning survives
  		if (this.ordering != null) {
  			for (int col : this.ordering.getInvolvedIndexes()) {
  				if (!node.isFieldConstant(input, col)) {
  					return null;
  				}
  			}
  		} else if (this.partitioningFields != null) {
  			for (int colIndex : this.partitioningFields) {
  				if (!node.isFieldConstant(input, colIndex)) {
  					return null;
  				}
  			}
  		}
  		
  		if (this.partitioning == PartitioningProperty.FULL_REPLICATION) {
  			return null;
  		}
  		
  		return this;
  	}
docs: Filters these properties by what can be preserved by the given node when propagated down
  to the given input.
  
  @param node The node representing the contract.
  @param input The index of the input.
  @return True, if any non-default value is preserved, false otherwise.