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 b181399 EMPIREDB-318 DBQuery code optimization
b181399 is described below
commit b181399f2816876f17cb24e33482ab2cce1ca85b
Author: Rainer Döbele <[email protected]>
AuthorDate: Fri Nov 8 11:15:35 2019 +0100
EMPIREDB-318
DBQuery code optimization
---
.../main/java/org/apache/empire/db/DBQuery.java | 39 ++++++++++++++++++++--
1 file changed, 36 insertions(+), 3 deletions(-)
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 9a8ae57..4347a89 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
@@ -60,6 +60,39 @@ public class DBQuery extends DBRowSet
private final static long serialVersionUID = 1L;
private static AtomicInteger queryCount = new AtomicInteger(0);
+
+ /**
+ * DBQueryExprColumn
+ * @author doebele
+ */
+ protected static class DBQueryExprColumn extends DBQueryColumn
+ {
+ private static final long serialVersionUID = 1L;
+
+ protected DBQueryExprColumn(DBQuery q, String name, DBColumnExpr expr)
+ {
+ super(q, name, expr);
+ }
+
+ @Override
+ public DBColumn getUpdateColumn()
+ {
+ return expr.getUpdateColumn();
+ }
+
+ @Override
+ public boolean equals(Object other)
+ {
+ if (super.equals(other))
+ return true;
+ if (other instanceof DBQueryColumn)
+ { // compare expressions
+ DBQueryColumn oc = (DBQueryColumn)other;
+ return (this.rowset.equals(oc.getRowSet()) &&
this.expr.equals(oc.getExpr()));
+ }
+ return false;
+ }
+ }
protected final DBCommandExpr cmdExpr;
protected final DBColumn[] keyColumns;
@@ -89,7 +122,7 @@ public class DBQuery extends DBRowSet
DBColumn column = exprList[i].getUpdateColumn();
if (column==null || (exprList[i] instanceof DBAliasExpr))
{ // user QueryColumn
- column = queryColumns[i];
+ column = new DBQueryExprColumn(this,
queryColumns[i].getName(), exprList[i]);
}
columns.add(column);
}
@@ -632,7 +665,7 @@ public class DBQuery extends DBRowSet
index=0;
for (DBColumn c : columns)
{ // check update column
- if ((c instanceof DBQueryColumn) &&
column.equals(((DBQueryColumn)c).expr.getUpdateColumn()))
+ if ((c instanceof DBQueryExprColumn) &&
column.equals(c.getUpdateColumn()))
return index;
// next
index++;
@@ -646,7 +679,7 @@ public class DBQuery extends DBRowSet
{
DBColumn column = columns.get(index);
if (column instanceof DBQueryColumn)
- return ((DBQueryColumn)column).expr; // unwrap
+ return ((DBQueryExprColumn)column).expr; // unwrap
// use column
return column;
}