Changeset: d755d10114b1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d755d10114b1
Modified Files:
        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.32bit
        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 check code to better normalize queries; approve upgrade tests.


diffs (truncated from 19984 to 300 lines):

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
@@ -4228,113 +4228,113 @@ BEGIN
           ELSE 'CHARACTER(' || digits || ')'
         END
       WHEN 'clob' THEN
-        CASE digits
-          WHEN 0 THEN 'CHARACTER LARGE OBJECT'
-          ELSE 'CHARACTER LARGE OBJECT(' || digits || ')'
-        END
+    CASE digits
+      WHEN 0 THEN 'CHARACTER LARGE OBJECT'
+      ELSE 'CHARACTER LARGE OBJECT(' || digits || ')'
+    END
       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'
-          WHEN tscale = 0 THEN 'FLOAT(' || digits || ')'
-          ELSE 'FLOAT(' || digits || ',' || tscale || ')'
-        END
+    CASE
+      WHEN digits = 53 and tscale = 0 THEN 'DOUBLE'
+      WHEN tscale = 0 THEN 'FLOAT(' || digits || ')'
+      ELSE 'FLOAT(' || digits || ',' || tscale || ')'
+    END
       WHEN 'geometry' THEN
-        CASE digits
-          WHEN 4 THEN 'GEOMETRY(POINT' ||
+    CASE digits
+      WHEN 4 THEN 'GEOMETRY(POINT' ||
             CASE tscale
               WHEN 0 THEN ''
               ELSE ',' || tscale
             END || ')'
-          WHEN 8 THEN 'GEOMETRY(LINESTRING' ||
+      WHEN 8 THEN 'GEOMETRY(LINESTRING' ||
             CASE tscale
               WHEN 0 THEN ''
               ELSE ',' || tscale
             END || ')'
-          WHEN 16 THEN 'GEOMETRY(POLYGON' ||
+      WHEN 16 THEN 'GEOMETRY(POLYGON' ||
             CASE tscale
               WHEN 0 THEN ''
               ELSE ',' || tscale
             END || ')'
-          WHEN 20 THEN 'GEOMETRY(MULTIPOINT' ||
+      WHEN 20 THEN 'GEOMETRY(MULTIPOINT' ||
             CASE tscale
               WHEN 0 THEN ''
               ELSE ',' || tscale
             END || ')'
-          WHEN 24 THEN 'GEOMETRY(MULTILINESTRING' ||
+      WHEN 24 THEN 'GEOMETRY(MULTILINESTRING' ||
             CASE tscale
               WHEN 0 THEN ''
               ELSE ',' || tscale
             END || ')'
-          WHEN 28 THEN 'GEOMETRY(MULTIPOLYGON' ||
+      WHEN 28 THEN 'GEOMETRY(MULTIPOLYGON' ||
             CASE tscale
               WHEN 0 THEN ''
               ELSE ',' || tscale
             END || ')'
-          WHEN 32 THEN 'GEOMETRY(GEOMETRYCOLLECTION' ||
+      WHEN 32 THEN 'GEOMETRY(GEOMETRYCOLLECTION' ||
             CASE tscale
               WHEN 0 THEN ''
               ELSE ',' || tscale
             END || ')'
-          ELSE 'GEOMETRY'
+      ELSE 'GEOMETRY'
         END
       WHEN 'hugeint' THEN 'HUGEINT'
       WHEN 'int' THEN 'INTEGER'
       WHEN 'month_interval' THEN
-        CASE digits
-          WHEN 1 THEN 'INTERVAL YEAR'
-          WHEN 2 THEN 'INTERVAL YEAR TO MONTH'
-          WHEN 3 THEN 'INTERVAL MONTH'
-        END
+    CASE digits
+      WHEN 1 THEN 'INTERVAL YEAR'
+      WHEN 2 THEN 'INTERVAL YEAR TO MONTH'
+      WHEN 3 THEN 'INTERVAL MONTH'
+    END
       WHEN 'real' THEN
-        CASE
-          WHEN digits = 24 and tscale = 0 THEN 'REAL'
-          WHEN tscale = 0 THEN 'FLOAT(' || digits || ')'
-          ELSE 'FLOAT(' || digits || ',' || tscale || ')'
-        END
+    CASE
+      WHEN digits = 24 and tscale = 0 THEN 'REAL'
+      WHEN tscale = 0 THEN 'FLOAT(' || digits || ')'
+      ELSE 'FLOAT(' || digits || ',' || tscale || ')'
+    END
       WHEN 'sec_interval' THEN
-        CASE digits
-          WHEN 4 THEN 'INTERVAL DAY'
-          WHEN 5 THEN 'INTERVAL DAY TO HOUR'
-          WHEN 6 THEN 'INTERVAL DAY TO MINUTE'
-          WHEN 7 THEN 'INTERVAL DAY TO SECOND'
-          WHEN 8 THEN 'INTERVAL HOUR'
-          WHEN 9 THEN 'INTERVAL HOUR TO MINUTE'
-          WHEN 10 THEN 'INTERVAL HOUR TO SECOND'
-          WHEN 11 THEN 'INTERVAL MINUTE'
-          WHEN 12 THEN 'INTERVAL MINUTE TO SECOND'
-          WHEN 13 THEN 'INTERVAL SECOND'
-        END
+    CASE digits
+      WHEN 4 THEN 'INTERVAL DAY'
+      WHEN 5 THEN 'INTERVAL DAY TO HOUR'
+      WHEN 6 THEN 'INTERVAL DAY TO MINUTE'
+      WHEN 7 THEN 'INTERVAL DAY TO SECOND'
+      WHEN 8 THEN 'INTERVAL HOUR'
+      WHEN 9 THEN 'INTERVAL HOUR TO MINUTE'
+      WHEN 10 THEN 'INTERVAL HOUR TO SECOND'
+      WHEN 11 THEN 'INTERVAL MINUTE'
+      WHEN 12 THEN 'INTERVAL MINUTE TO SECOND'
+      WHEN 13 THEN 'INTERVAL SECOND'
+    END
       WHEN 'smallint' THEN 'SMALLINT'
       WHEN 'time' THEN
-        CASE digits
-          WHEN 1 THEN 'TIME'
-          ELSE 'TIME(' || (digits - 1) || ')'
-        END
+    CASE digits
+      WHEN 1 THEN 'TIME'
+      ELSE 'TIME(' || (digits - 1) || ')'
+    END
       WHEN 'timestamp' THEN
-        CASE digits
-          WHEN 7 THEN 'TIMESTAMP'
-          ELSE 'TIMESTAMP(' || (digits - 1) || ')'
-        END
+    CASE digits
+      WHEN 7 THEN 'TIMESTAMP'
+      ELSE 'TIMESTAMP(' || (digits - 1) || ')'
+    END
       WHEN 'timestamptz' THEN
-        CASE digits
-          WHEN 7 THEN 'TIMESTAMP'
-          ELSE 'TIMESTAMP(' || (digits - 1) || ')'
-        END || ' WITH TIME ZONE'
+    CASE digits
+      WHEN 7 THEN 'TIMESTAMP'
+      ELSE 'TIMESTAMP(' || (digits - 1) || ')'
+    END || ' WITH TIME ZONE'
       WHEN 'timetz' THEN
-        CASE digits
-          WHEN 1 THEN 'TIME'
-          ELSE 'TIME(' || (digits - 1) || ')'
-        END || ' WITH TIME ZONE'
+    CASE digits
+      WHEN 1 THEN 'TIME'
+      ELSE 'TIME(' || (digits - 1) || ')'
+    END || ' WITH TIME ZONE'
       WHEN 'tinyint' THEN 'TINYINT'
       WHEN 'varchar' THEN 'CHARACTER VARYING(' || digits || ')'
       ELSE
@@ -4342,49 +4342,768 @@ BEGIN
           WHEN lower(ctype) = ctype THEN upper(ctype)
           ELSE '"' || ctype || '"'
         END || CASE digits
-          WHEN 0 THEN ''
+      WHEN 0 THEN ''
           ELSE '(' || digits || CASE tscale
-            WHEN 0 THEN ''
+        WHEN 0 THEN ''
             ELSE ',' || tscale
           END || ')'
-        END
+    END
     END;
 END;
+
+CREATE FUNCTION sys.SQ (s STRING) RETURNS STRING BEGIN RETURN ' ''' || s || 
''' '; END;
+CREATE FUNCTION sys.DQ (s STRING) RETURNS STRING BEGIN RETURN '"' || s || '"'; 
END; --TODO: Figure out why this breaks with the space
+CREATE FUNCTION sys.FQN(s STRING, t STRING) RETURNS STRING BEGIN RETURN DQ(s) 
|| '.' || DQ(t); END;
+CREATE FUNCTION sys.ALTER_TABLE(s STRING, t STRING) RETURNS STRING BEGIN 
RETURN 'ALTER TABLE ' || FQN(s, t) || ' '; END;
+
+--We need pcre to implement a header guard which means adding the schema of an 
object explicitely to its identifier.
+CREATE FUNCTION sys.replace_first(ori STRING, pat STRING, rep STRING, flg 
STRING) RETURNS STRING EXTERNAL NAME "pcre"."replace_first";
+CREATE FUNCTION sys.schema_guard(sch STRING, nme STRING, stmt STRING) RETURNS 
STRING BEGIN
+RETURN
+    SELECT replace_first(stmt, '(\\s*"?' || sch ||  '"?\\s*\\.|)\\s*"?' || nme 
|| '"?\\s*', ' ' || FQN(sch, nme) || ' ', 'imsx');
+END;
+
+CREATE VIEW sys.describe_constraints AS
+    SELECT
+        s.name sch,
+        t.name tbl,
+        kc.name col,
+        k.name con,
+        CASE WHEN k.type = 0 THEN 'PRIMARY KEY' WHEN k.type = 1 THEN 'UNIQUE' 
END tpe
+    FROM sys.schemas s, sys._tables t, sys.objects kc, sys.keys k
+    WHERE kc.id = k.id
+        AND k.table_id = t.id
+        AND s.id = t.schema_id
+        AND t.system = FALSE
+        AND k.type in (0, 1)
+        AND t.type IN (0, 6);
+
+CREATE VIEW sys.describe_indices AS
+    WITH it (id, idx) AS (VALUES (0, 'INDEX'), (4, 'IMPRINTS INDEX'), (5, 
'ORDERED INDEX')) --UNIQUE INDEX wraps to INDEX.
+    SELECT
+        i.name ind,
+        s.name sch,
+        t.name tbl,
+        c.name col,
+        it.idx tpe
+    FROM
+        sys.idxs AS i LEFT JOIN sys.keys AS k ON i.name = k.name,
+        sys.objects AS kc,
+        sys._columns AS c,
+        sys.schemas s,
+        sys._tables AS t,
+        it
+    WHERE
+        i.table_id = t.id
+        AND i.id = kc.id
+        AND kc.name = c.name
+        AND t.id = c.table_id
+        AND t.schema_id = s.id
+        AND k.type IS NULL
+        AND i.type = it.id
+    ORDER BY i.name, kc.nr;
+
+CREATE VIEW sys.describe_column_defaults AS
+    SELECT
+        s.name sch,
+        t.name tbl,
+        c.name col,
+        c."default" def
+    FROM schemas s, tables t, columns c
+    WHERE
+        s.id = t.schema_id AND
+        t.id = c.table_id AND
+        s.name <> 'tmp' AND
+        NOT t.system AND
+        c."default" IS NOT NULL;
+
+CREATE VIEW sys.describe_foreign_keys AS
+        WITH action_type (id, act) AS (VALUES
+            (0, 'NO ACTION'),
+            (1, 'CASCADE'),
+            (2, 'RESTRICT'),
+            (3, 'SET NULL'),
+            (4, 'SET DEFAULT'))
+        SELECT
+            fs.name fk_s,
+            fkt.name fk_t,
+            fkkc.name fk_c,
+            fkkc.nr o,
+            fkk.name fk,
+            ps.name pk_s,
+            pkt.name pk_t,
+            pkkc.name pk_c,
+            ou.act on_update,
+            od.act on_delete
+        FROM sys._tables fkt,
+            sys.objects fkkc,
+            sys.keys fkk,
+            sys._tables pkt,
+            sys.objects pkkc,
+            sys.keys pkk,
+            sys.schemas ps,
+            sys.schemas fs,
+            action_type ou,
+            action_type od
+        WHERE fkt.id = fkk.table_id
+        AND pkt.id = pkk.table_id
+        AND fkk.id = fkkc.id
+        AND pkk.id = pkkc.id
+        AND fkk.rkey = pkk.id
+        AND fkkc.nr = pkkc.nr
+        AND pkt.schema_id = ps.id
+        AND fkt.schema_id = fs.id
+        AND (fkk."action" & 255)         = od.id
+        AND ((fkk."action" >> 8) & 255)  = ou.id
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to