You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2023/03/23 13:33:18 UTC

[empire-db] branch master updated: EMPIREDB-386 SQLServer: Allow to provide decimal precision and scale for convert phrase

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 9efe9d4b EMPIREDB-386 SQLServer: Allow to provide decimal precision and scale for convert phrase
9efe9d4b is described below

commit 9efe9d4bced67e26dfce43bafc418100721545c9
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Thu Mar 23 14:33:14 2023 +0100

    EMPIREDB-386
    SQLServer: Allow to provide decimal precision and scale for convert phrase
---
 .../java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java   | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
index 6d046df6..a3322a75 100644
--- a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
+++ b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
@@ -435,7 +435,13 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
         {
            case BOOL:      return "convert(bit, ?)";
            case INTEGER:   return "convert(int, ?)";
-           case DECIMAL:   return "convert(decimal, ?)";
+           case DECIMAL:
+               if (format instanceof Number)
+               {   // Format should be a float, double or BigDecimal with prec.scale
+                   return "convert(decimal("+format.toString().replace('.', ',')+"), ?)";
+               }
+               // plain
+               return "convert(decimal, ?)";
            case FLOAT:     return "convert(float, ?)";
            case DATE:      return "convert(date, ?, 111)";
            case TIME:      return "convert(time, ?)";