mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-28 03:21:50 +02:00
Fix bug in sequence dumping using new setval function
This commit is contained in:
parent
8fb04f8f98
commit
1b1dbb861d
@ -1483,12 +1483,16 @@ static int _tocEntryRequired(TocEntry* te, RestoreOptions *ropt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Special Case: If 'SEQUENCE SET' and schemaOnly, then not needed */
|
||||||
|
if (ropt->schemaOnly && (strcmp(te->desc, "SEQUENCE SET") == 0) )
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* Mask it if we only want schema */
|
/* Mask it if we only want schema */
|
||||||
if (ropt->schemaOnly)
|
if (ropt->schemaOnly)
|
||||||
res = res & 1;
|
res = res & 1;
|
||||||
|
|
||||||
/* Mask it we only want data */
|
/* Mask it we only want data */
|
||||||
if (ropt->dataOnly)
|
if (ropt->dataOnly && (strcmp(te->desc, "SEQUENCE SET") != 0) )
|
||||||
res = res & 2;
|
res = res & 2;
|
||||||
|
|
||||||
/* Mask it if we don't have a schema contribition */
|
/* Mask it if we don't have a schema contribition */
|
||||||
|
@ -62,7 +62,7 @@ typedef z_stream *z_streamp;
|
|||||||
|
|
||||||
#define K_VERS_MAJOR 1
|
#define K_VERS_MAJOR 1
|
||||||
#define K_VERS_MINOR 4
|
#define K_VERS_MINOR 4
|
||||||
#define K_VERS_REV 16
|
#define K_VERS_REV 17
|
||||||
|
|
||||||
/* Data block types */
|
/* Data block types */
|
||||||
#define BLK_DATA 1
|
#define BLK_DATA 1
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.169 2000/10/10 13:55:28 pjw Exp $
|
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.170 2000/10/13 00:43:31 pjw Exp $
|
||||||
*
|
*
|
||||||
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
|
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
|
||||||
*
|
*
|
||||||
@ -992,6 +992,7 @@ main(int argc, char **argv)
|
|||||||
MoveToEnd(g_fout, "INDEX");
|
MoveToEnd(g_fout, "INDEX");
|
||||||
MoveToEnd(g_fout, "TRIGGER");
|
MoveToEnd(g_fout, "TRIGGER");
|
||||||
MoveToEnd(g_fout, "RULE");
|
MoveToEnd(g_fout, "RULE");
|
||||||
|
MoveToEnd(g_fout, "SEQUENCE SET");
|
||||||
|
|
||||||
if (plainText)
|
if (plainText)
|
||||||
{
|
{
|
||||||
@ -4015,20 +4016,32 @@ dumpSequence(Archive *fout, TableInfo tbinfo)
|
|||||||
resetPQExpBuffer(delqry);
|
resetPQExpBuffer(delqry);
|
||||||
appendPQExpBuffer(delqry, "DROP SEQUENCE %s;\n", fmtId(tbinfo.relname, force_quotes));
|
appendPQExpBuffer(delqry, "DROP SEQUENCE %s;\n", fmtId(tbinfo.relname, force_quotes));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The logic we use for restoring sequences is as follows:
|
||||||
|
* - Add a basic CREATE SEQUENCE statement
|
||||||
|
* (use last_val for start if called == 'f', else use min_val for start_val).
|
||||||
|
* - Add a 'SETVAL(seq, last_val, iscalled)' at restore-time iff we load data
|
||||||
|
*/
|
||||||
resetPQExpBuffer(query);
|
resetPQExpBuffer(query);
|
||||||
appendPQExpBuffer(query,
|
appendPQExpBuffer(query,
|
||||||
"CREATE SEQUENCE %s start %d increment %d maxvalue %d "
|
"CREATE SEQUENCE %s start %d increment %d maxvalue %d "
|
||||||
"minvalue %d cache %d %s;\n",
|
"minvalue %d cache %d %s;\n",
|
||||||
fmtId(tbinfo.relname, force_quotes), last, incby, maxv, minv, cache,
|
fmtId(tbinfo.relname, force_quotes),
|
||||||
|
(called == 't') ? minv : last,
|
||||||
|
incby, maxv, minv, cache,
|
||||||
(cycled == 't') ? "cycle" : "");
|
(cycled == 't') ? "cycle" : "");
|
||||||
|
|
||||||
if (called != 'f') {
|
|
||||||
appendPQExpBuffer(query, "SELECT nextval ('%s');\n", fmtId(tbinfo.relname, force_quotes));
|
|
||||||
}
|
|
||||||
|
|
||||||
ArchiveEntry(fout, tbinfo.oid, fmtId(tbinfo.relname, force_quotes), "SEQUENCE", NULL,
|
ArchiveEntry(fout, tbinfo.oid, fmtId(tbinfo.relname, force_quotes), "SEQUENCE", NULL,
|
||||||
query->data, delqry->data, "", tbinfo.usename, NULL, NULL);
|
query->data, delqry->data, "", tbinfo.usename, NULL, NULL);
|
||||||
|
|
||||||
|
|
||||||
|
resetPQExpBuffer(query);
|
||||||
|
appendPQExpBuffer(query, "SELECT setval ('%s', %d, '%c');\n",
|
||||||
|
fmtId(tbinfo.relname, force_quotes), last, called);
|
||||||
|
|
||||||
|
ArchiveEntry(fout, tbinfo.oid, fmtId(tbinfo.relname, force_quotes), "SEQUENCE SET", NULL,
|
||||||
|
query->data, "" /* Del */, "", "", NULL, NULL);
|
||||||
|
|
||||||
/* Dump Sequence Comments */
|
/* Dump Sequence Comments */
|
||||||
|
|
||||||
resetPQExpBuffer(query);
|
resetPQExpBuffer(query);
|
||||||
|
@ -292,7 +292,7 @@ int main(int argc, char **argv)
|
|||||||
MoveToEnd(AH, "INDEX");
|
MoveToEnd(AH, "INDEX");
|
||||||
MoveToEnd(AH, "TRIGGER");
|
MoveToEnd(AH, "TRIGGER");
|
||||||
MoveToEnd(AH, "RULE");
|
MoveToEnd(AH, "RULE");
|
||||||
MoveToEnd(AH, "ACL");
|
MoveToEnd(AH, "SEQUENCE SET");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Database MUST be at start */
|
/* Database MUST be at start */
|
||||||
|
Loading…
Reference in New Issue
Block a user