EMPIREDB-362 provide qualified() for DBColumnExpr
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 @@
     /**
      * 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 @@
     }
 
     /**
+     * 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 @@
      * @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 @@
      * @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 @@
  * <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 @@
     {

         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 @@
     {

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