test_class.file: flink-optimizer/src/test/java/org/apache/flink/optimizer/dag/GroupCombineNodeTest.java
test_class.identifier: GroupCombineNodeTest
test_case.body: @Test
  	public void testGetSemanticProperties() {
  
  		SingleInputSemanticProperties origProps = new SingleInputSemanticProperties();
  		origProps.addForwardedField(0, 1);
  		origProps.addForwardedField(2, 2);
  		origProps.addForwardedField(3, 4);
  		origProps.addForwardedField(6, 0);
  		origProps.addReadFields(new FieldSet(0, 2, 4, 7));
  
  		GroupCombineOperatorBase<?,?,?> op = mock(GroupCombineOperatorBase.class);
  		when(op.getSemanticProperties()).thenReturn(origProps);
  		when(op.getKeyColumns(0)).thenReturn(new int[]{3,2});
  		when(op.getParameters()).thenReturn(new Configuration());
  
  		GroupCombineNode node = new GroupCombineNode(op);
  
  		SemanticProperties filteredProps = node.getSemanticPropertiesForLocalPropertyFiltering();
  
  		assertTrue(filteredProps.getForwardingTargetFields(0, 0).size() == 0);
  		assertTrue(filteredProps.getForwardingTargetFields(0, 2).size() == 1);
  		assertTrue(filteredProps.getForwardingTargetFields(0, 2).contains(2));
  		assertTrue(filteredProps.getForwardingTargetFields(0, 3).size() == 1);
  		assertTrue(filteredProps.getForwardingTargetFields(0, 3).contains(4));
  		assertTrue(filteredProps.getForwardingTargetFields(0, 6).size() == 0);
  		assertTrue(filteredProps.getForwardingSourceField(0, 1) < 0);
  		assertTrue(filteredProps.getForwardingSourceField(0, 2) == 2);
  		assertTrue(filteredProps.getForwardingSourceField(0, 4) == 3);
  		assertTrue(filteredProps.getForwardingSourceField(0, 0) < 0);
  
  		assertTrue(filteredProps.getReadFields(0).size() == 4);
  		assertTrue(filteredProps.getReadFields(0).contains(0));
  		assertTrue(filteredProps.getReadFields(0).contains(2));
  		assertTrue(filteredProps.getReadFields(0).contains(4));
  		assertTrue(filteredProps.getReadFields(0).contains(7));
  
  	}
test_case.class_method_signature: GroupCombineNodeTest.testGetSemanticProperties()
test_case.full_signature: @Test public void testGetSemanticProperties()
test_case.identifier: testGetSemanticProperties
test_case.invocations: addForwardedField addForwardedField addForwardedField addForwardedField addReadFields mock thenReturn when getSemanticProperties thenReturn when getKeyColumns thenReturn when getParameters getSemanticPropertiesForLocalPropertyFiltering assertTrue size getForwardingTargetFields assertTrue size getForwardingTargetFields assertTrue contains getForwardingTargetFields assertTrue size getForwardingTargetFields assertTrue contains getForwardingTargetFields assertTrue size getForwardingTargetFields assertTrue getForwardingSourceField assertTrue getForwardingSourceField assertTrue getForwardingSourceField assertTrue getForwardingSourceField assertTrue size getReadFields assertTrue contains getReadFields assertTrue contains getReadFields assertTrue contains getReadFields assertTrue contains getReadFields
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGetSemanticProperties()
focal_class.declarator: possibleProperties
focal_class.modifier: private final
focal_class.original_string: private final List<OperatorDescriptorSingle> possibleProperties;
focal_class.type: List<OperatorDescriptorSingle>
focal_class.var_name: possibleProperties
focal_class.file: flink-optimizer/src/main/java/org/apache/flink/optimizer/dag/GroupCombineNode.java
focal_class.identifier: GroupCombineNode
focal_class.class_method_signature: GroupCombineNode.GroupCombineNode(GroupCombineOperatorBase<?, ?, ?> operator)
focal_class.full_signature: public  GroupCombineNode(GroupCombineOperatorBase<?, ?, ?> operator)
focal_class.identifier: GroupCombineNode
focal_class.modifiers: public
focal_class.parameters: (GroupCombineOperatorBase<?, ?, ?> operator)
focal_class.signature:  GroupCombineNode(GroupCombineOperatorBase<?, ?, ?> operator)
focal_class.class_method_signature: GroupCombineNode.initPossibleProperties()
focal_class.full_signature: private List<OperatorDescriptorSingle> initPossibleProperties()
focal_class.identifier: initPossibleProperties
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: List<OperatorDescriptorSingle>
focal_class.signature: List<OperatorDescriptorSingle> initPossibleProperties()
focal_class.class_method_signature: GroupCombineNode.getOperator()
focal_class.full_signature: @Override public GroupCombineOperatorBase<?, ?, ?> getOperator()
focal_class.identifier: getOperator
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: GroupCombineOperatorBase<?, ?, ?>
focal_class.signature: GroupCombineOperatorBase<?, ?, ?> getOperator()
focal_class.class_method_signature: GroupCombineNode.getOperatorName()
focal_class.full_signature: @Override public String getOperatorName()
focal_class.identifier: getOperatorName
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getOperatorName()
focal_class.class_method_signature: GroupCombineNode.getPossibleProperties()
focal_class.full_signature: @Override protected List<OperatorDescriptorSingle> getPossibleProperties()
focal_class.identifier: getPossibleProperties
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: List<OperatorDescriptorSingle>
focal_class.signature: List<OperatorDescriptorSingle> getPossibleProperties()
focal_class.class_method_signature: GroupCombineNode.getSemanticPropertiesForLocalPropertyFiltering()
focal_class.full_signature: @Override protected SemanticProperties getSemanticPropertiesForLocalPropertyFiltering()
focal_class.identifier: getSemanticPropertiesForLocalPropertyFiltering
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: SemanticProperties
focal_class.signature: SemanticProperties getSemanticPropertiesForLocalPropertyFiltering()
focal_class.class_method_signature: GroupCombineNode.computeOperatorSpecificDefaultEstimates(DataStatistics statistics)
focal_class.full_signature: @Override protected void computeOperatorSpecificDefaultEstimates(DataStatistics statistics)
focal_class.identifier: computeOperatorSpecificDefaultEstimates
focal_class.modifiers: @Override protected
focal_class.parameters: (DataStatistics statistics)
focal_class.return: void
focal_class.signature: void computeOperatorSpecificDefaultEstimates(DataStatistics statistics)
focal_class.superclass: extends SingleInputNode
focal_method.body: @Override
  	protected SemanticProperties getSemanticPropertiesForLocalPropertyFiltering() {
  
  		// Local properties for GroupCombine may only be preserved on key fields.
  		SingleInputSemanticProperties origProps =
  				((SingleInputOperator<?,?,?>) getOperator()).getSemanticProperties();
  		SingleInputSemanticProperties filteredProps = new SingleInputSemanticProperties();
  		FieldSet readSet = origProps.getReadFields(0);
  		if(readSet != null) {
  			filteredProps.addReadFields(readSet);
  		}
  
  		// only add forward field information for key fields
  		if(this.keys != null) {
  			for (int f : this.keys) {
  				FieldSet targets = origProps.getForwardingTargetFields(0, f);
  				for (int t : targets) {
  					filteredProps.addForwardedField(f, t);
  				}
  			}
  		}
  		return filteredProps;
  	}
focal_method.class_method_signature: GroupCombineNode.getSemanticPropertiesForLocalPropertyFiltering()
focal_method.full_signature: @Override protected SemanticProperties getSemanticPropertiesForLocalPropertyFiltering()
focal_method.identifier: getSemanticPropertiesForLocalPropertyFiltering
focal_method.invocations: getSemanticProperties getOperator getReadFields addReadFields getForwardingTargetFields addForwardedField
focal_method.modifiers: @Override protected
focal_method.parameters: ()
focal_method.return: SemanticProperties
focal_method.signature: SemanticProperties getSemanticPropertiesForLocalPropertyFiltering()