Changeset: 75a133fe53a5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=75a133fe53a5
Modified Files:
        dump.sql
Branch: monetdbe-proxy
Log Message:

Dump UNIQUE & PRIMARY KEY table contraints.


diffs (61 lines):

diff --git a/dump.sql b/dump.sql
--- a/dump.sql
+++ b/dump.sql
@@ -32,7 +32,7 @@ CREATE FUNCTION dump_type(type STRING, d
                        WHEN digits = 10 THEN 'INTERVAL HOUR TO SECOND'
                        WHEN digits = 11 THEN 'INTERVAL MINUTE'
                        WHEN digits = 12 THEN 'INTERVAL MINUTE TO SECOND'
-                       ELSE  'INTERVAL SECOND' --ASSUMES digits = 13 
+                       ELSE  'INTERVAL SECOND' --ASSUMES digits = 13
                        END
                WHEN type = 'varchar' OR type = 'clob' THEN  CASE
                        WHEN digits = 0 THEN 'CHARACTER LARGE OBJECT'
@@ -67,17 +67,45 @@ CREATE FUNCTION dump_type(type STRING, d
                END;
 END;
 
+CREATE FUNCTION dump_contraint_type_name(id INT) RETURNS STRING BEGIN
+       RETURN
+               CASE
+               WHEN id = 0 THEN 'PRIMARY KEY'
+               WHEN id = 1 THEN 'UNIQUE'
+               END;
+END;
+
+CREATE FUNCTION describe_constraints() RETURNS TABLE("table" STRING, nr INT, 
col STRING, con STRING, type STRING) BEGIN
+       RETURN
+               SELECT t.name, kc.nr, kc.name, k.name, 
dump_contraint_type_name(k.type)
+               FROM sys._tables t, sys.objects kc, sys.keys k
+               WHERE kc.id = k.id
+                       AND k.table_id = t.id
+                       AND t.system = FALSE
+                       AND k.type in (0, 1)
+                       AND t.type IN (0, 6);
+END;
+
+CREATE FUNCTION dump_table_constraint_type() RETURNS TABLE(stm STRING) BEGIN
+       RETURN
+               SELECT 
+                       'ALTER TABLE ' || DQ("table") ||
+                       ' ADD CONTRAINT ' || DQ(con) || ' '||
+                       type || ' (' || GROUP_CONCAT(DQ(col), ', ') || ');'
+               FROM describe_constraints() GROUP BY "table", con, type;
+END;
+
 --TODO expand dump_column_definition functionality
 CREATE FUNCTION dump_column_definition(tid INT) RETURNS STRING BEGIN
        RETURN
                SELECT 
+                       ' (' ||
                        GROUP_CONCAT(
                                DQ(c.name) || ' ' ||
                                dump_type(c.type, c.type_digits, c.type_scale) 
||
-                               ifthenelse(c."null" = 'false', ' NOT NULL ', 
'') ||
+                               ifthenelse(c."null" = 'false', ' NOT NULL', '') 
||
                                ifthenelse(c."default" IS NOT NULL, ' DEFAULT ' 
|| c."default", '')
-                       , '')
-                       --c.number
+                       , ', ') || ')'
                FROM sys._columns c 
                WHERE c.table_id = tid;
        END;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to