Changeset: 3dd41860827e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3dd41860827e
Modified Files:
        dump_output.sql
        sql/scripts/76_dump.sql
Branch: monetdbe-proxy
Log Message:

Dump previously known start value of sequence.


diffs (104 lines):

diff --git a/dump_output.sql b/dump_output.sql
--- a/dump_output.sql
+++ b/dump_output.sql
@@ -8,15 +8,24 @@ CREATE SCHEMA "sfoo" AUTHORIZATION monet
 CREATE TYPE "sfoo"."json" EXTERNAL NAME "json";
 CREATE TYPE "sys"."t1" EXTERNAL NAME "json";
 ALTER USER "voc" SET SCHEMA "sfoo";
-CREATE SEQUENCE "sys"."seq1" AS BIGINT  START WITH 5 INCREMENT BY 3 MINVALUE 4 
MAXVALUE 10 CACHE 2 CYCLE;
-CREATE SEQUENCE "sys"."seq2" AS BIGINT  START WITH 4 INCREMENT BY 3 MINVALUE 4 
MAXVALUE 10 CACHE 2 CYCLE;
-CREATE SEQUENCE "sys"."seq3" AS BIGINT  START WITH 4 MINVALUE 4 MAXVALUE 10 
CACHE 2 CYCLE;
-CREATE SEQUENCE "sys"."seq4" AS BIGINT  START WITH 1 MAXVALUE 10 CACHE 2 CYCLE;
-CREATE SEQUENCE "sys"."seq5" AS BIGINT  START WITH 1 MAXVALUE 10 CACHE 2;
-CREATE SEQUENCE "sys"."seq6" AS BIGINT  START WITH 1 CACHE 2;
-CREATE SEQUENCE "sys"."seq7" AS BIGINT  START WITH 1;
-CREATE SEQUENCE "sys"."seq8" AS BIGINT  START WITH -10 INCREMENT BY -1 
MINVALUE -10 MAXVALUE -1;
-CREATE SEQUENCE "sys"."seq9" AS BIGINT  START WITH 10 MINVALUE 10 MAXVALUE 10;
+CREATE SEQUENCE "sys"."seq1" AS BIGINT START WITH 10 INCREMENT BY 3 MINVALUE 4 
MAXVALUE 10 CACHE 2 CYCLE;
+CREATE SEQUENCE "sys"."seq2" AS BIGINT START WITH 10 INCREMENT BY 3 MINVALUE 4 
MAXVALUE 10 CACHE 2 CYCLE;
+CREATE SEQUENCE "sys"."seq3" AS BIGINT START WITH 10 MINVALUE 4 MAXVALUE 10 
CACHE 2 CYCLE;
+CREATE SEQUENCE "sys"."seq4" AS BIGINT START WITH 10 MAXVALUE 10 CACHE 2 CYCLE;
+CREATE SEQUENCE "sys"."seq5" AS BIGINT START WITH 10 MAXVALUE 10 CACHE 2;
+CREATE SEQUENCE "sys"."seq6" AS BIGINT START WITH 10 CACHE 2;
+CREATE SEQUENCE "sys"."seq7" AS BIGINT START WITH 10;
+CREATE SEQUENCE "sys"."seq8" AS BIGINT START WITH -5 INCREMENT BY -1 MINVALUE 
-10 MAXVALUE -1;
+CREATE SEQUENCE "sys"."seq9" AS BIGINT START WITH 10 MINVALUE 10 MAXVALUE 10;
+UPDATE sys.sequences seq SET start = 5 WHERE name =  'seq1'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = 4 WHERE name =  'seq2'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = 4 WHERE name =  'seq3'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = 1 WHERE name =  'seq4'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = 1 WHERE name =  'seq5'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = 1 WHERE name =  'seq6'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = 1 WHERE name =  'seq7'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = -1 WHERE name =  'seq8'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
+UPDATE sys.sequences seq SET start = 10 WHERE name =  'seq9'  AND schema_id = 
(SELECT s.id FROM sys.schemas s WHERE s.name =  'sys' );
 CREATE TABLE "sys"."test" ("s" CHARACTER LARGE OBJECT);
 CREATE TABLE "sys"."bla" ("s" CHARACTER LARGE OBJECT(10));
 CREATE TABLE "sys"."bob" ("ts" TIMESTAMP(3));
diff --git a/sql/scripts/76_dump.sql b/sql/scripts/76_dump.sql
--- a/sql/scripts/76_dump.sql
+++ b/sql/scripts/76_dump.sql
@@ -52,7 +52,7 @@ CREATE FUNCTION dump_sequences() RETURNS
 RETURN
        SELECT
                'CREATE SEQUENCE ' || FQN(sch, seq) || ' AS BIGINT ' ||
-               CASE WHEN "s" <> 0 THEN ' START WITH ' || "s" ELSE '' END ||
+               CASE WHEN "s" <> 0 THEN 'START WITH ' || "rs" ELSE '' END ||
                CASE WHEN "inc" <> 1 THEN ' INCREMENT BY ' || "inc" ELSE '' END 
||
                CASE WHEN "mi" <> 0 THEN ' MINVALUE ' || "mi" ELSE '' END ||
                CASE WHEN "ma" <> 0 THEN ' MAXVALUE ' || "ma" ELSE '' END ||
@@ -61,6 +61,15 @@ RETURN
        FROM describe_sequences();
 END;
 
+CREATE FUNCTION dump_start_sequences() RETURNS TABLE(stmt STRING) BEGIN
+RETURN
+       SELECT
+               'UPDATE sys.sequences seq SET start = ' || s  ||
+               ' WHERE name = ' || SQ(seq) ||
+               ' AND schema_id = (SELECT s.id FROM sys.schemas s WHERE s.name 
= ' || SQ(sch) || ');'
+       FROM describe_sequences();
+END;
+
 CREATE FUNCTION dump_functions() RETURNS TABLE (o INT, stmt STRING) BEGIN
        RETURN SELECT f.o, schema_guard(f.sch, f.fun, f.def)  FROM 
describe_functions() f;
 END;
@@ -227,7 +236,7 @@ BEGIN
        SET SCHEMA sys;
        TRUNCATE dump_statements;
 
-       INSERT INTO dump_statements VALUES (0, 'START TRANSACTION;');
+       INSERT INTO dump_statements VALUES (1, 'START TRANSACTION;');
        INSERT INTO dump_statements VALUES (current_size_dump_statements() + 1, 
'SET SCHEMA "sys";');
 
        INSERT INTO dump_statements --dump_create_roles
@@ -269,6 +278,7 @@ BEGIN
                WHERE a1.id = ur.login_id AND a2.id = ur.role_id;
 
        INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_sequences();
+       INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_start_sequences();
 
        --functions and table-likes can be interdependent. They should be 
inserted in the order of their catalogue id.
        INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(ORDER BY stmts.o), stmts.s
@@ -283,7 +293,7 @@ BEGIN
        INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_indices();
        INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_foreign_keys();
        INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_partition_tables();
-       INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt from sys.dump_triggers();
+       INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_triggers();
        INSERT INTO dump_statements SELECT current_size_dump_statements() + 
RANK() OVER(), stmt FROM sys.dump_comments();
 
        --We are dumping ALL privileges so we need to erase existing privileges 
on the receiving side;
@@ -294,12 +304,9 @@ BEGIN
                CALL dump_table_data();
        END IF;
 
-       --TODO ALTER SEQUENCE using RESTART WITH after importing table_data.
        --TODO loaders ,procedures, window and filter sys.functions.
        --TODO look into order dependent group_concat
        --TODO ADD upgrade code
 
-       INSERT INTO dump_statements VALUES (current_size_dump_statements() + 1, 
'COMMIT;');
-
        RETURN dump_statements;
 END;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to