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)