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
}