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 e7a4b51  EMPIREDB-362 bugfix: Record field not set to modified for 
column default values
e7a4b51 is described below

commit e7a4b518ebeaa965cef122f99e8be9ca832b9a28
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Feb 21 10:10:36 2022 +0100

    EMPIREDB-362 bugfix: Record field not set to modified for column default 
values
---
 empire-db/src/main/java/org/apache/empire/db/DBRowSet.java | 10 +++++-----
 empire-db/src/main/java/org/apache/empire/db/DBTable.java  |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java 
b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index 49af182..2d96411 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -615,8 +615,6 @@ public abstract class DBRowSet extends DBExpr implements 
EntityType
         checkParamRecord(record, false);
         // Prepare
         prepareInitRecord(record, newRecord);
-        // Initialize all Fields
-        Object[] fields = record.getFields();
         /* 
          * DO NOT fill with ObjectUtils.NO_VALUE!
          */    
@@ -628,6 +626,8 @@ public abstract class DBRowSet extends DBExpr implements 
EntityType
                 throw new NoPrimaryKeyException(this);
             if (key.length!=keyColumns.length)
                 throw new InvalidArgumentException("key", key);
+            // Set key
+            Object[] fields = record.getFields();
             for (int i = 0; i < keyColumns.length; i++)
             {   // ignore null (important!)
                 if (key[i]==null)
@@ -687,8 +687,8 @@ public abstract class DBRowSet extends DBExpr implements 
EntityType
                 fields[i] = ObjectUtils.NO_VALUE;
                }
                else
-               {   // Get Field value
-                fields[i] = recData.getValue(rdi);
+               {   // Copy field value (do not set to modified!)
+                   fields[i] = recData.getValue(rdi);
                }
         }
         // Done
@@ -716,7 +716,7 @@ public abstract class DBRowSet extends DBExpr implements 
EntityType
         {   // already set ?
             if (fields[i]!=null)
                 continue; 
-            // check default
+            // Set to NO_VALUE
             fields[i] = ObjectUtils.NO_VALUE;
         }
     }
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBTable.java 
b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
index a87b6e1..1b565cd 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBTable.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
@@ -842,10 +842,10 @@ public class DBTable extends DBRowSet implements Cloneable
             DBColumn column = columns.get(i);
             // getDefaultValue
             Object value = ((DBTableColumn)column).getRecordDefaultValue(conn);
-            if (value==null)
+            if (ObjectUtils.isEmpty(value))
                 continue;
             // Initial value
-            fields[i] = value;
+            record.modifyValue(i, value, false);
         }
     }
     

Reply via email to