Changeset: cf66f5b21907 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cf66f5b21907
Modified Files:
        sql/scripts/52_describe.sql
Branch: default
Log Message:

Merge into describe_type() small additions from monetdbe-proxy.


diffs (141 lines):

diff --git a/sql/scripts/52_describe.sql b/sql/scripts/52_describe.sql
--- a/sql/scripts/52_describe.sql
+++ b/sql/scripts/52_describe.sql
@@ -13,64 +13,71 @@ BEGIN
       WHEN 'blob' THEN
        CASE digits
          WHEN 0 THEN 'BINARY LARGE OBJECT'
-         ELSE 'BINARY LARGE OBJECT(' || CAST(digits AS string) || ')'
+         ELSE 'BINARY LARGE OBJECT(' || digits || ')'
        END
       WHEN 'boolean' THEN 'BOOLEAN'
       WHEN 'char' THEN
         CASE digits
           WHEN 1 THEN 'CHARACTER'
-          ELSE 'CHARACTER(' || CAST(digits AS string) || ')'
+          ELSE 'CHARACTER(' || digits || ')'
         END
       WHEN 'clob' THEN
        CASE digits
          WHEN 0 THEN 'CHARACTER LARGE OBJECT'
-         ELSE 'CHARACTER LARGE OBJECT(' || CAST(digits AS string) || ')'
+         ELSE 'CHARACTER LARGE OBJECT(' || digits || ')'
        END
       WHEN 'date' THEN 'DATE'
       WHEN 'day_interval' THEN 'INTERVAL DAY'
-      WHEN 'decimal' THEN 'DECIMAL(' || CAST(digits AS string) || ',' || 
CAST(tscale AS string) || ')'
+      WHEN ctype = 'decimal' THEN
+               CASE
+                       WHEN (digits = 1 AND tscale = 0) OR digits = 0 THEN 
'DECIMAL'
+                       WHEN tscale = 0 THEN 'DECIMAL(' || digits || ')'
+                       WHEN digits = 39 THEN 'DECIMAL(' || 38 || ',' || tscale 
|| ')'
+                       WHEN digits = 19 AND (SELECT COUNT(*) = 0 FROM 
sys.types WHERE sqlname = 'hugeint' ) THEN 'DECIMAL(' || 18 || ',' || tscale || 
')'
+                       ELSE 'DECIMAL(' || digits || ',' || tscale || ')'
+               END
       WHEN 'double' THEN
        CASE
          WHEN digits = 53 and tscale = 0 THEN 'DOUBLE'
-         WHEN tscale = 0 THEN 'FLOAT(' || CAST(digits AS string) || ')'
-         ELSE 'FLOAT(' || CAST(digits AS string) || ',' || CAST(tscale AS 
string) || ')'
+         WHEN tscale = 0 THEN 'FLOAT(' || digits || ')'
+         ELSE 'FLOAT(' || digits || ',' || tscale || ')'
        END
       WHEN 'geometry' THEN
        CASE digits
          WHEN 4 THEN 'GEOMETRY(POINT' ||
             CASE tscale
               WHEN 0 THEN ''
-              ELSE ',' || CAST(tscale AS string)
+              ELSE ',' || tscale
             END || ')'
          WHEN 8 THEN 'GEOMETRY(LINESTRING' ||
             CASE tscale
               WHEN 0 THEN ''
-              ELSE ',' || CAST(tscale AS string)
+              ELSE ',' || tscale
             END || ')'
          WHEN 16 THEN 'GEOMETRY(POLYGON' ||
             CASE tscale
               WHEN 0 THEN ''
-              ELSE ',' || CAST(tscale AS string)
+              ELSE ',' || tscale
             END || ')'
          WHEN 20 THEN 'GEOMETRY(MULTIPOINT' ||
             CASE tscale
               WHEN 0 THEN ''
-              ELSE ',' || CAST(tscale AS string)
+              ELSE ',' || tscale
             END || ')'
          WHEN 24 THEN 'GEOMETRY(MULTILINESTRING' ||
             CASE tscale
               WHEN 0 THEN ''
-              ELSE ',' || CAST(tscale AS string)
+              ELSE ',' || tscale
             END || ')'
          WHEN 28 THEN 'GEOMETRY(MULTIPOLYGON' ||
             CASE tscale
               WHEN 0 THEN ''
-              ELSE ',' || CAST(tscale AS string)
+              ELSE ',' || tscale
             END || ')'
          WHEN 32 THEN 'GEOMETRY(GEOMETRYCOLLECTION' ||
             CASE tscale
               WHEN 0 THEN ''
-              ELSE ',' || CAST(tscale AS string)
+              ELSE ',' || tscale
             END || ')'
          ELSE 'GEOMETRY'
         END
@@ -85,8 +92,8 @@ BEGIN
       WHEN 'real' THEN
        CASE
          WHEN digits = 24 and tscale = 0 THEN 'REAL'
-         WHEN tscale = 0 THEN 'FLOAT(' || CAST(digits AS string) || ')'
-         ELSE 'FLOAT(' || CAST(digits AS string) || ',' || CAST(tscale AS 
string) || ')'
+         WHEN tscale = 0 THEN 'FLOAT(' || digits || ')'
+         ELSE 'FLOAT(' || digits || ',' || tscale || ')'
        END
       WHEN 'sec_interval' THEN
        CASE digits
@@ -105,34 +112,34 @@ BEGIN
       WHEN 'time' THEN
        CASE digits
          WHEN 1 THEN 'TIME'
-         ELSE 'TIME(' || CAST(digits - 1 AS string) || ')'
+         ELSE 'TIME(' || (digits - 1) || ')'
        END
       WHEN 'timestamp' THEN
        CASE digits
          WHEN 7 THEN 'TIMESTAMP'
-         ELSE 'TIMESTAMP(' || CAST(digits - 1 AS string) || ')'
+         ELSE 'TIMESTAMP(' || (digits - 1) || ')'
        END
       WHEN 'timestamptz' THEN
        CASE digits
          WHEN 7 THEN 'TIMESTAMP'
-         ELSE 'TIMESTAMP(' || CAST(digits - 1 AS string) || ')'
+         ELSE 'TIMESTAMP(' || (digits - 1) || ')'
        END || ' WITH TIME ZONE'
       WHEN 'timetz' THEN
        CASE digits
          WHEN 1 THEN 'TIME'
-         ELSE 'TIME(' || CAST(digits - 1 AS string) || ')'
+         ELSE 'TIME(' || (digits - 1) || ')'
        END || ' WITH TIME ZONE'
       WHEN 'tinyint' THEN 'TINYINT'
-      WHEN 'varchar' THEN 'CHARACTER VARYING(' || CAST(digits AS string) || ')'
+      WHEN 'varchar' THEN 'CHARACTER VARYING(' || digits || ')'
       ELSE
         CASE
           WHEN lower(ctype) = ctype THEN upper(ctype)
           ELSE '"' || ctype || '"'
         END || CASE digits
          WHEN 0 THEN ''
-          ELSE '(' || CAST(digits AS string) || CASE tscale
+          ELSE '(' || digits || CASE tscale
            WHEN 0 THEN ''
-            ELSE ',' || CAST(tscale AS string)
+            ELSE ',' || tscale
           END || ')'
        END
     END;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to