|
22 | 22 | *
|
23 | 23 | *
|
24 | 24 | * IDENTIFICATION
|
25 |
| - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.169 2000/10/10 13:55:28 pjw Exp $ |
| 25 | + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.170 2000/10/13 00:43:31 pjw Exp $ |
26 | 26 | *
|
27 | 27 | * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
|
28 | 28 | *
|
@@ -992,6 +992,7 @@ main(int argc, char **argv)
|
992 | 992 | MoveToEnd(g_fout, "INDEX");
|
993 | 993 | MoveToEnd(g_fout, "TRIGGER");
|
994 | 994 | MoveToEnd(g_fout, "RULE");
|
| 995 | + MoveToEnd(g_fout, "SEQUENCE SET"); |
995 | 996 |
|
996 | 997 | if (plainText)
|
997 | 998 | {
|
@@ -4015,20 +4016,32 @@ dumpSequence(Archive *fout, TableInfo tbinfo)
|
4015 | 4016 | resetPQExpBuffer(delqry);
|
4016 | 4017 | appendPQExpBuffer(delqry, "DROP SEQUENCE %s;\n", fmtId(tbinfo.relname, force_quotes));
|
4017 | 4018 |
|
| 4019 | + /* |
| 4020 | + * The logic we use for restoring sequences is as follows: |
| 4021 | + * - Add a basic CREATE SEQUENCE statement |
| 4022 | + * (use last_val for start if called == 'f', else use min_val for start_val). |
| 4023 | + * - Add a 'SETVAL(seq, last_val, iscalled)' at restore-time iff we load data |
| 4024 | + */ |
4018 | 4025 | resetPQExpBuffer(query);
|
4019 | 4026 | appendPQExpBuffer(query,
|
4020 | 4027 | "CREATE SEQUENCE %s start %d increment %d maxvalue %d "
|
4021 | 4028 | "minvalue %d cache %d %s;\n",
|
4022 |
| - fmtId(tbinfo.relname, force_quotes), last, incby, maxv, minv, cache, |
| 4029 | + fmtId(tbinfo.relname, force_quotes), |
| 4030 | + (called == 't') ? minv : last, |
| 4031 | + incby, maxv, minv, cache, |
4023 | 4032 | (cycled == 't') ? "cycle" : "");
|
4024 | 4033 |
|
4025 |
| - if (called != 'f') { |
4026 |
| - appendPQExpBuffer(query, "SELECT nextval ('%s');\n", fmtId(tbinfo.relname, force_quotes)); |
4027 |
| - } |
4028 |
| - |
4029 | 4034 | ArchiveEntry(fout, tbinfo.oid, fmtId(tbinfo.relname, force_quotes), "SEQUENCE", NULL,
|
4030 | 4035 | query->data, delqry->data, "", tbinfo.usename, NULL, NULL);
|
4031 | 4036 |
|
| 4037 | + |
| 4038 | + resetPQExpBuffer(query); |
| 4039 | + appendPQExpBuffer(query, "SELECT setval ('%s', %d, '%c');\n", |
| 4040 | + fmtId(tbinfo.relname, force_quotes), last, called); |
| 4041 | + |
| 4042 | + ArchiveEntry(fout, tbinfo.oid, fmtId(tbinfo.relname, force_quotes), "SEQUENCE SET", NULL, |
| 4043 | + query->data, "" /* Del */, "", "", NULL, NULL); |
| 4044 | + |
4032 | 4045 | /* Dump Sequence Comments */
|
4033 | 4046 |
|
4034 | 4047 | resetPQExpBuffer(query);
|
|
0 commit comments