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