[ 
https://issues.apache.org/jira/browse/CALCITE-6698?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stamatis Zampetakis updated CALCITE-6698:
-----------------------------------------
    Summary: Add Javadoc to PartiallyOrderedSet#getNonChildren and 
getNonParents to clarify their behavior  (was: Wrong (swapped) results in 
PartiallyOrderedSet#getNonChildren and getNonParents)

> Add Javadoc to PartiallyOrderedSet#getNonChildren and getNonParents to 
> clarify their behavior
> ---------------------------------------------------------------------------------------------
>
>                 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
>            Priority: Major
>              Labels: pull-request-available
>             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)

Reply via email to