EMPIREDB-247

- automatically add WHERE PKs to cmd

Project: http://git-wip-us.apache.org/repos/asf/empire-db/repo
Commit: http://git-wip-us.apache.org/repos/asf/empire-db/commit/04cc588f
Tree: http://git-wip-us.apache.org/repos/asf/empire-db/tree/04cc588f
Diff: http://git-wip-us.apache.org/repos/asf/empire-db/diff/04cc588f

Branch: refs/heads/EMPIREDB-247
Commit: 04cc588fb171d079e057aecd65096de2860153ab
Parents: 16c3111
Author: Jan Glaubitz <[email protected]>
Authored: Fri Aug 19 13:58:28 2016 +0200
Committer: Jan Glaubitz <[email protected]>
Committed: Wed Nov 9 11:56:53 2016 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/empire/db/DBDatabase.java   | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/empire-db/blob/04cc588f/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java 
b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
index 5757b96..b9b7817 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
@@ -40,6 +40,7 @@ import org.apache.empire.db.exceptions.QueryFailedException;
 import org.apache.empire.db.exceptions.QueryNoResultException;
 import org.apache.empire.db.exceptions.StatementFailedException;
 import org.apache.empire.db.expr.column.DBValueExpr;
+import org.apache.empire.db.expr.set.DBSetExpr;
 import org.apache.empire.exceptions.InternalException;
 import org.apache.empire.exceptions.InvalidArgumentException;
 import org.apache.empire.exceptions.ItemExistsException;
@@ -1405,6 +1406,16 @@ public abstract class DBDatabase extends DBObject
        }
        else
        {
+               // Add WHERE (<all pks> to UPDATE
+               DBTable table = (DBTable) cmd.set.get(0).getTable();
+               for (DBSetExpr se : cmd.set)
+               {
+                       DBColumn column = se.column;
+                       if (table.getPrimaryKey().contains(column))
+                       {
+                               cmd.where(column.is(se.value));
+                       }
+               }
                int count = executeUpdate(cmd, conn);
                if (count < 1) {
                        // nothing updated -> INSERT

Reply via email to