You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by aw...@apache.org on 2006/09/23 00:06:07 UTC

svn commit: r449105 - in /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc: kernel/exps/PCPath.java kernel/exps/SelectConstructor.java kernel/exps/Val.java sql/SelectImpl.java

Author: awhite
Date: Fri Sep 22 15:06:06 2006
New Revision: 449105

URL: http://svn.apache.org/viewvc?view=rev&rev=449105
Log:
When selecting a relation field as a projection, outer join across the relation
even if forceOuter on the original path is false.


Modified:
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java
    incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java
    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/kernel/exps/PCPath.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java?view=diff&rev=449105&r1=449104&r2=449105
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java Fri Sep 22 15:06:06 2006
@@ -415,7 +415,8 @@
             traverseField(pstate, key, forceOuter, true);
         pstate.joinedRel = false;
         if ((flags & JOIN_REL) != 0)
-            joinRelation(pstate, key, forceOuter, false);
+            joinRelation(pstate, key, forceOuter || (flags & FORCE_OUTER) != 0,
+                false);
         return pstate;
     }
 

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java?view=diff&rev=449105&r1=449104&r2=449105
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/SelectConstructor.java Fri Sep 22 15:06:06 2006
@@ -194,7 +194,7 @@
                 // have to join through to related type for pc object 
                 // projections; this ensures that we have all our joins cached
                 state.projections[i] = resultVal.initialize(sel, ctx, 
-                    Val.JOIN_REL);
+                    Val.JOIN_REL | Val.FORCE_OUTER);
                 joins = sel.and(joins, state.projections[i].joins);
             }
         }

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java?view=diff&rev=449105&r1=449104&r2=449105
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java Fri Sep 22 15:06:06 2006
@@ -38,12 +38,18 @@
     /**
      * Initialization flag indicating that this value will be compared to null.
      */
-    public final int NULL_CMP = 1;
+    public final int NULL_CMP = 2 << 0;
 
     /**
      * Initialization flag indicating to join into any relation path.
      */
-    public final int JOIN_REL = 2; 
+    public final int JOIN_REL = 2 << 1; 
+
+    /**
+     * Initialization flag indicating to force an outer join into any relation 
+     * path.
+     */
+    public final int FORCE_OUTER = 2 << 2; 
 
     /**
      * Initialize the value. This method should recursively initialize any

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=449105&r1=449104&r2=449105
==============================================================================
--- 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 Fri Sep 22 15:06:06 2006
@@ -2258,8 +2258,7 @@
                     return FROM_SELECT_ALIAS + "." + alias + "_" + col;
                 return alias + "_" + col;
             }
-            alias = _sel.toAlias(_sel.getTableIndex(col.getTable(), pj,
-                false));
+            alias = _sel.toAlias(_sel.getTableIndex(col.getTable(), pj, false));
             return (alias == null) ? null : alias + "." + col;
         }