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);
}
}