public RequestedLocalProperties filterByNodesConstantSet(OptimizerNode node, int input) {
		if (this.ordering != null) {
			final FieldList involvedIndexes = this.ordering.getInvolvedIndexes();
			for (int i = 0; i < involvedIndexes.size(); i++) {
				if (!node.isFieldConstant(input, involvedIndexes.get(i))) {
					return null;
				}
			}
		} else if (this.groupedFields != null) {
			// check, whether the local key grouping is preserved
			for (Integer index : this.groupedFields) {
				if (!node.isFieldConstant(input, index)) {
					return null;
				}
			}
		}
		return this;
	}
public RequestedLocalProperties filterByNodesConstantSet ( OptimizerNode node , int input ) { if ( this . ordering != null ) { final FieldList involvedIndexes = this . ordering . getInvolvedIndexes ( ) ; for ( int i = 0 ; i < involvedIndexes . size ( ) ; i ++ ) { if ( ! node . isFieldConstant ( input , involvedIndexes . get ( i ) ) ) { return null ; } } } else if ( this . groupedFields != null ) { for ( Integer index : this . groupedFields ) { if ( ! node . isFieldConstant ( input , index ) ) { return null ; } } } return this ; }
Filters these properties by what can be preserved through a user function's constant fields set.
Since interesting properties are filtered top-down, anything that partially destroys the ordering
makes the properties uninteresting.

@param node The optimizer node that potentially modifies the properties.
@param input The input of the node which is relevant.

@return True, if the resulting properties are non trivial.