You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2026/05/14 07:43:24 UTC

(empire-db) branch master updated: EMPIREDB-491 DBReader: findFieldIndex and unit test improvment

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

asf-gitbox-commits 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 a2006e5e EMPIREDB-491 DBReader: findFieldIndex and unit test improvment
a2006e5e is described below

commit a2006e5e923887349064be90902c25419b6badda
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Thu May 14 09:43:20 2026 +0200

    EMPIREDB-491
    DBReader: findFieldIndex and unit test improvment
---
 .../main/java/org/apache/empire/db/DBReader.java   |  9 +++----
 .../org/apache/empire/db/AliasExpressionTest.java  | 30 +++++++++++++++++++---
 2 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBReader.java b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
index 2be14c44..88fa0afb 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
@@ -944,16 +944,15 @@ public class DBReader extends DBRecordData implements Closeable
             return index;
         // Second chance: Try Update Column
         if (column instanceof DBColumn)
-        {
-            for (int i = 0; i < columns.length; i++)
-            {
+        {   for (int i = 0; i < columns.length; i++)
+            {   // check update column
                 DBColumn updColumn = columns[i].getUpdateColumn();                    
-                if (updColumn!=null && updColumn.equals(column))
+                if (column.equals(updColumn))
                     return i;
                  // Query Expression?
                 if (updColumn instanceof DBQueryColumn)
                 {   updColumn = ((DBQueryColumn)updColumn).getExpr().getUpdateColumn();
-                    if (updColumn!=null && updColumn.equals(column))
+                    if (column.equals(updColumn))
                         return i;
                 }
             }
diff --git a/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java b/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java
index a1dd4258..43cb533b 100644
--- a/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/AliasExpressionTest.java
@@ -67,7 +67,14 @@ public class AliasExpressionTest
         assertEquals(record.getFieldIndex(ALIAS_X), textIndex);
         int numberIndex = record.getFieldIndex(t.C_NUMBER);
         assertEquals(record.getFieldIndex(AMOUNT), numberIndex);
-        
+
+        DBCommand qcmd = context.createCommand();
+        DBColumnExpr Q_SUMME  = t.C_NUMBER.sum().as("SUMME"); 
+        DBColumnExpr Q_ANZAHL = t.count().as("ANZAHL"); 
+        qcmd.select(t.C_NUMBER.sum().as("SUMME"), Q_ANZAHL);
+        DBQuery qsub = new DBQuery(qcmd, "qsub");
+        DBColumn QSUB_SUMME  = qsub.column(Q_SUMME);
+        DBColumn QSUB_ANZAHL = qsub.column(Q_ANZAHL);
         /*
          * (updated 2024-07-18 EMPIREDB-434)
          */
@@ -79,16 +86,18 @@ public class AliasExpressionTest
         cmd.select(AMOUNT, t.C_NUMBER); 
         cmd.select(db.getValueExpr(DateUtils.getDateNow(), DataType.DATE).as(t.C_DATE)); // date as constant
         cmd.select(t.C_INTEGER.coalesce(67).as("ZAHL"));
+        cmd.select(QSUB_SUMME.as("QUERY_SUM"), QSUB_ANZAHL);
         DBColumnExpr[] expr = cmd.getSelectExprList();
         // Hint: ALIAS_2_NEU is not a separate column
-        assertEquals(expr.length, 9);
+        assertEquals(expr.length, 11);
         String exprNames = StringUtils.arrayToString(expr, StringUtils.LIST_TEMPLATE);
-        assertEquals(exprNames, "[testtable_id|testtable.id|ALIAS_1|testtable.TEXT|ALIAS_2|AMOUNT|testtable.NUMBER|DATE|ZAHL]");
+        assertEquals(exprNames, "[testtable_id|testtable.id|ALIAS_1|testtable.TEXT|ALIAS_2|AMOUNT|testtable.NUMBER|DATE|ZAHL|QUERY_SUM|qsub.ANZAHL]");
         // where
         cmd.where(ALIAS_1.isNot("Foo1"));
         cmd.where(ALIAS_2.isNot("Foo2"));
         cmd.where(ALIAS_2_NEW.isNot("Foo3"));
         cmd.where(ALIAS_X.isNot("Foo4"));
+        cmd.join(t, qsub);
         // System.out.println(cmd.getSelect());
         List<DBCompareExpr> list = cmd.getWhereConstraints();
         assertEquals(list.size(), 1);
@@ -108,7 +117,11 @@ public class AliasExpressionTest
         assertEquals(record.getFieldIndex(t.C_DATE), 7);
         assertEquals(record.getFieldIndex(t.C_INTEGER.coalesce(67)), 8);
         assertEquals(record.getFieldIndex(t.C_INTEGER), 8);
-
+        assertEquals(record.getFieldIndex(Q_SUMME), 9);
+        assertEquals(record.getFieldIndex(QSUB_SUMME), 9);
+        assertEquals(record.getFieldIndex(Q_ANZAHL), 10);
+        assertEquals(record.getFieldIndex(QSUB_ANZAHL), 10);
+        
         // Reader 
         DBReader reader = new MyReader(context);
         reader.open(cmd);
@@ -124,6 +137,11 @@ public class AliasExpressionTest
         assertEquals(reader.getFieldIndex(t.C_DATE), 7);
         assertEquals(reader.getFieldIndex(t.C_INTEGER.coalesce(67)), 8);
         assertEquals(reader.getFieldIndex(t.C_INTEGER), 8);
+        assertEquals(reader.getFieldIndex(Q_SUMME), 9);
+        assertEquals(reader.getFieldIndex(QSUB_SUMME), 9);
+        assertEquals(reader.getFieldIndex(Q_ANZAHL), 10);
+        assertEquals(reader.getFieldIndex(QSUB_ANZAHL), 10);
+        
         reader.close();
         
         // DataListEntry
@@ -144,6 +162,10 @@ public class AliasExpressionTest
         assertEquals(dle.getFieldIndex(t.C_DATE), 7);
         assertEquals(dle.getFieldIndex(t.C_INTEGER.coalesce(67)), 8);
         assertEquals(dle.getFieldIndex(t.C_INTEGER), 8);
+        assertEquals(dle.getFieldIndex(Q_SUMME), 9);
+        assertEquals(dle.getFieldIndex(QSUB_SUMME), 9);
+        assertEquals(dle.getFieldIndex(Q_ANZAHL), 10);
+        assertEquals(dle.getFieldIndex(QSUB_ANZAHL), 10);
 
         // done
     }