How about a testcase? :-) On 5/2/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Author: wisneskid Date: Wed May 2 15:53:39 2007 New Revision: 534647 URL: http://svn.apache.org/viewvc?view=rev&rev=534647 Log: Fix for issue OPENJPA-51. It should also resolve issue OPENJPA-173. Change to use BitSet. Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java?view=diff&rev=534647&r1=534646&r2=534647 ============================================================================== --- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java (original) +++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java Wed May 2 15:53:39 2007 @@ -26,6 +26,7 @@ import java.sql.Types; import java.util.AbstractList; import java.util.ArrayList; +import java.util.BitSet; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -164,7 +165,7 @@ // bit 1 : correspond to alias 1, etc. // if the bit is set, the corresponding alias has been removed from parent // and recorded under subselect. - private int _removedAliasFromParent = 0; + private BitSet _removedAliasFromParent = new BitSet(16); /** * Helper method to return the proper table alias for the given alias index. @@ -1496,7 +1497,7 @@ return; if (_parent._joins != null && !_parent._joins.isEmpty()) { boolean removed = false; - if (_removedAliasFromParent > 0) + if (!_removedAliasFromParent.isEmpty()) removed = _parent._joins.joins().removeAll(pj.joins()); if (!removed) pj.joins().removeAll(_parent._joins.joins()); @@ -1914,7 +1915,7 @@ if (alias != null) { if (removeAliasFromParent) { recordTableAlias(table, key, alias); - _removedAliasFromParent |= (1 << alias.intValue()); + _removedAliasFromParent.set(alias.intValue()); } return alias; }