This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new b2eeae0  EMPIREDB-362 provide qualified() for DBColumnExpr
b2eeae0 is described below

commit b2eeae0ecdc34b35d3a60951866b8ad096984bae
Author: Rainer Döbele <[email protected]>
AuthorDate: Thu Feb 24 10:23:21 2022 +0100

    EMPIREDB-362 provide qualified() for DBColumnExpr
---
 empire-db/src/main/java/org/apache/empire/db/DBColumn.java     |  1 +
 empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java |  8 ++++++++
 empire-db/src/main/java/org/apache/empire/db/DBCommand.java    |  8 ++++----
 empire-db/src/main/java/org/apache/empire/db/DBQuery.java      |  4 ++--
 .../src/main/java/org/apache/empire/db/DBQueryColumn.java      | 10 ++++++++++
 5 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java 
b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
index 48d7d64..f7254ed 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
@@ -334,6 +334,7 @@ public abstract class DBColumn extends DBColumnExpr
     /**
      * returns an expression that renames the column with its alias name
      */
+    @Override
     public DBColumnExpr qualified()
     {
         return this.as(getAlias());
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java 
b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
index 34f47b3..53bec52 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
@@ -137,6 +137,14 @@ public abstract class DBColumnExpr extends DBExpr
     }
 
     /**
+     * returns an expression that renames the column with its alias name
+     */
+    public DBColumnExpr qualified()
+    {
+        return this.as(getName());
+    }
+
+    /**
      * Returns the value of a column attribute.
      * Column attributes are used to provide metadata for a column.
      * 
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java 
b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
index d202322..2b44e7d 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
@@ -346,9 +346,9 @@ public abstract class DBCommand extends DBCommandExpr
      * @param exprs one or more columns to select
      * @return itself (this)
      */
-    public DBCommand selectQualified(DBColumn... columns)
+    public DBCommand selectQualified(DBColumnExpr... columns)
     {
-        for (DBColumn col : columns)
+        for (DBColumnExpr col : columns)
         {
             select(col.qualified());
         }
@@ -361,9 +361,9 @@ public abstract class DBCommand extends DBCommandExpr
      * @param columns the column expressions to add
      * @return itself (this)
      */
-    public final DBCommand selectQualified(Collection<? extends DBColumn> 
columns)
+    public final DBCommand selectQualified(Collection<? extends DBColumnExpr> 
columns)
     {
-        for (DBColumn col : columns)
+        for (DBColumnExpr col : columns)
         {
             select(col.qualified());
         }
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java 
b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
index 9e5af54..ca4981c 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
@@ -46,7 +46,7 @@ import org.apache.empire.exceptions.NotSupportedException;
  * <UL>
  *  <LI>In oder to define subqueries simply define a command object with the 
subquery and wrap it inside a DBQuery.
  *    Then in a second command object you can reference this Query to join 
with your other tables and views.
- *    In order to join other columns with your query use 
findQueryColumn(DBColumnExpr expr) to get the 
+ *    In order to join other columns with your query use 
findColumn(DBColumnExpr expr) to get the 
  *    query column object for a given column expression in the original select 
clause.</LI> 
  *  <LI>With a key supplied you can have an updateable query that will update 
several records at once.</LI>
  * </UL>
@@ -246,7 +246,7 @@ public class DBQuery extends DBRowSet
     {
         for (int i = 0; i < queryColumns.length; i++)
         {
-            if (queryColumns[i].expr.equals(expr))
+            if (queryColumns[i].exprEquals(expr))
                 return queryColumns[i];
         }
         // not found
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java 
b/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java
index 43d4772..2f568a3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java
@@ -46,6 +46,16 @@ public class DBQueryColumn extends DBColumn
     {
         return expr;
     }
+    
+    public boolean exprEquals(DBColumnExpr other)
+    {
+        if (other.isWrapper() && !expr.isWrapper())
+            return expr.equals(other.unwrap());
+        else if (!other.isWrapper() && expr.isWrapper())
+            return expr.unwrap().equals(other);
+        // both wrapped or both unwrapped
+        return expr.equals(other);
+    }
 
     @Override
     public DataType getDataType()

Reply via email to