[
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)