Stamatis Zampetakis created CALCITE-6698: --------------------------------------------
Summary: Wrong (swapped) results in PartiallyOrderedSet#getNonChildren and getNonParents Key: CALCITE-6698 URL: https://issues.apache.org/jira/browse/CALCITE-6698 Project: Calcite Issue Type: Bug Components: core Reporter: Stamatis Zampetakis Assignee: Stamatis Zampetakis Fix For: 1.39.0 {{PartiallyOrderedSet#getNonChildren}} and {{PartiallyOrderedSet#getNonParents}} methods return wrong results. According to the class Javadoc: {code:java} * <p>In addition to the usual set methods, there are methods to determine the * immediate parents and children of an element in the set, and method to find * all elements which have no parents or no children (i.e. "root" and "leaf" * elements). {code} * {{getNonChildren}} should return all elements which have no children (leafs) * {{getNonParents}} should return all elements which have no parents (roots) Currently, the two methods return the opposite results. {code:java} PartiallyOrderedSet<Integer> poset = new PartiallyOrderedSet<>((i,j) -> i <= j); poset.add(10); poset.add(20); poset.add(30); StringBuilder sb = new StringBuilder(); poset.out(sb); {code} {noformat} PartiallyOrderedSet size: 3 elements: { 30 parents: [] children: [20] 20 parents: [30] children: [10] 10 parents: [20] children: [] } {noformat} {code:java} poset.getNonChildren(); // should return 10 but it returns 30 poset.getNonParents(); // should return 30 but it returns 10 {code} The current implementation also contradicts the results of getChildren/getParents methods: {code:java} poset.getChildren(30); // returns 20 so it contradicts getNonChildren() poset.getParents(10); // returns 20 so it contradicts getNonParents() {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)