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
0a761375
Commit
0a761375
authored
Oct 31, 1996
by
Marc G. Fournier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move these files to ${SRCDIR}/include
parent
5565d32e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
0 additions
and
1179 deletions
+0
-1179
src/backend/include/c.h
src/backend/include/c.h
+0
-768
src/backend/include/miscadmin.h
src/backend/include/miscadmin.h
+0
-185
src/backend/include/postgres.h
src/backend/include/postgres.h
+0
-226
No files found.
src/backend/include/c.h
deleted
100644 → 0
View file @
5565d32e
/*-------------------------------------------------------------------------
*
* c.h--
* Fundamental C definitions. This is included by every .c file in
* postgres.
*
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: c.h,v 1.1.1.1 1996/07/09 06:21:28 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
/*
* TABLE OF CONTENTS
*
* When adding stuff to this file, please try and put stuff
* into the relevant section, or add new sections as appropriate.
*
* section description
* ------- ------------------------------------------------
* 1) bool, true, false, TRUE, FALSE
* 2) __STDC__, non-ansi C definitions:
* Pointer typedef, NULL
* cpp magic macros
* type prefixes: const, signed, volatile, inline
* 3) standard system types
* 4) datum type
* 5) IsValid macros for system types
* 6) offsetof, lengthof, endof
* 7) exception handling definitions, Assert, Trap, etc macros
* 8) Min, Max, Abs macros
* 9) externs
* 10) Berkeley-specific defs
* 11) system-specific hacks
*
* NOTES
*
* This file is MACHINE AND COMPILER dependent!!! (For now.)
*
* ----------------------------------------------------------------
*/
#ifndef C_H
#define C_H
/* ----------------------------------------------------------------
* Section 1: bool, true, false, TRUE, FALSE
* ----------------------------------------------------------------
*/
/*
* bool --
* Boolean value, either true or false.
*
*/
#define false ((char) 0)
#define true ((char) 1)
typedef
char
bool
;
typedef
bool
*
BoolPtr
;
#ifndef TRUE
#define TRUE 1
#endif
/* TRUE */
#ifndef FALSE
#define FALSE 0
#endif
/* FALSE */
/* ----------------------------------------------------------------
* Section 2: __STDC__, non-ansi C definitions:
*
* cpp magic macros
* Pointer typedef, NULL
* type prefixes: const, signed, volatile, inline
* ----------------------------------------------------------------
*/
#ifdef __STDC__
/* ANSI C */
/*
* Pointer --
* Variable holding address of any memory resident object.
*/
/*
* XXX Pointer arithmetic is done with this, so it can't be void *
* under "true" ANSI compilers.
*/
typedef
char
*
Pointer
;
#ifndef NULL
/*
* NULL --
* Null pointer.
*/
#define NULL ((void *) 0)
#endif
/* !defined(NULL) */
#define HAVE_ANSI_CPP
/* all ANSI C compilers must have this! */
#if defined(NEED_STD_HDRS)
#undef NEED_STD_HDRS
/* all ANSI systems must have stddef/stdlib */
#endif
/* NEED_STD_HDRS */
#else
/* !defined(__STDC__) */
/* NOT ANSI C */
/*
* Pointer --
* Variable containing address of any memory resident object.
*/
typedef
char
*
Pointer
;
#ifndef NULL
/*
* NULL --
* Null pointer.
*/
#define NULL 0
#endif
/* !defined(NULL) */
/*
* const --
* Type modifier. Identifies read only variables.
*
* Example:
* extern const Version RomVersion;
*/
#define const
/* const */
/*
* signed --
* Type modifier. Identifies signed integral types.
*/
#define signed
/* signed */
/*
* volatile --
* Type modifier. Identifies variables which may change in ways not
* noticeable by the compiler, e.g. via asynchronous interrupts.
*
* Example:
* extern volatile unsigned int NumberOfInterrupts;
*/
#define volatile
/* volatile */
#endif
/* !defined(__STDC__) */
/* NOT ANSI C */
/*
* CppAsString --
* Convert the argument to a string, using the C preprocessor.
* CppConcat --
* Concatenate two arguments together, using the C preprocessor.
*/
#if defined(HAVE_ANSI_CPP)
#define CppAsString(identifier) #identifier
#define CppConcat(x, y) x##y
#define CppConcat0(x, y) x##y
#define CppConcat1(x, y) x##y
#define CppConcat2(x, y) x##y
#define CppConcat3(x, y) x##y
#define CppConcat4(x, y) x##y
#else
/* !HAVE_ANSI_CPP */
#define CppAsString(identifier) "identifier"
/*
* CppIdentity -- On Reiser based cpp's this is used to concatenate
* two tokens. That is
* CppIdentity(A)B ==> AB
* We renamed it to _private_CppIdentity because it should not
* be referenced outside this file. On other cpp's it
* produces A B.
*/
#define _priv_CppIdentity(x)x
#define CppConcat(x, y) _priv_CppIdentity(x)y
#define CppConcat0(x, y) _priv_CppIdentity(x)y
#define CppConcat1(x, y) _priv_CppIdentity(x)y
#define CppConcat2(x, y) _priv_CppIdentity(x)y
#define CppConcat3(x, y) _priv_CppIdentity(x)y
#define CppConcat4(x, y) _priv_CppIdentity(x)y
#endif
/* !HAVE_ANSI_CPP */
#ifndef __GNUC__
/* GNU cc */
# define inline
#endif
#if defined(NEED_STD_HDRS)
/*
* You're doomed. We've removed almost all of our own C library
* extern declarations because they conflict on the different
* systems. You'll have to write your own stdlib.h.
*/
#include "stdlib.h"
#else
/* NEED_STD_HDRS */
#include <stddef.h>
#include <stdlib.h>
#endif
/* NEED_STD_HDRS */
/* ----------------------------------------------------------------
* Section 3: standard system types
* ----------------------------------------------------------------
*/
/*
* intN --
* Signed integer, AT LEAST N BITS IN SIZE,
* used for numerical computations.
*/
typedef
signed
char
int8
;
/* >= 8 bits */
typedef
signed
short
int16
;
/* >= 16 bits */
typedef
signed
int
int32
;
/* >= 32 bits */
/*
* uintN --
* Unsigned integer, AT LEAST N BITS IN SIZE,
* used for numerical computations.
*/
typedef
unsigned
char
uint8
;
/* >= 8 bits */
typedef
unsigned
short
uint16
;
/* >= 16 bits */
typedef
unsigned
int
uint32
;
/* >= 32 bits */
/*
* floatN --
* Floating point number, AT LEAST N BITS IN SIZE,
* used for numerical computations.
*
* Since sizeof(floatN) may be > sizeof(char *), always pass
* floatN by reference.
*/
typedef
float
float32data
;
typedef
double
float64data
;
typedef
float
*
float32
;
typedef
double
*
float64
;
/*
* boolN --
* Boolean value, AT LEAST N BITS IN SIZE.
*/
typedef
uint8
bool8
;
/* >= 8 bits */
typedef
uint16
bool16
;
/* >= 16 bits */
typedef
uint32
bool32
;
/* >= 32 bits */
/*
* bitsN --
* Unit of bitwise operation, AT LEAST N BITS IN SIZE.
*/
typedef
uint8
bits8
;
/* >= 8 bits */
typedef
uint16
bits16
;
/* >= 16 bits */
typedef
uint32
bits32
;
/* >= 32 bits */
/*
* wordN --
* Unit of storage, AT LEAST N BITS IN SIZE,
* used to fetch/store data.
*/
typedef
uint8
word8
;
/* >= 8 bits */
typedef
uint16
word16
;
/* >= 16 bits */
typedef
uint32
word32
;
/* >= 32 bits */
/*
* Size --
* Size of any memory resident object, as returned by sizeof.
*/
typedef
unsigned
int
Size
;
/*
* Index --
* Index into any memory resident array.
*
* Note:
* Indices are non negative.
*/
typedef
unsigned
int
Index
;
#define MAXDIM 6
typedef
struct
{
int
indx
[
MAXDIM
];
}
IntArray
;
/*
* Offset --
* Offset into any memory resident array.
*
* Note:
* This differs from an Index in that an Index is always
* non negative, whereas Offset may be negative.
*/
typedef
signed
int
Offset
;
/* ----------------------------------------------------------------
* Section 4: datum type + support macros
* ----------------------------------------------------------------
*/
/*
* datum.h --
* POSTGRES abstract data type datum representation definitions.
*
* Note:
*
* Port Notes:
* Postgres makes the following assumption about machines:
*
* sizeof(Datum) == sizeof(long) >= sizeof(void *) >= 4
*
* Postgres also assumes that
*
* sizeof(char) == 1
*
* and that
*
* sizeof(short) == 2
*
* If your machine meets these requirements, Datums should also be checked
* to see if the positioning is correct.
*
* This file is MACHINE AND COMPILER dependent!!!
*/
typedef
unsigned
long
Datum
;
/* XXX sizeof(long) >= sizeof(void *) */
typedef
Datum
*
DatumPtr
;
#define GET_1_BYTE(datum) (((Datum) (datum)) & 0x000000ff)
#define GET_2_BYTES(datum) (((Datum) (datum)) & 0x0000ffff)
#define GET_4_BYTES(datum) (((Datum) (datum)) & 0xffffffff)
#define SET_1_BYTE(value) (((Datum) (value)) & 0x000000ff)
#define SET_2_BYTES(value) (((Datum) (value)) & 0x0000ffff)
#define SET_4_BYTES(value) (((Datum) (value)) & 0xffffffff)
/*
* DatumGetChar --
* Returns character value of a datum.
*/
#define DatumGetChar(X) ((char) GET_1_BYTE(X))
/*
* CharGetDatum --
* Returns datum representation for a character.
*/
#define CharGetDatum(X) ((Datum) SET_1_BYTE(X))
/*
* Int8GetDatum --
* Returns datum representation for an 8-bit integer.
*/
#define Int8GetDatum(X) ((Datum) SET_1_BYTE(X))
/*
* DatumGetUInt8 --
* Returns 8-bit unsigned integer value of a datum.
*/
#define DatumGetUInt8(X) ((uint8) GET_1_BYTE(X))
/*
* UInt8GetDatum --
* Returns datum representation for an 8-bit unsigned integer.
*/
#define UInt8GetDatum(X) ((Datum) SET_1_BYTE(X))
/*
* DatumGetInt16 --
* Returns 16-bit integer value of a datum.
*/
#define DatumGetInt16(X) ((int16) GET_2_BYTES(X))
/*
* Int16GetDatum --
* Returns datum representation for a 16-bit integer.
*/
#define Int16GetDatum(X) ((Datum) SET_2_BYTES(X))
/*
* DatumGetUInt16 --
* Returns 16-bit unsigned integer value of a datum.
*/
#define DatumGetUInt16(X) ((uint16) GET_2_BYTES(X))
/*
* UInt16GetDatum --
* Returns datum representation for a 16-bit unsigned integer.
*/
#define UInt16GetDatum(X) ((Datum) SET_2_BYTES(X))
/*
* DatumGetInt32 --
* Returns 32-bit integer value of a datum.
*/
#define DatumGetInt32(X) ((int32) GET_4_BYTES(X))
/*
* Int32GetDatum --
* Returns datum representation for a 32-bit integer.
*/
#define Int32GetDatum(X) ((Datum) SET_4_BYTES(X))
/*
* DatumGetUInt32 --
* Returns 32-bit unsigned integer value of a datum.
*/
#define DatumGetUInt32(X) ((uint32) GET_4_BYTES(X))
/*
* UInt32GetDatum --
* Returns datum representation for a 32-bit unsigned integer.
*/
#define UInt32GetDatum(X) ((Datum) SET_4_BYTES(X))
/*
* DatumGetObjectId --
* Returns object identifier value of a datum.
*/
#define DatumGetObjectId(X) ((Oid) GET_4_BYTES(X))
/*
* ObjectIdGetDatum --
* Returns datum representation for an object identifier.
*/
#define ObjectIdGetDatum(X) ((Datum) SET_4_BYTES(X))
/*
* DatumGetPointer --
* Returns pointer value of a datum.
*/
#define DatumGetPointer(X) ((Pointer) X)
/*
* PointerGetDatum --
* Returns datum representation for a pointer.
*/
#define PointerGetDatum(X) ((Datum) X)
/*
* DatumGetName --
* Returns name value of a datum.
*/
#define DatumGetName(X) ((Name) DatumGetPointer((Datum) X))
/*
* NameGetDatum --
* Returns datum representation for a name.
*/
#define NameGetDatum(X) PointerGetDatum((Pointer) X)
/*
* DatumGetFloat32 --
* Returns 32-bit floating point value of a datum.
* This is really a pointer, of course.
*/
#define DatumGetFloat32(X) ((float32) DatumGetPointer((Datum) X))
/*
* Float32GetDatum --
* Returns datum representation for a 32-bit floating point number.
* This is really a pointer, of course.
*/
#define Float32GetDatum(X) PointerGetDatum((Pointer) X)
/*
* DatumGetFloat64 --
* Returns 64-bit floating point value of a datum.
* This is really a pointer, of course.
*/
#define DatumGetFloat64(X) ((float64) DatumGetPointer(X))
/*
* Float64GetDatum --
* Returns datum representation for a 64-bit floating point number.
* This is really a pointer, of course.
*/
#define Float64GetDatum(X) PointerGetDatum((Pointer) X)
/* ----------------------------------------------------------------
* Section 5: IsValid macros for system types
* ----------------------------------------------------------------
*/
/*
* BoolIsValid --
* True iff bool is valid.
*/
#define BoolIsValid(boolean) ((boolean) == false || (boolean) == true)
/*
* PointerIsValid --
* True iff pointer is valid.
*/
#define PointerIsValid(pointer) (bool)((void*)(pointer) != NULL)
/*
* PointerIsInBounds --
* True iff pointer is within given bounds.
*
* Note:
* Assumes the bounded interval to be [min,max),
* i.e. closed on the left and open on the right.
*/
#define PointerIsInBounds(pointer, min, max) \
((min) <= (pointer) && (pointer) < (max))
/*
* PointerIsAligned --
* True iff pointer is properly aligned to point to the given type.
*/
#define PointerIsAligned(pointer, type) \
(((long)(pointer) % (sizeof (type))) == 0)
/* ----------------------------------------------------------------
* Section 6: offsetof, lengthof, endof
* ----------------------------------------------------------------
*/
/*
* offsetof --
* Offset of a structure/union field within that structure/union.
*
* XXX This is supposed to be part of stddef.h, but isn't on
* some systems (like SunOS 4).
*/
#ifndef offsetof
#define offsetof(type, field) ((long) &((type *)0)->field)
#endif
/* offsetof */
/*
* lengthof --
* Number of elements in an array.
*/
#define lengthof(array) (sizeof (array) / sizeof ((array)[0]))
/*
* endof --
* Address of the element one past the last in an array.
*/
#define endof(array) (&array[lengthof(array)])
/* ----------------------------------------------------------------
* Section 7: exception handling definitions
* Assert, Trap, etc macros
* ----------------------------------------------------------------
*/
/*
* Exception Handling definitions
*/
typedef
char
*
ExcMessage
;
typedef
struct
Exception
{
ExcMessage
message
;
}
Exception
;
/*
* NO_ASSERT_CHECKING, if defined, turns off all the assertions.
* - plai 9/5/90
*
* It should _NOT_ be undef'ed in releases or in benchmark copies
*
* #undef NO_ASSERT_CHECKING
*/
/*
* Trap --
* Generates an exception if the given condition is true.
*
*/
#define Trap(condition, exception) \
{ if (condition) \
ExceptionalCondition(CppAsString(condition), &(exception), \
(char*)NULL, __FILE__, __LINE__); }
/*
* TrapMacro is the same as Trap but it's intended for use in macros:
*
* #define foo(x) (AssertM(x != 0) && bar(x))
*
* Isn't CPP fun?
*/
#define TrapMacro(condition, exception) \
((bool) ((! condition) || \
(ExceptionalCondition(CppAsString(condition), \
&(exception), \
(char*) NULL, __FILE__, __LINE__))))
#ifdef NO_ASSERT_CHECKING
#define Assert(condition)
#define AssertMacro(condition) true
#define AssertArg(condition)
#define AssertState(condition)
#else
#define Assert(condition) \
Trap(!(condition), FailedAssertion)
#define AssertMacro(condition) \
TrapMacro(!(condition), FailedAssertion)
#define AssertArg(condition) \
Trap(!(condition), BadArg)
#define AssertState(condition) \
Trap(!(condition), BadState)
#endif
/* NO_ASSERT_CHECKING */
/*
* LogTrap --
* Generates an exception with a message if the given condition is true.
*
*/
#define LogTrap(condition, exception, printArgs) \
{ if (condition) \
ExceptionalCondition(CppAsString(condition), &(exception), \
form printArgs, __FILE__, __LINE__); }
/*
* LogTrapMacro is the same as LogTrap but it's intended for use in macros:
*
* #define foo(x) (LogAssertMacro(x != 0, "yow!") && bar(x))
*/
#define LogTrapMacro(condition, exception, printArgs) \
((bool) ((! condition) || \
(ExceptionalCondition(CppAsString(condition), \
&(exception), \
form printArgs, __FILE__, __LINE__))))
#ifdef NO_ASSERT_CHECKING
#define LogAssert(condition, printArgs)
#define LogAssertMacro(condition, printArgs) true
#define LogAssertArg(condition, printArgs)
#define LogAssertState(condition, printArgs)
#else
#define LogAssert(condition, printArgs) \
LogTrap(!(condition), FailedAssertion, printArgs)
#define LogAssertMacro(condition, printArgs) \
LogTrapMacro(!(condition), FailedAssertion, printArgs)
#define LogAssertArg(condition, printArgs) \
LogTrap(!(condition), BadArg, printArgs)
#define LogAssertState(condition, printArgs) \
LogTrap(!(condition), BadState, printArgs)
#endif
/* NO_ASSERT_CHECKING */
/* ----------------------------------------------------------------
* Section 8: Min, Max, Abs macros
* ----------------------------------------------------------------
*/
/*
* Max --
* Return the maximum of two numbers.
*/
#define Max(x, y) ((x) > (y) ? (x) : (y))
/*
* Min --
* Return the minimum of two numbers.
*/
#define Min(x, y) ((x) < (y) ? (x) : (y))
/*
* Abs --
* Return the absolute value of the argument.
*/
#define Abs(x) ((x) >= 0 ? (x) : -(x))
/* ----------------------------------------------------------------
* Section 9: externs
* ----------------------------------------------------------------
*/
extern
Exception
FailedAssertion
;
extern
Exception
BadArg
;
extern
Exception
BadState
;
/* in utils/error/assert.c */
extern
int
ExceptionalCondition
(
char
*
conditionName
,
Exception
*
exceptionP
,
char
*
details
,
char
*
fileName
,
int
lineNumber
);
/* ----------------
* form is used by assert and the exception handling stuff
* ----------------
*/
extern
char
*
form
(
char
*
fmt
,
...);
/* ----------------------------------------------------------------
* Section 10: berkeley-specific configuration
*
* this section contains settings which are only relevant to the UC Berkeley
* sites. Other sites can ignore this
* ----------------------------------------------------------------
*/
/* ----------------
* storage managers
*
* These are experimental and are not supported in the code that
* we distribute to other sites.
* ----------------
*/
#ifdef SEQUOIA
#define MAIN_MEMORY
#endif
/* ----------------------------------------------------------------
* Section 11: system-specific hacks
*
* This should be limited to things that absolutely have to be
* included in every source file. The changes should be factored
* into a separate file so that changes to one port don't require
* changes to c.h (and everyone recompiling their whole system).
* ----------------------------------------------------------------
*/
#if defined(PORTNAME_hpux)
#include "port/hpux/fixade.h"
/* for 8.07 unaligned access fixup */
#endif
/* PORTNAME_hpux */
#if defined(PORTNAME_sparc)
#define memmove(d, s, l) bcopy(s, d, l)
#endif
/* These are for things that are one way on Unix and another on NT */
#ifndef WIN32
#define NULL_DEV "/dev/null"
#define COPY_CMD "cp"
#define SEP_CHAR '/'
#else
#define NULL_DEV "NUL"
#define COPY_CMD "copy"
#define SEP_CHAR '\\'
#endif
/* WIN32 */
#if defined(WIN32)
#include "port/win32/nt.h"
#include "port/win32/machine.h"
#endif
/* WIN32 */
/* ----------------
* end of c.h
* ----------------
*/
#endif
/* C_H */
src/backend/include/miscadmin.h
deleted
100644 → 0
View file @
5565d32e
/*-------------------------------------------------------------------------
*
* miscadmin.h--
* this file contains general postgres administration and initialization
* stuff that used to be spread out between the following files:
* globals.h global variables
* magic.h PG_RELEASE, PG_VERSION, etc defines
* pdir.h directory path crud
* pinit.h postgres initialization
* pmod.h processing modes
*
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: miscadmin.h,v 1.6 1996/10/31 05:53:43 momjian Exp $
*
* NOTES
* some of the information in this file will be moved to
* other files.
*
*-------------------------------------------------------------------------
*/
#ifndef MISCADMIN_H
#define MISCADMIN_H
/*****************************************************************************
* globals.h -- *
*****************************************************************************/
#include "postgres.h"
/* #include "storage/sinval.h" */
/*
* from postmaster/postmaster.c
*/
extern
int
PostmasterMain
(
int
argc
,
char
*
argv
[]);
/*
* from utils/init/globals.c
*/
extern
int
Portfd
;
extern
int
Noversion
;
/* moved from magic.c */
extern
int
MasterPid
;
/* declared and defined in utils/initglobals.c */
extern
int
Quiet
;
extern
char
*
DataDir
;
extern
char
OutputFileName
[];
extern
void
InitGlobals
(
void
);
/*
* done in storage/backendid.h for now.
*
* extern BackendId MyBackendId;
* extern BackendTag MyBackendTag;
*/
extern
bool
MyDatabaseIdIsInitialized
;
extern
Oid
MyDatabaseId
;
extern
bool
TransactionInitWasProcessed
;
extern
bool
IsUnderPostmaster
;
extern
bool
IsPostmaster
;
extern
short
DebugLvl
;
extern
Oid
LastOidProcessed
;
/* for query rewrite */
#define MAX_PARSE_BUFFER 8192
/*
* default number of buffers in buffer pool
*
*/
#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. *
*****************************************************************************/
/* now in utils/init/miscinit.c */
extern
char
*
GetDatabasePath
(
void
);
extern
char
*
GetDatabaseName
(
void
);
extern
void
SetDatabaseName
(
char
*
name
);
extern
void
SetDatabasePath
(
char
*
path
);
extern
char
*
GetPgUserName
(
void
);
extern
void
SetPgUserName
(
void
);
extern
Oid
GetUserId
(
void
);
extern
void
SetUserId
(
void
);
extern
char
*
GetPGHome
(
void
);
extern
char
*
GetPGData
(
void
);
extern
int
ValidateBackend
(
char
*
path
);
extern
int
FindBackend
(
char
*
backend
,
char
*
argv0
);
extern
int
CheckPathAccess
(
char
*
path
,
char
*
name
,
int
open_mode
);
/*****************************************************************************
* pmod.h -- *
* POSTGRES processing mode definitions. *
*****************************************************************************/
/*
* Description:
* There are four processing modes in POSTGRES. They are NoProcessing
* or "none," BootstrapProcessing or "bootstrap," InitProcessing or
* "initialization," and NormalProcessing or "normal."
*
* If a POSTGRES binary is in normal mode, then all code may be executed
* normally. In the none mode, only bookkeeping code may be called. In
* particular, access method calls may not occur in this mode since the
* execution state is outside a transaction.
*
* The final two processing modes are used during special times. When the
* system state indicates bootstrap processing, transactions are all given
* transaction id "one" and are consequently guarenteed to commit. This mode
* is used during the initial generation of template databases.
*
* Finally, the execution state is in initialization mode until all normal
* initialization is complete. Some code behaves differently when executed in
* this mode to enable system bootstrapping.
*/
typedef
enum
ProcessingMode
{
NoProcessing
,
/* "nothing" can be done */
BootstrapProcessing
,
/* bootstrap creation of template database */
InitProcessing
,
/* initializing system */
NormalProcessing
/* normal processing */
}
ProcessingMode
;
/*****************************************************************************
* pinit.h -- *
* POSTGRES initialization and cleanup definitions. *
*****************************************************************************/
/*
* Note:
* XXX AddExitHandler not defined yet.
*/
typedef
int16
ExitStatus
;
#define NormalExitStatus (0)
#define FatalExitStatus (127)
/* XXX are there any other meaningful exit codes? */
/* 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
);
extern
bool
PostgresIsInitialized
;
extern
void
InitPostgres
(
char
*
name
);
/* in miscinit.c */
extern
void
ExitPostgres
(
ExitStatus
status
);
extern
void
AbortPostgres
(
void
);
extern
void
StatusBackendExit
(
int
status
);
extern
void
StatusPostmasterExit
(
int
status
);
extern
bool
IsNoProcessingMode
(
void
);
extern
bool
IsBootstrapProcessingMode
(
void
);
extern
bool
IsInitProcessingMode
(
void
);
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 */
src/backend/include/postgres.h
deleted
100644 → 0
View file @
5565d32e
/*-------------------------------------------------------------------------
*
* postgres.h--
* definition of (and support for) postgres system types.
* this file is included by almost every .c in the system
*
* Copyright (c) 1995, Regents of the University of California
*
* $Id: postgres.h,v 1.5 1996/10/18 18:28:33 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
/*
* NOTES
* this file will eventually contain the definitions for the
* following (and perhaps other) system types:
*
* int2 int4 float4 float8
* Oid regproc RegProcedure
* aclitem
* struct varlena
* char8 char16 int28 oid8
* bytea text
* NameData Name
* oidint4 oidint2 oidname
*
* TABLE OF CONTENTS
* 1) simple type definitions
* 2) varlena and array types
* 3) TransactionId and CommandId
* 4) genbki macros used by catalog/pg_xxx.h files
* 5) random SIGNBIT, MAXPGPATH, STATUS macros
*
* ----------------------------------------------------------------
*/
#ifndef POSTGRES_H
#define POSTGRES_H
#include "config.h"
#include "c.h"
#include "utils/elog.h"
/* ----------------------------------------------------------------
* Section 1: simple type definitions
* ----------------------------------------------------------------
*/
typedef
int16
int2
;
typedef
int32
int4
;
typedef
float
float4
;
typedef
double
float8
;
typedef
int4
aclitem
;
typedef
uint32
Oid
;
#define InvalidOid 0
#define OidIsValid(objectId) ((bool) (objectId != InvalidOid))
/* unfortunately, both regproc and RegProcedure are used */
typedef
Oid
regproc
;
typedef
Oid
RegProcedure
;
/* ptr to func returning (char *) */
typedef
char
*
((
*
func_ptr
)());
#define RegProcedureIsValid(p) OidIsValid(p)
/* ----------------------------------------------------------------
* Section 2: variable length and array types
* ----------------------------------------------------------------
*/
/* ----------------
* struct varlena
* ----------------
*/
struct
varlena
{
int32
vl_len
;
char
vl_dat
[
1
];
};
#define VARSIZE(PTR) (((struct varlena *)(PTR))->vl_len)
#define VARDATA(PTR) (((struct varlena *)(PTR))->vl_dat)
#define VARHDRSZ sizeof(int32)
typedef
struct
varlena
bytea
;
typedef
struct
varlena
text
;
typedef
struct
char8
{
char
data
[
8
];
}
char8
;
/* ----------------
* char16
* ----------------
*/
typedef
struct
char16
{
char
data
[
16
];
}
char16
;
typedef
char16
*
Char16
;
typedef
int2
int28
[
8
];
typedef
Oid
oid8
[
8
];
/* char16 is distinct from Name.
now, you can truly change the max length of system names
by altering the NAMEDATALEN define below.
don't set the value too high because tuples are still constrained
to be less than 8K
*/
/* NAMEDATALEN is the maximum string length (counting terminating null)
of a Name */
/* defined in Makefile.global */
/* if you change the value of NAMEDATALEN, you may need to change the
alignment of the 'name' type in pg_type.h */
#ifndef NAMEDATALEN
#define NAMEDATALEN 16
#endif
/* NAMEDATALEN */
/* OIDNAMELEN should be NAMEDATALEN + sizeof(Oid) */
#ifndef OIDNAMELEN
#define OIDNAMELEN 20
#endif
/* OIDNAMELEN */
typedef
struct
nameData
{
char
data
[
NAMEDATALEN
];
}
NameData
;
typedef
NameData
*
Name
;
/* ----------------
* oidint4
*
* this is a new system type used by the file interface.
* ----------------
*/
typedef
struct
OidInt4Data
{
Oid
oi_oid
;
int32
oi_int4
;
}
OidInt4Data
;
typedef
struct
OidInt4Data
*
OidInt4
;
/* ----------------
* oidint2
*
* this is a new system type used to define indices on two attrs.
* ----------------
*/
typedef
struct
OidInt2Data
{
Oid
oi_oid
;
int16
oi_int2
;
}
OidInt2Data
;
typedef
struct
OidInt2Data
*
OidInt2
;
/* ----------------
* oidname
*
* this is a new system type used to define indices on two attrs.
* ----------------
*/
typedef
struct
OidNameData
{
Oid
id
;
NameData
name
;
}
OidNameData
;
typedef
struct
OidNameData
*
OidName
;
/* ----------------------------------------------------------------
* Section 3: TransactionId and CommandId
* ----------------------------------------------------------------
*/
typedef
uint32
TransactionId
;
#define InvalidTransactionId 0
typedef
uint16
CommandId
;
#define FirstCommandId 0
/* ----------------------------------------------------------------
* Section 4: genbki macros used by the
* catalog/pg_xxx.h files
* ----------------------------------------------------------------
*/
#define CATALOG(x) \
typedef struct CppConcat(FormData_,x)
#define DATA(x) extern int errno
#define DECLARE_INDEX(x) extern int errno
#define BUILD_INDICES
#define BOOTSTRAP
#define BKI_BEGIN
#define BKI_END
/* ----------------------------------------------------------------
* Section 5: random stuff
* SIGNBIT, MAXPGPATH, STATUS...
* ----------------------------------------------------------------
*/
/* msb for int/unsigned */
#define SIGNBIT (0x8000)
/* msb for char */
#define CSIGNBIT (1 << 7)
/* ----------------
* global variables which should probably go someplace else.
* ----------------
*/
#define MAXPGPATH 128
#define STATUS_OK (0)
#define STATUS_ERROR (-1)
#define STATUS_NOT_FOUND (-2)
#define STATUS_INVALID (-3)
#define STATUS_UNCATALOGUED (-4)
#define STATUS_REPLACED (-5)
#define STATUS_NOT_DONE (-6)
#define STATUS_BAD_PACKET (-7)
#define STATUS_FOUND (1)
#endif
/* POSTGRES_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