Changeset: ac36df565369 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ac36df565369
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/52_describe.sql
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.ppc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.ppc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.SQL.py
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

Fix and approve upgrade.


diffs (truncated from 5889 to 300 lines):

diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -2586,165 +2586,138 @@ sql_update_default(Client c, mvc *sql, c
                                        "    CASE ctype\n"
                                        "      WHEN 'bigint' THEN 'BIGINT'\n"
                                        "      WHEN 'blob' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 0 THEN 'BINARY LARGE 
OBJECT'\n"
-                                       "      ELSE 'BINARY LARGE OBJECT(' || 
CAST(digits AS string) || ')'\n"
-                                       "    END\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 0 THEN 'BINARY LARGE 
OBJECT'\n"
+                                       "          ELSE 'BINARY LARGE OBJECT(' 
|| digits || ')'\n"
+                                       "        END\n"
                                        "      WHEN 'boolean' THEN 'BOOLEAN'\n"
                                        "      WHEN 'char' THEN\n"
                                        "        CASE digits\n"
                                        "          WHEN 1 THEN 'CHARACTER'\n"
-                                       "          ELSE 'CHARACTER(' || 
CAST(digits AS string) || ')'\n"
+                                       "          ELSE 'CHARACTER(' || digits 
|| ')'\n"
                                        "        END\n"
                                        "      WHEN 'clob' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 0 THEN 'CHARACTER LARGE 
OBJECT'\n"
-                                       "      ELSE 'CHARACTER LARGE OBJECT(' 
|| CAST(digits AS string) || ')'\n"
-                                       "    END\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 0 THEN 'CHARACTER LARGE 
OBJECT'\n"
+                                       "          ELSE 'CHARACTER LARGE 
OBJECT(' || digits || ')'\n"
+                                       "        END\n"
                                        "      WHEN 'date' THEN 'DATE'\n"
                                        "      WHEN 'day_interval' THEN 
'INTERVAL DAY'\n"
-                                       "      WHEN 'decimal' THEN 'DECIMAL(' 
|| CAST(digits AS string) || ',' || CAST(tscale AS string) || ')'\n"
+                                       "      WHEN ctype = 'decimal' THEN\n"
+                                       "        CASE\n"
+                                       "          WHEN (digits = 1 AND tscale 
= 0) OR digits = 0 THEN 'DECIMAL'\n"
+                                       "          WHEN tscale = 0 THEN 
'DECIMAL(' || digits || ')'\n"
+                                       "          WHEN digits = 39 THEN 
'DECIMAL(' || 38 || ',' || tscale || ')'\n"
+                                       "          WHEN digits = 19 AND (SELECT 
COUNT(*) = 0 FROM sys.types WHERE sqlname = 'hugeint' ) THEN 'DECIMAL(' || 18 
|| ',' || tscale || ')'\n"
+                                       "          ELSE 'DECIMAL(' || digits || 
',' || tscale || ')'\n"
+                                       "        END\n"
                                        "      WHEN 'double' THEN\n"
-                                       "    CASE\n"
-                                       "      WHEN digits = 53 and tscale = 0 
THEN 'DOUBLE'\n"
-                                       "      WHEN tscale = 0 THEN 'FLOAT(' || 
CAST(digits AS string) || ')'\n"
-                                       "      ELSE 'FLOAT(' || CAST(digits AS 
string) || ',' || CAST(tscale AS string) || ')'\n"
-                                       "    END\n"
+                                       "        CASE\n"
+                                       "          WHEN digits = 53 and tscale 
= 0 THEN 'DOUBLE'\n"
+                                       "          WHEN tscale = 0 THEN 
'FLOAT(' || digits || ')'\n"
+                                       "          ELSE 'FLOAT(' || digits || 
',' || tscale || ')'\n"
+                                       "        END\n"
                                        "      WHEN 'geometry' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 4 THEN 'GEOMETRY(POINT' 
||\n"
-                                       "            CASE tscale\n"
-                                       "              WHEN 0 THEN ''\n"
-                                       "              ELSE ',' || CAST(tscale 
AS string)\n"
-                                       "            END || ')'\n"
-                                       "      WHEN 8 THEN 
'GEOMETRY(LINESTRING' ||\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 4 THEN 'GEOMETRY(POINT' 
||\n"
                                        "            CASE tscale\n"
                                        "              WHEN 0 THEN ''\n"
-                                       "              ELSE ',' || CAST(tscale 
AS string)\n"
+                                       "              ELSE ',' || tscale\n"
                                        "            END || ')'\n"
-                                       "      WHEN 16 THEN 'GEOMETRY(POLYGON' 
||\n"
+                                       "          WHEN 8 THEN 
'GEOMETRY(LINESTRING' ||\n"
                                        "            CASE tscale\n"
                                        "              WHEN 0 THEN ''\n"
-                                       "              ELSE ',' || CAST(tscale 
AS string)\n"
+                                       "              ELSE ',' || tscale\n"
                                        "            END || ')'\n"
-                                       "      WHEN 20 THEN 
'GEOMETRY(MULTIPOINT' ||\n"
+                                       "          WHEN 16 THEN 
'GEOMETRY(POLYGON' ||\n"
+                                       "            CASE tscale\n"
+                                       "              WHEN 0 THEN ''\n"
+                                       "              ELSE ',' || tscale\n"
+                                       "            END || ')'\n"
+                                       "          WHEN 20 THEN 
'GEOMETRY(MULTIPOINT' ||\n"
                                        "            CASE tscale\n"
                                        "              WHEN 0 THEN ''\n"
-                                       "              ELSE ',' || CAST(tscale 
AS string)\n"
+                                       "              ELSE ',' || tscale\n"
                                        "            END || ')'\n"
-                                       "      WHEN 24 THEN 
'GEOMETRY(MULTILINESTRING' ||\n"
+                                       "          WHEN 24 THEN 
'GEOMETRY(MULTILINESTRING' ||\n"
                                        "            CASE tscale\n"
                                        "              WHEN 0 THEN ''\n"
-                                       "              ELSE ',' || CAST(tscale 
AS string)\n"
+                                       "              ELSE ',' || tscale\n"
                                        "            END || ')'\n"
-                                       "      WHEN 28 THEN 
'GEOMETRY(MULTIPOLYGON' ||\n"
+                                       "          WHEN 28 THEN 
'GEOMETRY(MULTIPOLYGON' ||\n"
                                        "            CASE tscale\n"
                                        "              WHEN 0 THEN ''\n"
-                                       "              ELSE ',' || CAST(tscale 
AS string)\n"
+                                       "              ELSE ',' || tscale\n"
                                        "            END || ')'\n"
-                                       "      WHEN 32 THEN 
'GEOMETRY(GEOMETRYCOLLECTION' ||\n"
+                                       "          WHEN 32 THEN 
'GEOMETRY(GEOMETRYCOLLECTION' ||\n"
                                        "            CASE tscale\n"
                                        "              WHEN 0 THEN ''\n"
-                                       "              ELSE ',' || CAST(tscale 
AS string)\n"
+                                       "              ELSE ',' || tscale\n"
                                        "            END || ')'\n"
-                                       "      ELSE 'GEOMETRY'\n"
+                                       "          ELSE 'GEOMETRY'\n"
                                        "        END\n"
                                        "      WHEN 'hugeint' THEN 'HUGEINT'\n"
                                        "      WHEN 'int' THEN 'INTEGER'\n"
                                        "      WHEN 'month_interval' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 1 THEN 'INTERVAL YEAR'\n"
-                                       "      WHEN 2 THEN 'INTERVAL YEAR TO 
MONTH'\n"
-                                       "      WHEN 3 THEN 'INTERVAL MONTH'\n"
-                                       "    END\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 1 THEN 'INTERVAL 
YEAR'\n"
+                                       "          WHEN 2 THEN 'INTERVAL YEAR 
TO MONTH'\n"
+                                       "          WHEN 3 THEN 'INTERVAL 
MONTH'\n"
+                                       "        END\n"
                                        "      WHEN 'real' THEN\n"
-                                       "    CASE\n"
-                                       "      WHEN digits = 24 and tscale = 0 
THEN 'REAL'\n"
-                                       "      WHEN tscale = 0 THEN 'FLOAT(' || 
CAST(digits AS string) || ')'\n"
-                                       "      ELSE 'FLOAT(' || CAST(digits AS 
string) || ',' || CAST(tscale AS string) || ')'\n"
-                                       "    END\n"
+                                       "        CASE\n"
+                                       "          WHEN digits = 24 and tscale 
= 0 THEN 'REAL'\n"
+                                       "          WHEN tscale = 0 THEN 
'FLOAT(' || digits || ')'\n"
+                                       "          ELSE 'FLOAT(' || digits || 
',' || tscale || ')'\n"
+                                       "        END\n"
                                        "      WHEN 'sec_interval' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 4 THEN 'INTERVAL DAY'\n"
-                                       "      WHEN 5 THEN 'INTERVAL DAY TO 
HOUR'\n"
-                                       "      WHEN 6 THEN 'INTERVAL DAY TO 
MINUTE'\n"
-                                       "      WHEN 7 THEN 'INTERVAL DAY TO 
SECOND'\n"
-                                       "      WHEN 8 THEN 'INTERVAL HOUR'\n"
-                                       "      WHEN 9 THEN 'INTERVAL HOUR TO 
MINUTE'\n"
-                                       "      WHEN 10 THEN 'INTERVAL HOUR TO 
SECOND'\n"
-                                       "      WHEN 11 THEN 'INTERVAL MINUTE'\n"
-                                       "      WHEN 12 THEN 'INTERVAL MINUTE TO 
SECOND'\n"
-                                       "      WHEN 13 THEN 'INTERVAL SECOND'\n"
-                                       "    END\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 4 THEN 'INTERVAL DAY'\n"
+                                       "          WHEN 5 THEN 'INTERVAL DAY TO 
HOUR'\n"
+                                       "          WHEN 6 THEN 'INTERVAL DAY TO 
MINUTE'\n"
+                                       "          WHEN 7 THEN 'INTERVAL DAY TO 
SECOND'\n"
+                                       "          WHEN 8 THEN 'INTERVAL 
HOUR'\n"
+                                       "          WHEN 9 THEN 'INTERVAL HOUR 
TO MINUTE'\n"
+                                       "          WHEN 10 THEN 'INTERVAL HOUR 
TO SECOND'\n"
+                                       "          WHEN 11 THEN 'INTERVAL 
MINUTE'\n"
+                                       "          WHEN 12 THEN 'INTERVAL 
MINUTE TO SECOND'\n"
+                                       "          WHEN 13 THEN 'INTERVAL 
SECOND'\n"
+                                       "        END\n"
                                        "      WHEN 'smallint' THEN 
'SMALLINT'\n"
                                        "      WHEN 'time' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 1 THEN 'TIME'\n"
-                                       "      ELSE 'TIME(' || CAST(digits - 1 
AS string) || ')'\n"
-                                       "    END\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 1 THEN 'TIME'\n"
+                                       "          ELSE 'TIME(' || (digits - 1) 
|| ')'\n"
+                                       "        END\n"
                                        "      WHEN 'timestamp' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 7 THEN 'TIMESTAMP'\n"
-                                       "      ELSE 'TIMESTAMP(' || CAST(digits 
- 1 AS string) || ')'\n"
-                                       "    END\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 7 THEN 'TIMESTAMP'\n"
+                                       "          ELSE 'TIMESTAMP(' || (digits 
- 1) || ')'\n"
+                                       "        END\n"
                                        "      WHEN 'timestamptz' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 7 THEN 'TIMESTAMP'\n"
-                                       "      ELSE 'TIMESTAMP(' || CAST(digits 
- 1 AS string) || ')'\n"
-                                       "    END || ' WITH TIME ZONE'\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 7 THEN 'TIMESTAMP'\n"
+                                       "          ELSE 'TIMESTAMP(' || (digits 
- 1) || ')'\n"
+                                       "        END || ' WITH TIME ZONE'\n"
                                        "      WHEN 'timetz' THEN\n"
-                                       "    CASE digits\n"
-                                       "      WHEN 1 THEN 'TIME'\n"
-                                       "      ELSE 'TIME(' || CAST(digits - 1 
AS string) || ')'\n"
-                                       "    END || ' WITH TIME ZONE'\n"
+                                       "        CASE digits\n"
+                                       "          WHEN 1 THEN 'TIME'\n"
+                                       "          ELSE 'TIME(' || (digits - 1) 
|| ')'\n"
+                                       "        END || ' WITH TIME ZONE'\n"
                                        "      WHEN 'tinyint' THEN 'TINYINT'\n"
-                                       "      WHEN 'varchar' THEN 'CHARACTER 
VARYING(' || CAST(digits AS string) || ')'\n"
+                                       "      WHEN 'varchar' THEN 'CHARACTER 
VARYING(' || digits || ')'\n"
                                        "      ELSE\n"
                                        "        CASE\n"
                                        "          WHEN lower(ctype) = ctype 
THEN upper(ctype)\n"
                                        "          ELSE '\"' || ctype || '\"'\n"
                                        "        END || CASE digits\n"
-                                       "      WHEN 0 THEN ''\n"
-                                       "          ELSE '(' || CAST(digits AS 
string) || CASE tscale\n"
-                                       "        WHEN 0 THEN ''\n"
-                                       "            ELSE ',' || CAST(tscale AS 
string)\n"
+                                       "          WHEN 0 THEN ''\n"
+                                       "          ELSE '(' || digits || CASE 
tscale\n"
+                                       "            WHEN 0 THEN ''\n"
+                                       "            ELSE ',' || tscale\n"
                                        "          END || ')'\n"
-                                       "    END\n"
+                                       "        END\n"
                                        "    END;\n"
-                                       "END;\n"
-                                       "CREATE FUNCTION 
sys.describe_table(schemaName string, tableName string)\n"
-                                       "  RETURNS TABLE(name string, query 
string, type string, id integer, remark string)\n"
-                                       "BEGIN\n"
-                                       "    RETURN SELECT t.name, t.query, 
tt.table_type_name, t.id, c.remark\n"
-                                       "        FROM sys.schemas s, 
sys.table_types tt, sys._tables t\n"
-                                       "        LEFT OUTER JOIN sys.comments c 
ON t.id = c.id\n"
-                                       "            WHERE s.name = 
schemaName\n"
-                                       "            AND t.schema_id = s.id\n"
-                                       "            AND t.name = tableName\n"
-                                       "            AND t.type = 
tt.table_type_id;\n"
-                                       "END;\n"
-                                       "CREATE FUNCTION 
sys.describe_columns(schemaName string, tableName string)\n"
-                                       "    RETURNS TABLE(name string, type 
string, digits integer, scale integer, Nulls boolean, cDefault string, number 
integer, sqltype string, remark string)\n"
-                                       "BEGIN\n"
-                                       "    RETURN SELECT c.name, c.\"type\", 
c.type_digits, c.type_scale, c.\"null\", c.\"default\", c.number, 
describe_type(c.\"type\", c.type_digits, c.type_scale), com.remark\n"
-                                       "        FROM sys._tables t, 
sys.schemas s, sys._columns c\n"
-                                       "        LEFT OUTER JOIN sys.comments 
com ON c.id = com.id\n"
-                                       "            WHERE c.table_id = t.id\n"
-                                       "            AND t.name = tableName\n"
-                                       "            AND t.schema_id = s.id\n"
-                                       "            AND s.name = schemaName\n"
-                                       "        ORDER BY c.number;\n"
-                                       "END;\n"
-                                       "CREATE FUNCTION 
sys.describe_function(schemaName string, functionName string)\n"
-                                       "    RETURNS TABLE(id integer, name 
string, type string, language string, remark string)\n"
-                                       "BEGIN\n"
-                                       "    RETURN SELECT f.id, f.name, 
ft.function_type_keyword, fl.language_keyword, c.remark\n"
-                                       "        FROM sys.functions f\n"
-                                       "        JOIN sys.schemas s ON 
f.schema_id = s.id\n"
-                                       "        JOIN sys.function_types ft ON 
f.type = ft.function_type_id\n"
-                                       "        LEFT OUTER JOIN 
sys.function_languages fl ON f.language = fl.language_id\n"
-                                       "        LEFT OUTER JOIN sys.comments c 
ON f.id = c.id\n"
-                                       "        WHERE f.name=functionName AND 
s.name = schemaName;\n"
                                        "END;\n");
 
                        pos += snprintf(buf + pos, bufsize - pos,
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
@@ -29,13 +29,13 @@ BEGIN
       WHEN 'date' THEN 'DATE'
       WHEN 'day_interval' THEN 'INTERVAL DAY'
       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
+       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'
diff --git a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 
b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
--- a/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
+++ b/sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
@@ -4217,166 +4217,139 @@ BEGIN
     CASE ctype
       WHEN 'bigint' THEN 'BIGINT'
       WHEN 'blob' THEN
-    CASE digits
-      WHEN 0 THEN 'BINARY LARGE OBJECT'
-      ELSE 'BINARY LARGE OBJECT(' || CAST(digits AS string) || ')'
-    END
+        CASE digits
+          WHEN 0 THEN 'BINARY LARGE OBJECT'
+          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
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to