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
0b44818e
Commit
0b44818e
authored
Jun 22, 2011
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
In pg_upgrade, check that the binary and data directories are the same
major version. Backpatch to 9.1. Dan McGee
parent
3b3c2cf1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
1 deletion
+50
-1
contrib/pg_upgrade/check.c
contrib/pg_upgrade/check.c
+49
-1
contrib/pg_upgrade/pg_upgrade.h
contrib/pg_upgrade/pg_upgrade.h
+1
-0
No files found.
contrib/pg_upgrade/check.c
View file @
0b44818e
...
...
@@ -20,6 +20,7 @@ static void check_for_prepared_transactions(ClusterInfo *cluster);
static
void
check_for_isn_and_int8_passing_mismatch
(
ClusterInfo
*
cluster
);
static
void
check_for_reg_data_type_usage
(
ClusterInfo
*
cluster
);
static
void
check_for_support_lib
(
ClusterInfo
*
cluster
);
static
void
get_bin_version
(
ClusterInfo
*
cluster
);
void
...
...
@@ -216,6 +217,8 @@ output_completion_banner(char *deletion_script_file_name)
void
check_cluster_versions
(
void
)
{
prep_status
(
"Checking cluster versions"
);
/* get old and new cluster versions */
old_cluster
.
major_version
=
get_major_server_version
(
&
old_cluster
);
new_cluster
.
major_version
=
get_major_server_version
(
&
new_cluster
);
...
...
@@ -235,10 +238,26 @@ check_cluster_versions(void)
/*
* We can't allow downgrading because we use the target pg_dumpall, and
* pg_dumpall cannot operate on new datbase versions, only older versions.
* pg_dumpall cannot operate on new dat
a
base versions, only older versions.
*/
if
(
old_cluster
.
major_version
>
new_cluster
.
major_version
)
pg_log
(
PG_FATAL
,
"This utility cannot be used to downgrade to older major PostgreSQL versions.
\n
"
);
/* get old and new binary versions */
get_bin_version
(
&
old_cluster
);
get_bin_version
(
&
new_cluster
);
/* Ensure binaries match the designated data directories */
if
(
GET_MAJOR_VERSION
(
old_cluster
.
major_version
)
!=
GET_MAJOR_VERSION
(
old_cluster
.
bin_version
))
pg_log
(
PG_FATAL
,
"Old cluster data and binary directories are from different major versions.
\n
"
);
if
(
GET_MAJOR_VERSION
(
new_cluster
.
major_version
)
!=
GET_MAJOR_VERSION
(
new_cluster
.
bin_version
))
pg_log
(
PG_FATAL
,
"New cluster data and binary directories are from different major versions.
\n
"
);
check_ok
();
}
...
...
@@ -754,3 +773,32 @@ check_for_support_lib(ClusterInfo *cluster)
fclose
(
lib_test
);
}
static
void
get_bin_version
(
ClusterInfo
*
cluster
)
{
char
cmd
[
MAXPGPATH
],
cmd_output
[
MAX_STRING
];
FILE
*
output
;
int
pre_dot
,
post_dot
;
snprintf
(
cmd
,
sizeof
(
cmd
),
"
\"
%s/pg_ctl
\"
--version"
,
cluster
->
bindir
);
if
((
output
=
popen
(
cmd
,
"r"
))
==
NULL
)
pg_log
(
PG_FATAL
,
"Could not get pg_ctl version data: %s
\n
"
,
getErrorText
(
errno
));
fgets
(
cmd_output
,
sizeof
(
cmd_output
),
output
);
pclose
(
output
);
/* Remove trailing newline */
if
(
strchr
(
cmd_output
,
'\n'
)
!=
NULL
)
*
strchr
(
cmd_output
,
'\n'
)
=
'\0'
;
if
(
sscanf
(
cmd_output
,
"%*s %*s %d.%d"
,
&
pre_dot
,
&
post_dot
)
!=
2
)
pg_log
(
PG_FATAL
,
"could not get version from %s
\n
"
,
cmd
);
cluster
->
bin_version
=
(
pre_dot
*
100
+
post_dot
)
*
100
;
}
contrib/pg_upgrade/pg_upgrade.h
View file @
0b44818e
...
...
@@ -184,6 +184,7 @@ typedef struct
unsigned
short
port
;
/* port number where postmaster is waiting */
uint32
major_version
;
/* PG_VERSION of cluster */
char
major_version_str
[
64
];
/* string PG_VERSION of cluster */
uint32
bin_version
;
/* version returned from pg_ctl */
Oid
pg_database_oid
;
/* OID of pg_database relation */
char
*
tablespace_suffix
;
/* directory specification */
}
ClusterInfo
;
...
...
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