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
17befd6c
Commit
17befd6c
authored
Nov 12, 1996
by
Bryan Henderson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use new utils/version.c instead of backend/utils/init/magic.c.
parent
bbe89089
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
370 additions
and
354 deletions
+370
-354
src/backend/Makefile
src/backend/Makefile
+5
-3
src/backend/postmaster/postmaster.c
src/backend/postmaster/postmaster.c
+17
-7
src/backend/utils/init/Makefile
src/backend/utils/init/Makefile
+2
-2
src/backend/utils/init/postinit.c
src/backend/utils/init/postinit.c
+307
-296
src/bin/pg_version/Makefile
src/bin/pg_version/Makefile
+23
-9
src/bin/pg_version/pg_version.c
src/bin/pg_version/pg_version.c
+15
-19
src/include/miscadmin.h
src/include/miscadmin.h
+1
-18
No files found.
src/backend/Makefile
View file @
17befd6c
...
...
@@ -34,7 +34,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.1
4 1996/11/03 09:05:30
bryanh Exp $
# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.1
5 1996/11/12 06:46:04
bryanh Exp $
#
#-------------------------------------------------------------------------
...
...
@@ -131,7 +131,8 @@ OBJS = access/SUBSYS.o bootstrap/SUBSYS.o catalog/SUBSYS.o \
lib/SUBSYS.o libpq/SUBSYS.o main/SUBSYS.o nodes/SUBSYS.o
\
optimizer/SUBSYS.o parser/SUBSYS.o port/SUBSYS.o
\
postmaster/SUBSYS.o regex/SUBSYS.o rewrite/SUBSYS.o
\
storage/SUBSYS.o tcop/SUBSYS.o utils/SUBSYS.o
storage/SUBSYS.o tcop/SUBSYS.o utils/SUBSYS.o
\
../utils/version.o
ifdef
TIOGA
OBJS
+=
tioga/SUBSYS.o
...
...
@@ -167,6 +168,7 @@ postgres_group4:
ifdef
TIOGA
$(MAKE)
-C
tioga all
endif
$(MAKE)
-C
../utils version.o
global1.bki.source local1_template1.bki.source
:
$(MAKE)
-C
catalog
$@
...
...
src/backend/postmaster/postmaster.c
View file @
17befd6c
...
...
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.2
3 1996/11/10 03:01:41 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.2
4 1996/11/12 06:46:36 bryanh
Exp $
*
* NOTES
*
...
...
@@ -75,6 +75,7 @@
#include "libpq/auth.h"
#include "libpq/pqcomm.h"
#include "miscadmin.h"
#include "version.h"
#include "lib/dllist.h"
#include "nodes/nodes.h"
#include "utils/mcxt.h"
...
...
@@ -1186,7 +1187,7 @@ checkDataDir(void)
SEP_CHAR
);
if
((
fp
=
fopen
(
path
,
"r"
))
==
NULL
)
{
fprintf
(
stderr
,
"%s does not find the database. Expected to find it "
"in the PGDATA directory
\"
%s
\"
, but unable to open
directory
"
"in the PGDATA directory
\"
%s
\"
, but unable to open
file
"
"with pathname
\"
%s
\"
.
\n
"
,
progname
,
DataDir
,
path
);
exit
(
2
);
...
...
@@ -1194,11 +1195,20 @@ checkDataDir(void)
fclose
(
fp
);
#ifndef WIN32
if
(
!
ValidPgVersion
(
DataDir
))
{
fprintf
(
stderr
,
"%s: data base in
\"
%s
\"
is of a different version.
\n
"
,
progname
,
DataDir
);
{
char
*
reason
;
/* reason ValidatePgVersion failed. NULL if didn't */
ValidatePgVersion
(
DataDir
,
&
reason
);
if
(
reason
)
{
fprintf
(
stderr
,
"Database system in directory %s "
"is not compatible with this version of "
"Postgres, or we are unable to read the PG_VERSION file. "
"Explanation from ValidatePgVersion: %s
\n
"
,
DataDir
,
reason
);
free
(
reason
);
exit
(
2
);
}
}
#endif
/* WIN32 */
}
...
...
src/backend/utils/init/Makefile
View file @
17befd6c
...
...
@@ -4,7 +4,7 @@
# Makefile for utils/init
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/utils/init/Makefile,v 1.
2 1996/11/09 06:23:41 momjian
Exp $
# $Header: /cvsroot/pgsql/src/backend/utils/init/Makefile,v 1.
3 1996/11/12 06:46:40 bryanh
Exp $
#
#-------------------------------------------------------------------------
...
...
@@ -20,7 +20,7 @@ CFLAGS += $(INCLUDE_OPT)
CFLAGS
+=
-DPOSTGRESDIR
=
'"
$(POSTGRESDIR)
"'
-DPGDATADIR
=
'"
$(DATADIR)
"'
\
-DPOSTPORT
=
'"
$(POSTPORT)
"'
OBJS
=
enbl.o findbe.o globals.o m
agic.o m
iscinit.o postinit.o
OBJS
=
enbl.o findbe.o globals.o miscinit.o postinit.o
all
:
SUBSYS.o
...
...
src/backend/utils/init/postinit.c
View file @
17befd6c
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.
5 1996/11/08 06:00:33 momjian
Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.
6 1996/11/12 06:46:42 bryanh
Exp $
*
* NOTES
* InitPostgres() is the function called from PostgresMain
...
...
@@ -30,12 +30,14 @@
#include <stdio.h>
#include <string.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <math.h>
#include <unistd.h>
#include "postgres.h"
#include "version.h"
#include <storage/backendid.h>
#include <storage/buf_internals.h>
...
...
@@ -228,9 +230,15 @@ InitMyDatabaseId()
DatabaseRelationName
);
}
/*
* DoChdirAndInitDatabaseNameAndPath --
* Sets current directory appropriately for given path and name.
* Set current directory to the database directory for the database
* named <name>.
* Also set global variables DatabasePath and DatabaseName to those
* values. Also check for proper version of database system and
* database. Exit program via elog() if anything doesn't check out.
*
* Arguments:
* Path and name are invalid if it invalid as a string.
...
...
@@ -239,63 +247,94 @@ InitMyDatabaseId()
* Name is "badly formated" if it contains more than 16 characters or if
* it is a bad file name (e.g., it contains a '/' or an 8-bit character).
*
* Side effects:
* Initially, DatabasePath and DatabaseName are invalid. They are
* set to valid strings before this function returns.
*
* Exceptions:
* BadState if called more than once.
* BadArg if both path and name are "badly formated" or invalid.
* BadArg if path and name are both "inconsistent" and valid.
*/
/* ----------------
* DoChdirAndInitDatabaseNameAndPath
*
* this just chdir's to the proper data/base directory
* XXX clean this up more.
*
* XXX The following code is an incorrect of the semantics
* XXX described in the header file. Handling of defaults
* XXX should happen here, too.
* ----------------
*/
void
DoChdirAndInitDatabaseNameAndPath
(
char
*
name
,
/* name of database */
char
*
path
)
/* full path to database */
{
/* ----------------
* check the path
* ----------------
*/
if
(
path
)
SetDatabasePath
(
path
);
else
elog
(
FATAL
,
"DoChdirAndInitDatabaseNameAndPath: path:%s is not valid"
,
path
);
/* ----------------
* check the name
* ----------------
*/
if
(
name
)
* This routine is inappropriate in bootstrap mode, since the directories
* and version files need not exist yet if we're in bootstrap mode.
*/
static
void
DoChdirAndInitDatabaseNameAndPath
(
char
*
name
)
{
char
*
reason
;
/* Failure reason returned by some function. NULL if no failure */
#ifndef WIN32
struct
stat
statbuf
;
#else
struct
_stat
statbuf
;
#endif
char
errormsg
[
1000
];
if
(
stat
(
DataDir
,
&
statbuf
)
<
0
)
sprintf
(
errormsg
,
"Database system does not exist. "
"PGDATA directory '%s' not found. Normally, you "
"create a database system by running initdb."
,
DataDir
);
else
{
char
myPath
[
MAXPGPATH
];
/* DatabasePath points here! */
if
(
strlen
(
DataDir
)
+
strlen
(
name
)
+
10
>
sizeof
(
myPath
))
sprintf
(
errormsg
,
"Internal error in postinit.c: database "
"pathname exceeds maximum allowable length."
);
else
{
sprintf
(
myPath
,
"%s/base/%s"
,
DataDir
,
name
);
if
(
stat
(
myPath
,
&
statbuf
)
<
0
)
sprintf
(
errormsg
,
"Database '%s' does not exist. "
"(We know this because the directory '%s' "
"does not exist). You can create a database "
"with the SQL command CREATE DATABASE. To see "
"what databases exist, look at the subdirectories "
"of '%s/base/'."
,
name
,
myPath
,
DataDir
);
else
{
ValidatePgVersion
(
DataDir
,
&
reason
);
if
(
reason
!=
NULL
)
sprintf
(
errormsg
,
"InitPostgres could not validate that the database "
"system version is compatible with this level of "
"Postgres. You may need to run initdb to create "
"a new database system. %s"
,
reason
);
else
{
ValidatePgVersion
(
myPath
,
&
reason
);
if
(
reason
!=
NULL
)
sprintf
(
errormsg
,
"InitPostgres could not validate that the "
"database version is compatible with this level "
"of Postgres, even though the database system "
"as a whole appears to be at a compatible level. "
"You may need to recreate the database with SQL "
"commands DROP DATABASE and CREATE DATABASE. "
"%s"
,
reason
);
else
{
/* The directories and PG_VERSION files are in order.*/
int
rc
;
/* return code from some function we call */
SetDatabasePath
(
myPath
);
SetDatabaseName
(
name
);
else
elog
(
FATAL
,
"DoChdirAndInitDatabaseNameAndPath: name:%s is not valid"
,
name
);
/* ----------------
* change to the directory, or die trying.
*
* XXX unless the path hasn't been set because we're bootstrapping.
* HP-UX doesn't like chdir("") so check for that case before
* doing anything drastic.
* ----------------
*/
if
(
*
path
&&
(
chdir
(
path
)
<
0
)
)
elog
(
FATAL
,
"DoChdirAndInitDatabaseNameAndPath: chdir(
\"
%s
\"
): %m"
,
path
);
rc
=
chdir
(
myPath
);
if
(
rc
<
0
)
sprintf
(
errormsg
,
"InitPostgres unable to change "
"current directory to '%s', errno = %s (%d)."
,
myPath
,
strerror
(
errno
),
errno
);
else
errormsg
[
0
]
=
'\0'
;
}
}
}
}
}
if
(
errormsg
[
0
]
!=
'\0'
)
elog
(
FATAL
,
errormsg
);
/* Above does not return */
}
/* --------------------------------
* InitUserid
*
...
...
@@ -518,39 +557,11 @@ InitPostgres(char *name) /* database name */
if
(
!
TransactionFlushEnabled
())
on_exitpg
(
FlushBufferPool
,
(
caddr_t
)
NULL
);
/* ----------------
* check for valid "meta gunk" (??? -cim 10/5/90) and change to
* database directory.
*
* Note: DatabaseName, MyDatabaseName, and DatabasePath are all
* initialized with DatabaseMetaGunkIsConsistent(), strncpy() and
* DoChdirAndInitDatabase() below! XXX clean this crap up!
* -cim 10/5/90
* ----------------
*/
{
char
myPath
[
MAXPGPATH
]
=
"."
;
/* DatabasePath points here! */
/* ----------------
* DatabaseMetaGunkIsConsistent fills in myPath, but what about
* when bootstrap or Noversion is true?? -cim 10/5/90
* ----------------
*/
if
(
!
bootstrap
&&
!
DatabaseMetaGunkIsConsistent
(
name
,
myPath
)
&&
!
Noversion
)
{
elog
(
NOTICE
,
"InitPostgres: could not locate valid PG_VERSION
\n
"
);
elog
(
NOTICE
,
"files for %s and %s."
,
DataDir
,
name
);
elog
(
FATAL
,
"Have you run initdb/createdb and set PGDATA properly?"
);
}
/* ----------------
* ok, we've figured out myName and myPath, now save these
* and chdir to myPath.
* ----------------
*/
DoChdirAndInitDatabaseNameAndPath
(
name
,
myPath
);
if
(
bootstrap
)
{
SetDatabasePath
(
"."
);
SetDatabaseName
(
name
);
}
else
{
DoChdirAndInitDatabaseNameAndPath
(
name
);
}
/* ********************************
...
...
src/bin/pg_version/Makefile
View file @
17befd6c
...
...
@@ -7,20 +7,34 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/pg_version/Attic/Makefile,v 1.
1.1.1 1996/07/09 06:22:14 scrappy
Exp $
# $Header: /cvsroot/pgsql/src/bin/pg_version/Attic/Makefile,v 1.
2 1996/11/12 06:46:54 bryanh
Exp $
#
#-------------------------------------------------------------------------
PROG
=
pg_version
MKDIR
=
../../mk
include
$(MKDIR)/postgres.mk
SRCDIR
=
../..
include
../Makefile.global
include
../../Makefile.global
OBJS
=
pg_version.o ../../utils/version.o
all
:
pg_version
pg_version
:
submake $(OBJS)
$(CC)
$(LDFLAGS)
-o
pg_version
$(OBJS)
$(LD_ADD)
.PHONY
:
submake
submake
:
$(MAKE)
-C
../../utils version.o
VPATH
:=
$(VPATH)
:
$(srcdir)
/backend/utils/init
SRCS
=
pg_version.c magic.c
install
:
pg_version
$(INSTALL)
$(INSTL_EXE_OPTS)
pg_version
$(DESTDIR)$(BINDIR)
/pg_version
CFLAGS
+=
-I
$(srcdir)
/backend/port/
$(PORTNAME)
depend dep
:
$(CC)
-MM
$(INCLUDE_OPT)
*
.c
>
depend
include
$(MKDIR)/postgres.prog.mk
clean
:
rm
-f
pg_version pg_version.o
ifeq
(depend,$(wildcard depend))
include
depend
endif
src/bin/pg_version/pg_version.c
View file @
17befd6c
...
...
@@ -7,38 +7,34 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/bin/pg_version/Attic/pg_version.c,v 1.
5 1996/11/10 03:04:02 momjian
Exp $
* $Header: /cvsroot/pgsql/src/bin/pg_version/Attic/pg_version.c,v 1.
6 1996/11/12 06:47:00 bryanh
Exp $
*
*-------------------------------------------------------------------------
*/
#include <stdlib.h>
#include <stdio.h>
int
Noversion
=
0
;
char
*
DataDir
=
(
char
*
)
NULL
;
#include <version.h>
/* interface to SetPgVersion */
extern
void
SetPgVersion
(
const
char
*
);
int
main
(
int
argc
,
char
**
argv
)
{
int
retcode
;
/* our eventual return code */
char
*
reason
;
/* Reason that SetPgVersion failed, NULL if it didn't. */
if
(
argc
<
2
)
{
fprintf
(
stderr
,
"pg_version: missing argument
\n
"
);
exit
(
1
);
}
SetPgVersion
(
argv
[
1
]);
return
(
0
);
}
void
elog
(
void
);
/* make compiler happy */
void
elog
(
void
)
{}
int
GetDataHome
(
void
);
/* make compiler happy */
int
GetDataHome
(
void
)
{
return
(
0
);
SetPgVersion
(
argv
[
1
],
&
reason
);
if
(
reason
)
{
fprintf
(
stderr
,
"pg_version is unable to create the PG_VERSION file. "
"SetPgVersion gave this reason: %s
\n
"
,
reason
);
retcode
=
10
;
}
else
retcode
=
0
;
return
(
retcode
);
}
src/include/miscadmin.h
View file @
17befd6c
...
...
@@ -12,7 +12,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: miscadmin.h,v 1.
2 1996/11/06 10:28:59 scrappy
Exp $
* $Id: miscadmin.h,v 1.
3 1996/11/12 06:47:10 bryanh
Exp $
*
* NOTES
* some of the information in this file will be moved to
...
...
@@ -69,14 +69,6 @@ extern Oid LastOidProcessed; /* for query rewrite */
*/
#define NDBUFS 64
/*****************************************************************************
* magic.h - definitions of the indexes of the magic numbers *
*****************************************************************************/
#define PG_RELEASE 6
#define PG_VERSION 0
#define PG_VERFILE "PG_VERSION"
/*****************************************************************************
* pdir.h -- *
* POSTGRES directory path definitions. *
...
...
@@ -148,7 +140,6 @@ typedef int16 ExitStatus;
/* in utils/init/postinit.c */
extern
void
InitMyDatabaseId
(
void
);
extern
void
DoChdirAndInitDatabaseNameAndPath
(
char
*
name
,
char
*
path
);
extern
void
InitUserid
(
void
);
extern
void
InitCommunication
(
void
);
extern
void
InitStdio
(
void
);
...
...
@@ -170,12 +161,4 @@ extern bool IsNormalProcessingMode(void);
extern
void
SetProcessingMode
(
ProcessingMode
mode
);
extern
ProcessingMode
GetProcessingMode
(
void
);
/*
* Prototypes for utils/init/magic.c
*/
extern
int
DatabaseMetaGunkIsConsistent
(
const
char
*
database
,
char
*
path
);
extern
int
ValidPgVersion
(
const
char
*
path
);
extern
void
SetPgVersion
(
const
char
*
path
);
#endif
/* MISCADMIN_H */
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