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

Small fixes plus refactoring.


diffs (103 lines):

diff --git a/dump.sql b/dump.sql
--- a/dump.sql
+++ b/dump.sql
@@ -2,10 +2,8 @@ START TRANSACTION;
 
 CREATE FUNCTION SQ (s STRING) RETURNS STRING BEGIN RETURN ' ''' || s || ''' '; 
END;
 CREATE FUNCTION DQ (s STRING) RETURNS STRING BEGIN RETURN '"' || s || '"'; 
END; --TODO: Figure out why this breaks with the space
-CREATE FUNCTION I (s STRING) RETURNS STRING BEGIN RETURN '\t' || s || '\n'; 
END;
-CREATE FUNCTION ENI (s STRING) RETURNS STRING BEGIN RETURN I(SQ(s)); END;
 
-CREATE FUNCTION comment_on(ob STRING, id STRING, r STRING) RETURNS STRING 
BEGIN RETURN ifthenelse(r IS NOT NULL, '\nCOMMENT ON ' || ob ||  ' ' || id || ' 
IS ' || SQ(r) || ';', ''); END;
+CREATE FUNCTION comment_on(ob STRING, id STRING, r STRING) RETURNS STRING 
BEGIN RETURN ifthenelse(r IS NOT NULL, 'COMMENT ON ' || ob ||  ' ' || id || ' 
IS ' || SQ(r) || ';', ''); END;
 
 CREATE FUNCTION dump_type(type STRING, digits INT, scale INT) RETURNS STRING 
BEGIN
        RETURN
@@ -43,9 +41,9 @@ CREATE FUNCTION dump_type(type STRING, d
                        ELSE 'BINARY LARGE OBJECT(' || digits || ')' --ASSUMES 
digits IS NOT NULL
                        END
                WHEN type = 'timestamp'  THEN 'TIMESTAMP' || ifthenelse(digits 
<> 7, '(' || (digits -1) || ') ', ' ')
-               WHEN type = 'timestampz' THEN 'TIMESTAMP' || ifthenelse(digits 
<> 7, '(' || (digits -1) || ') ', ' ') || 'WITH TIME ZONE'
+               WHEN type = 'timestamptz' THEN 'TIMESTAMP' || ifthenelse(digits 
<> 7, '(' || (digits -1) || ') ', ' ') || 'WITH TIME ZONE'
                WHEN type = 'time'  THEN 'TIME' || ifthenelse(digits <> 1, '(' 
|| (digits -1) || ') ', ' ')
-               WHEN type = 'timez' THEN 'TIME' || ifthenelse(digits <> 1, '(' 
|| (digits -1) || ') ', ' ') || 'WITH TIME ZONE'
+               WHEN type = 'timetz' THEN 'TIME' || ifthenelse(digits <> 1, '(' 
|| (digits -1) || ') ', ' ') || 'WITH TIME ZONE'
                WHEN type = 'real' THEN CASE
                        WHEN digits = 24 AND scale=0 THEN 'REAL'
                        WHEN scale=0 THEN 'FLOAT(' || digits || ')'
@@ -105,7 +103,7 @@ CREATE FUNCTION dump_table_constraint_ty
        RETURN
                SELECT 
                        'ALTER TABLE ' || DQ("table") ||
-                       ifthenelse(con IS NOT NULL, ' ADD CONTRAINT ' || 
DQ(con), '') || ' '||
+                       ifthenelse(con IS NOT NULL, ' ADD CONSTRAINT ' || 
DQ(con), '') || ' '||
                        type || ' (' || GROUP_CONCAT(DQ(col), ', ') || ');'
                FROM describe_constraints() GROUP BY "table", con, type;
 END;
@@ -126,9 +124,9 @@ BEGIN
 
        INSERT INTO dump_statements(s) --dump_create_users
                SELECT
-        'CREATE USER ' ||  DQ(ui.name) ||  ' WITH ENCRYPTED PASSWORD\n' ||
-            ENI(password_hash(ui.name)) ||
-        'NAME ' || ui.fullname ||  ' SCHEMA sys;'
+        'CREATE USER ' ||  DQ(ui.name) ||  ' WITH ENCRYPTED PASSWORD ' ||
+            SQ(password_hash(ui.name)) ||
+        ' NAME ' || SQ(ui.fullname) ||  ' SCHEMA sys;'
         FROM db_user_info ui, schemas s
         WHERE ui.default_schema = s.id
             AND ui.name <> 'monetdb'
@@ -136,11 +134,15 @@ BEGIN
 
        INSERT INTO dump_statements(s) --dump_create_schemas
         SELECT
-            'CREATE SCHEMA ' ||  DQ(s.name) || ifthenelse(a.name <> 
'sysadmin', ' AUTHORIZATION ' || a.name, ' ') || ';' ||
-            comment_on('SCHEMA', DQ(s.name), rem.remark)
-        FROM schemas s LEFT OUTER JOIN comments rem ON s.id = rem.id,auths a
+            'CREATE SCHEMA ' ||  DQ(s.name) || ifthenelse(a.name <> 
'sysadmin', ' AUTHORIZATION ' || a.name, ' ') || ';'
+        FROM schemas s, auths a
         WHERE s.authorization = a.id AND s.system = FALSE;
 
+       INSERT INTO dump_statements(s) --dump_create_comments_on_schemas
+        SELECT comment_on('SCHEMA', DQ(s.name), rem.remark)
+        FROM schemas s JOIN comments rem ON s.id = rem.id
+        WHERE NOT s.system;
+
     INSERT INTO dump_statements(s) --dump_add_schemas_to_users
            SELECT
             'ALTER USER ' || DQ(ui.name) || ' SET SCHEMA ' || DQ(s.name) || ';'
@@ -157,15 +159,20 @@ BEGIN
                WHERE a1.id = ur.login_id AND a2.id = ur.role_id;
 
        INSERT INTO dump_statements(s) --dump_create_sequences
-               SELECT 'CREATE SEQUENCE ' || DQ(sch.name) || '.' || 
DQ(seq.name) || ' AS INTEGER;' ||
-               comment_on('SEQUENCE', DQ(sch.name) || '.' || DQ(seq.name), 
rem.remark)
-               FROM sys.schemas sch,
-                       sys.sequences seq LEFT OUTER JOIN sys.comments rem ON 
seq.id = rem.id
+               SELECT 'CREATE SEQUENCE ' || DQ(sch.name) || '.' || 
DQ(seq.name) || ' AS INTEGER;'
+               FROM sys.schemas sch, sys.sequences seq
+               WHERE sch.id = seq.schema_id;
+
+       INSERT INTO dump_statements(s) --dump_create_comments_on_sequences
+        SELECT comment_on('SEQUENCE', DQ(sch.name) || '.' || DQ(seq.name), 
rem.remark)
+        FROM
+                       sys.schemas sch,
+                       sys.sequences seq JOIN sys.comments rem ON seq.id = 
rem.id
                WHERE sch.id = seq.schema_id;
 
        INSERT INTO dump_statements(s) --dump_create_tables
                SELECT 'CREATE ' || ts.table_type_name || ' ' || DQ(s.name) || 
'.' || DQ(t.name) || dump_column_definition(t.id) || ';'
-               FROM sys.schemas s, table_types ts, sys._tables t LEFT OUTER 
JOIN sys.comments rem ON t.id = rem.id
+               FROM sys.schemas s, table_types ts, sys._tables t
                WHERE t.type IN (0, 6)
                        AND t.system = FALSE
                        AND s.id = t.schema_id
@@ -188,7 +195,7 @@ BEGIN
 END;
 
 CALL dump_database(TRUE);
-SELECT * FROM dump_statements;
+SELECT  GROUP_CONCAT(s) OVER (PARTITION BY o range between current row and 
current row) FROM dump_statements;
 
 ROLLBACK;
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to