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 03011b08 EMPIREDB-444: ValueUtils: fix for DBDatabase.SYSDATE.
03011b08 is described below
commit 03011b08081eeeba99841ea6ce16cc99d64ada93
Author: Rainer Döbele <[email protected]>
AuthorDate: Fri Oct 25 11:16:37 2024 +0200
EMPIREDB-444:
ValueUtils: fix for DBDatabase.SYSDATE.
---
.../src/main/java/org/apache/empire/commons/DateUtils.java | 10 ++++++++++
.../main/java/org/apache/empire/commons/ValueUtils.java | 4 ++++
.../src/main/java/org/apache/empire/db/DBCmdParam.java | 14 ++++++++++++++
3 files changed, 28 insertions(+)
diff --git a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
index c4f8d799..48129aff 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
@@ -18,6 +18,7 @@
*/
package org.apache.empire.commons;
+import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -73,6 +74,15 @@ public class DateUtils
return Calendar.getInstance().getTime();
}
+ /**
+ * Returns a Timestamp for now
+ * @return the Timestamp
+ */
+ public static Timestamp getTimestamp()
+ {
+ return Timestamp.valueOf(LocalDateTime.now());
+ }
+
/**
* Calculates a date relative to the supplied date.
* @param date date to calculate from
diff --git a/empire-db/src/main/java/org/apache/empire/commons/ValueUtils.java
b/empire-db/src/main/java/org/apache/empire/commons/ValueUtils.java
index e3bd611b..ab07ba09 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/ValueUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/ValueUtils.java
@@ -31,6 +31,7 @@ import java.util.Date;
import org.apache.commons.beanutils.MethodUtils;
import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBExpr;
import org.apache.empire.db.expr.column.DBValueExpr;
import org.apache.empire.exceptions.InvalidValueException;
@@ -699,6 +700,9 @@ public class ValueUtils
// check type
if ((value instanceof Date) || (value instanceof Temporal))
return value; // already a date or temporal
+ // sysdate
+ if (DBDatabase.SYSDATE.equals(value))
+ return value; // leave SYSDATE as is
// try to convert
try {
return toDate(value);
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
b/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
index 3d2ebfea..f3221939 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCmdParam.java
@@ -20,6 +20,7 @@ package org.apache.empire.db;
import java.util.Set;
+import org.apache.empire.commons.DateUtils;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.data.DataType;
import org.apache.empire.exceptions.InvalidOperationException;
@@ -82,6 +83,19 @@ public class DBCmdParam extends DBExpr
return value;
// create a clob data
return new DBClobData(value.toString());
+ case DATE:
+ if (DBDatabase.SYSDATE.equals(value))
+ value = DateUtils.getDateNow();
+ return value;
+ case DATETIME:
+ if (DBDatabase.SYSDATE.equals(value))
+ value = DateUtils.getTimeNow();
+ return value;
+ case TIMESTAMP:
+ case UNKNOWN:
+ if (DBDatabase.SYSDATE.equals(value))
+ value = DateUtils.getTimestamp();
+ return value;
default:
// the value
return value;