Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
1d88d4e2
Commit
1d88d4e2
authored
Feb 18, 2009
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Have pg_dump/pg_dumpall --binary-upgrade restore frozenids for relations
and databases.
parent
b9a36693
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
64 additions
and
18 deletions
+64
-18
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.c
+38
-4
src/bin/pg_dump/pg_dump.h
src/bin/pg_dump/pg_dump.h
+2
-1
src/bin/pg_dump/pg_dumpall.c
src/bin/pg_dump/pg_dumpall.c
+24
-13
No files found.
src/bin/pg_dump/pg_dump.c
View file @
1d88d4e2
...
...
@@ -12,7 +12,7 @@
* by PostgreSQL
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.52
3 2009/02/17 22:32:54
momjian Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.52
4 2009/02/18 12:07:07
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1585,6 +1585,7 @@ dumpDatabase(Archive *AH)
i_encoding
,
i_collate
,
i_ctype
,
i_frozenxid
,
i_tablespace
;
CatalogId
dbCatId
;
DumpId
dbDumpId
;
...
...
@@ -1594,6 +1595,7 @@ dumpDatabase(Archive *AH)
*
collate
,
*
ctype
,
*
tablespace
;
uint32
frozenxid
;
datname
=
PQdb
(
g_conn
);
...
...
@@ -1609,7 +1611,7 @@ dumpDatabase(Archive *AH)
appendPQExpBuffer
(
dbQry
,
"SELECT tableoid, oid, "
"(%s datdba) AS dba, "
"pg_encoding_to_char(encoding) AS encoding, "
"datcollate, datctype, "
"datcollate, datctype,
datfrozenxid,
"
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = dattablespace) AS tablespace, "
"shobj_description(oid, 'pg_database') AS description "
...
...
@@ -1623,7 +1625,7 @@ dumpDatabase(Archive *AH)
appendPQExpBuffer
(
dbQry
,
"SELECT tableoid, oid, "
"(%s datdba) AS dba, "
"pg_encoding_to_char(encoding) AS encoding, "
"NULL AS datcollate, NULL AS datctype, "
"NULL AS datcollate, NULL AS datctype,
datfrozenxid,
"
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = dattablespace) AS tablespace, "
"shobj_description(oid, 'pg_database') AS description "
...
...
@@ -1637,7 +1639,7 @@ dumpDatabase(Archive *AH)
appendPQExpBuffer
(
dbQry
,
"SELECT tableoid, oid, "
"(%s datdba) AS dba, "
"pg_encoding_to_char(encoding) AS encoding, "
"NULL AS datcollate, NULL AS datctype, "
"NULL AS datcollate, NULL AS datctype,
datfrozenxid,
"
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = dattablespace) AS tablespace "
"FROM pg_database "
"WHERE datname = "
,
...
...
@@ -1650,6 +1652,7 @@ dumpDatabase(Archive *AH)
"(%s datdba) AS dba, "
"pg_encoding_to_char(encoding) AS encoding, "
"NULL AS datcollate, NULL AS datctype, "
"0 AS datfrozenxid, "
"NULL AS tablespace "
"FROM pg_database "
"WHERE datname = "
,
...
...
@@ -1664,6 +1667,7 @@ dumpDatabase(Archive *AH)
"(%s datdba) AS dba, "
"pg_encoding_to_char(encoding) AS encoding, "
"NULL AS datcollate, NULL AS datctype, "
"0 AS datfrozenxid, "
"NULL AS tablespace "
"FROM pg_database "
"WHERE datname = "
,
...
...
@@ -1696,6 +1700,7 @@ dumpDatabase(Archive *AH)
i_encoding
=
PQfnumber
(
res
,
"encoding"
);
i_collate
=
PQfnumber
(
res
,
"datcollate"
);
i_ctype
=
PQfnumber
(
res
,
"datctype"
);
i_frozenxid
=
PQfnumber
(
res
,
"datfrozenxid"
);
i_tablespace
=
PQfnumber
(
res
,
"tablespace"
);
dbCatId
.
tableoid
=
atooid
(
PQgetvalue
(
res
,
0
,
i_tableoid
));
...
...
@@ -1704,6 +1709,7 @@ dumpDatabase(Archive *AH)
encoding
=
PQgetvalue
(
res
,
0
,
i_encoding
);
collate
=
PQgetvalue
(
res
,
0
,
i_collate
);
ctype
=
PQgetvalue
(
res
,
0
,
i_ctype
);
frozenxid
=
atooid
(
PQgetvalue
(
res
,
0
,
i_frozenxid
));
tablespace
=
PQgetvalue
(
res
,
0
,
i_tablespace
);
appendPQExpBuffer
(
creaQry
,
"CREATE DATABASE %s WITH TEMPLATE = template0"
,
...
...
@@ -1728,6 +1734,15 @@ dumpDatabase(Archive *AH)
fmtId
(
tablespace
));
appendPQExpBuffer
(
creaQry
,
";
\n
"
);
if
(
binary_upgrade
)
{
appendPQExpBuffer
(
creaQry
,
"
\n
-- For binary upgrade, set datfrozenxid.
\n
"
);
appendPQExpBuffer
(
creaQry
,
"UPDATE pg_database
\n
"
"SET datfrozenxid = '%u'
\n
"
"WHERE datname = '%s';
\n
"
,
frozenxid
,
datname
);
}
appendPQExpBuffer
(
delQry
,
"DROP DATABASE %s;
\n
"
,
fmtId
(
datname
));
...
...
@@ -3114,6 +3129,7 @@ getTables(int *numTables)
int
i_relhasindex
;
int
i_relhasrules
;
int
i_relhasoids
;
int
i_relfrozenxid
;
int
i_owning_tab
;
int
i_owning_col
;
int
i_reltablespace
;
...
...
@@ -3155,6 +3171,7 @@ getTables(int *numTables)
"(%s c.relowner) AS rolname, "
"c.relchecks, c.relhastriggers, "
"c.relhasindex, c.relhasrules, c.relhasoids, "
"c.relfrozenxid, "
"d.refobjid AS owning_tab, "
"d.refobjsubid AS owning_col, "
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS reltablespace, "
...
...
@@ -3186,6 +3203,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
"relfrozenxid, "
"d.refobjid AS owning_tab, "
"d.refobjsubid AS owning_col, "
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS reltablespace, "
...
...
@@ -3216,6 +3234,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
"0 AS relfrozenxid, "
"d.refobjid AS owning_tab, "
"d.refobjsubid AS owning_col, "
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS reltablespace, "
...
...
@@ -3246,6 +3265,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
"0 AS relfrozenxid, "
"d.refobjid AS owning_tab, "
"d.refobjsubid AS owning_col, "
"NULL AS reltablespace, "
...
...
@@ -3272,6 +3292,7 @@ getTables(int *numTables)
"(%s relowner) AS rolname, "
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, relhasoids, "
"0 AS relfrozenxid, "
"NULL::oid AS owning_tab, "
"NULL::int4 AS owning_col, "
"NULL AS reltablespace, "
...
...
@@ -3293,6 +3314,7 @@ getTables(int *numTables)
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, "
"'t'::bool AS relhasoids, "
"0 AS relfrozenxid, "
"NULL::oid AS owning_tab, "
"NULL::int4 AS owning_col, "
"NULL AS reltablespace, "
...
...
@@ -3324,6 +3346,7 @@ getTables(int *numTables)
"relchecks, (reltriggers <> 0) AS relhastriggers, "
"relhasindex, relhasrules, "
"'t'::bool AS relhasoids, "
"0 as relfrozenxid, "
"NULL::oid AS owning_tab, "
"NULL::int4 AS owning_col, "
"NULL AS reltablespace, "
...
...
@@ -3367,6 +3390,7 @@ getTables(int *numTables)
i_relhasindex
=
PQfnumber
(
res
,
"relhasindex"
);
i_relhasrules
=
PQfnumber
(
res
,
"relhasrules"
);
i_relhasoids
=
PQfnumber
(
res
,
"relhasoids"
);
i_relfrozenxid
=
PQfnumber
(
res
,
"relfrozenxid"
);
i_owning_tab
=
PQfnumber
(
res
,
"owning_tab"
);
i_owning_col
=
PQfnumber
(
res
,
"owning_col"
);
i_reltablespace
=
PQfnumber
(
res
,
"reltablespace"
);
...
...
@@ -3404,6 +3428,7 @@ getTables(int *numTables)
tblinfo
[
i
].
hasrules
=
(
strcmp
(
PQgetvalue
(
res
,
i
,
i_relhasrules
),
"t"
)
==
0
);
tblinfo
[
i
].
hastriggers
=
(
strcmp
(
PQgetvalue
(
res
,
i
,
i_relhastriggers
),
"t"
)
==
0
);
tblinfo
[
i
].
hasoids
=
(
strcmp
(
PQgetvalue
(
res
,
i
,
i_relhasoids
),
"t"
)
==
0
);
tblinfo
[
i
].
frozenxid
=
atooid
(
PQgetvalue
(
res
,
i
,
i_relfrozenxid
));
tblinfo
[
i
].
ncheck
=
atoi
(
PQgetvalue
(
res
,
i
,
i_relchecks
));
if
(
PQgetisnull
(
res
,
i
,
i_owning_tab
))
{
...
...
@@ -9860,6 +9885,15 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo)
tbinfo
->
dobj
.
name
);
}
}
appendPQExpBuffer
(
q
,
"
\n
-- For binary upgrade, set relfrozenxid.
\n
"
);
appendPQExpBuffer
(
q
,
"UPDATE pg_class
\n
"
"SET relfrozenxid = '%u'
\n
"
"WHERE relname = '%s'
\n
"
" AND relnamespace = "
"(SELECT oid FROM pg_namespace "
"WHERE nspname = CURRENT_SCHEMA);
\n
"
,
tbinfo
->
frozenxid
,
tbinfo
->
dobj
.
name
);
}
/* Loop dumping statistics and storage statements */
...
...
src/bin/pg_dump/pg_dump.h
View file @
1d88d4e2
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.h,v 1.15
1 2009/02/17 15:41:50
momjian Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.h,v 1.15
2 2009/02/18 12:07:07
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -226,6 +226,7 @@ typedef struct _tableInfo
bool
hasrules
;
/* does it have any rules? */
bool
hastriggers
;
/* does it have any triggers? */
bool
hasoids
;
/* does it have OIDs? */
uint32
frozenxid
;
/* for restore frozen xid */
int
ncheck
;
/* # of CHECK expressions */
/* these two are set only if table is a sequence owned by a column: */
Oid
owning_tab
;
/* OID of table owning sequence */
...
...
src/bin/pg_dump/pg_dumpall.c
View file @
1d88d4e2
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.11
4 2009/02/17 15:41:50
momjian Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.11
5 2009/02/18 12:07:08
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -27,7 +27,7 @@ int optreset;
#endif
#include "dumputils.h"
#include "pg_backup.h"
/* version string we expect back from pg_dump */
#define PGDUMP_VERSIONSTR "pg_dump (PostgreSQL) " PG_VERSION "\n"
...
...
@@ -71,6 +71,8 @@ static int server_version;
static
FILE
*
OPF
;
static
char
*
filename
=
NULL
;
static
int
binary_upgrade
=
0
;
int
main
(
int
argc
,
char
*
argv
[])
{
...
...
@@ -90,7 +92,6 @@ main(int argc, char *argv[])
const
char
*
std_strings
;
int
c
,
ret
;
int
binary_upgrade
=
0
;
struct
option
long_options
[]
=
{
{
"binary-upgrade"
,
no_argument
,
&
binary_upgrade
,
1
},
/* not documented */
...
...
@@ -937,7 +938,7 @@ dumpCreateDB(PGconn *conn)
"SELECT datname, "
"coalesce(rolname, (select rolname from pg_authid where oid=(select datdba from pg_database where datname='template0'))), "
"pg_encoding_to_char(d.encoding), "
"datcollate, datctype, "
"datcollate, datctype,
datfrozenxid,
"
"datistemplate, datacl, datconnlimit, "
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
"FROM pg_database d LEFT JOIN pg_authid u ON (datdba = u.oid) "
...
...
@@ -947,7 +948,7 @@ dumpCreateDB(PGconn *conn)
"SELECT datname, "
"coalesce(rolname, (select rolname from pg_authid where oid=(select datdba from pg_database where datname='template0'))), "
"pg_encoding_to_char(d.encoding), "
"null::text AS datcollate, null::text AS datctype, "
"null::text AS datcollate, null::text AS datctype,
datfrozenxid,
"
"datistemplate, datacl, datconnlimit, "
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
"FROM pg_database d LEFT JOIN pg_authid u ON (datdba = u.oid) "
...
...
@@ -957,7 +958,7 @@ dumpCreateDB(PGconn *conn)
"SELECT datname, "
"coalesce(usename, (select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
"pg_encoding_to_char(d.encoding), "
"null::text AS datcollate, null::text AS datctype, "
"null::text AS datcollate, null::text AS datctype,
datfrozenxid,
"
"datistemplate, datacl, -1 as datconnlimit, "
"(SELECT spcname FROM pg_tablespace t WHERE t.oid = d.dattablespace) AS dattablespace "
"FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) "
...
...
@@ -967,7 +968,7 @@ dumpCreateDB(PGconn *conn)
"SELECT datname, "
"coalesce(usename, (select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
"pg_encoding_to_char(d.encoding), "
"null::text AS datcollate, null::text AS datctype, "
"null::text AS datcollate, null::text AS datctype,
datfrozenxid,
"
"datistemplate, datacl, -1 as datconnlimit, "
"'pg_default' AS dattablespace "
"FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) "
...
...
@@ -979,7 +980,7 @@ dumpCreateDB(PGconn *conn)
"(select usename from pg_shadow where usesysid=datdba), "
"(select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
"pg_encoding_to_char(d.encoding), "
"null::text AS datcollate, null::text AS datctype, "
"null::text AS datcollate, null::text AS datctype,
0 AS datfrozenxid
"
"datistemplate, '' as datacl, -1 as datconnlimit, "
"'pg_default' AS dattablespace "
"FROM pg_database d "
...
...
@@ -994,7 +995,7 @@ dumpCreateDB(PGconn *conn)
"SELECT datname, "
"(select usename from pg_shadow where usesysid=datdba), "
"pg_encoding_to_char(d.encoding), "
"null::text AS datcollate, null::text AS datctype, "
"null::text AS datcollate, null::text AS datctype,
0 AS datfrozenxid
"
"'f' as datistemplate, "
"'' as datacl, -1 as datconnlimit, "
"'pg_default' AS dattablespace "
...
...
@@ -1009,10 +1010,11 @@ dumpCreateDB(PGconn *conn)
char
*
dbencoding
=
PQgetvalue
(
res
,
i
,
2
);
char
*
dbcollate
=
PQgetvalue
(
res
,
i
,
3
);
char
*
dbctype
=
PQgetvalue
(
res
,
i
,
4
);
char
*
dbistemplate
=
PQgetvalue
(
res
,
i
,
5
);
char
*
dbacl
=
PQgetvalue
(
res
,
i
,
6
);
char
*
dbconnlimit
=
PQgetvalue
(
res
,
i
,
7
);
char
*
dbtablespace
=
PQgetvalue
(
res
,
i
,
8
);
uint32
dbfrozenxid
=
atooid
(
PQgetvalue
(
res
,
i
,
5
));
char
*
dbistemplate
=
PQgetvalue
(
res
,
i
,
6
);
char
*
dbacl
=
PQgetvalue
(
res
,
i
,
7
);
char
*
dbconnlimit
=
PQgetvalue
(
res
,
i
,
8
);
char
*
dbtablespace
=
PQgetvalue
(
res
,
i
,
9
);
char
*
fdbname
;
fdbname
=
strdup
(
fmtId
(
dbname
));
...
...
@@ -1076,6 +1078,15 @@ dumpCreateDB(PGconn *conn)
appendStringLiteralConn
(
buf
,
dbname
,
conn
);
appendPQExpBuffer
(
buf
,
";
\n
"
);
}
if
(
binary_upgrade
)
{
appendPQExpBuffer
(
buf
,
"
\n
-- For binary upgrade, set datfrozenxid.
\n
"
);
appendPQExpBuffer
(
buf
,
"UPDATE pg_database
\n
"
"SET datfrozenxid = '%u'
\n
"
"WHERE datname = '%s';
\n
"
,
dbfrozenxid
,
fdbname
);
}
}
if
(
!
skip_acls
&&
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment