PostgreSQL Source Code git master
c.h File Reference
#include "pg_config.h"
#include "pg_config_manual.h"
#include "pg_config_os.h"
#include <assert.h>
#include <inttypes.h>
#include <stdalign.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <stdarg.h>
#include <stdint.h>
#include <sys/types.h>
#include <errno.h>
#include <locale.h>
#include "postgres_ext.h"
#include <stdbool.h>
#include "port.h"
Include dependency graph for c.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  varlena
 
struct  int2vector
 
struct  oidvector
 
struct  nameData
 
struct  PGAlignedBlock
 
struct  PGIOAlignedBlock
 
struct  PGAlignedXLogBlock
 

Macros

#define pg_restrict   restrict
 
#define __has_attribute(attribute)   0
 
#define pg_attribute_unused()
 
#define pg_nodiscard
 
#define pg_noreturn
 
#define pg_attribute_no_sanitize_address()
 
#define pg_attribute_no_sanitize_alignment()
 
#define pg_attribute_nonnull(...)
 
#define pg_attribute_target(...)
 
#define PG_USED_FOR_ASSERTS_ONLY   pg_attribute_unused()
 
#define PG_PRINTF_ATTRIBUTE   PG_C_PRINTF_ATTRIBUTE
 
#define pg_attribute_format_arg(a)
 
#define pg_attribute_printf(f, a)
 
#define pg_attribute_always_inline   inline
 
#define pg_noinline
 
#define pg_attribute_cold
 
#define pg_attribute_hot
 
#define pg_unreachable()   abort()
 
#define pg_assume(expr)   ((void) 0)
 
#define likely(x)   ((x) != 0)
 
#define unlikely(x)   ((x) != 0)
 
#define CppAsString(identifier)   #identifier
 
#define CppAsString2(x)   CppAsString(x)
 
#define CppConcat(x, y)   x##y
 
#define VA_ARGS_NARGS(...)
 
#define VA_ARGS_NARGS_(_01, _02, _03, _04, _05, _06, _07, _08, _09, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...)    (N)
 
#define FLEXIBLE_ARRAY_MEMBER   /* empty */
 
#define INT64CONST(x)   INT64_C(x)
 
#define UINT64CONST(x)   UINT64_C(x)
 
#define INT64_FORMAT   "%" PRId64
 
#define UINT64_FORMAT   "%" PRIu64
 
#define OID8_FORMAT   "%" PRIu64
 
#define PG_INT8_MIN   INT8_MIN
 
#define PG_INT8_MAX   INT8_MAX
 
#define PG_UINT8_MAX   UINT8_MAX
 
#define PG_INT16_MIN   INT16_MIN
 
#define PG_INT16_MAX   INT16_MAX
 
#define PG_UINT16_MAX   UINT16_MAX
 
#define PG_INT32_MIN   INT32_MIN
 
#define PG_INT32_MAX   INT32_MAX
 
#define PG_UINT32_MAX   UINT32_MAX
 
#define PG_INT64_MIN   INT64_MIN
 
#define PG_INT64_MAX   INT64_MAX
 
#define PG_UINT64_MAX   UINT64_MAX
 
#define HAVE_INT64_TIMESTAMP
 
#define FLOAT8PASSBYVAL   true
 
#define InvalidSubTransactionId   ((SubTransactionId) 0)
 
#define TopSubTransactionId   ((SubTransactionId) 1)
 
#define FirstCommandId   ((CommandId) 0)
 
#define InvalidCommandId   (~(CommandId)0)
 
#define InvalidOid8   ((Oid8) 0)
 
#define OID8_MAX   UINT64_MAX
 
#define VARHDRSZ   ((int32) sizeof(int32))
 
#define NameStr(name)   ((name).data)
 
#define BoolIsValid(boolean)   ((boolean) == false || (boolean) == true)
 
#define PointerIsAligned(pointer, type)    (((uintptr_t)(pointer) % (sizeof (type))) == 0)
 
#define OffsetToPointer(base, offset)    ((void *)((char *) base + offset))
 
#define OidIsValid(objectId)   ((bool) ((objectId) != InvalidOid))
 
#define Oid8IsValid(objectId)   ((bool) ((objectId) != InvalidOid8))
 
#define RegProcedureIsValid(p)   OidIsValid(p)
 
#define lengthof(array)   (sizeof (array) / sizeof ((array)[0]))
 
#define TYPEALIGN(ALIGNVAL, LEN)    (((uintptr_t) (LEN) + ((ALIGNVAL) - 1)) & ~((uintptr_t) ((ALIGNVAL) - 1)))
 
#define SHORTALIGN(LEN)   TYPEALIGN(ALIGNOF_SHORT, (LEN))
 
#define INTALIGN(LEN)   TYPEALIGN(ALIGNOF_INT, (LEN))
 
#define LONGALIGN(LEN)   TYPEALIGN(ALIGNOF_LONG, (LEN))
 
#define DOUBLEALIGN(LEN)   TYPEALIGN(ALIGNOF_DOUBLE, (LEN))
 
#define MAXALIGN(LEN)   TYPEALIGN(MAXIMUM_ALIGNOF, (LEN))
 
#define BUFFERALIGN(LEN)   TYPEALIGN(ALIGNOF_BUFFER, (LEN))
 
#define CACHELINEALIGN(LEN)   TYPEALIGN(PG_CACHE_LINE_SIZE, (LEN))
 
#define TYPEALIGN_DOWN(ALIGNVAL, LEN)    (((uintptr_t) (LEN)) & ~((uintptr_t) ((ALIGNVAL) - 1)))
 
#define SHORTALIGN_DOWN(LEN)   TYPEALIGN_DOWN(ALIGNOF_SHORT, (LEN))
 
#define INTALIGN_DOWN(LEN)   TYPEALIGN_DOWN(ALIGNOF_INT, (LEN))
 
#define LONGALIGN_DOWN(LEN)   TYPEALIGN_DOWN(ALIGNOF_LONG, (LEN))
 
#define DOUBLEALIGN_DOWN(LEN)   TYPEALIGN_DOWN(ALIGNOF_DOUBLE, (LEN))
 
#define MAXALIGN_DOWN(LEN)   TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN))
 
#define BUFFERALIGN_DOWN(LEN)   TYPEALIGN_DOWN(ALIGNOF_BUFFER, (LEN))
 
#define TYPEALIGN64(ALIGNVAL, LEN)    (((uint64) (LEN) + ((ALIGNVAL) - 1)) & ~((uint64) ((ALIGNVAL) - 1)))
 
#define MAXALIGN64(LEN)   TYPEALIGN64(MAXIMUM_ALIGNOF, (LEN))
 
#define Assert(condition)   ((void)true)
 
#define AssertMacro(condition)   ((void)true)
 
#define AssertPointerAlignment(ptr, bndr)    Assert(TYPEALIGN(bndr, (uintptr_t)(ptr)) == (uintptr_t)(ptr))
 
#define StaticAssertDecl(condition, errmessage)    static_assert(condition, errmessage)
 
#define StaticAssertStmt(condition, errmessage)    do { static_assert(condition, errmessage); } while(0)
 
#define StaticAssertExpr(condition, errmessage)    ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; }))
 
#define AssertVariableIsOfType(varname, typename)
 
#define AssertVariableIsOfTypeMacro(varname, typename)
 
#define Max(x, y)   ((x) > (y) ? (x) : (y))
 
#define Min(x, y)   ((x) < (y) ? (x) : (y))
 
#define SIZE_T_ALIGN_MASK   (sizeof(size_t) - 1)
 
#define MemSet(start, val, len)
 
#define MemSetAligned(start, val, len)
 
#define FLOAT4_FITS_IN_INT16(num)    ((num) >= (float4) PG_INT16_MIN && (num) < -((float4) PG_INT16_MIN))
 
#define FLOAT4_FITS_IN_INT32(num)    ((num) >= (float4) PG_INT32_MIN && (num) < -((float4) PG_INT32_MIN))
 
#define FLOAT4_FITS_IN_INT64(num)    ((num) >= (float4) PG_INT64_MIN && (num) < -((float4) PG_INT64_MIN))
 
#define FLOAT8_FITS_IN_INT16(num)    ((num) >= (float8) PG_INT16_MIN && (num) < -((float8) PG_INT16_MIN))
 
#define FLOAT8_FITS_IN_INT32(num)    ((num) >= (float8) PG_INT32_MIN && (num) < -((float8) PG_INT32_MIN))
 
#define FLOAT8_FITS_IN_INT64(num)    ((num) >= (float8) PG_INT64_MIN && (num) < -((float8) PG_INT64_MIN))
 
#define INVERT_COMPARE_RESULT(var)    ((var) = ((var) < 0) ? 1 : -(var))
 
#define HIGHBIT   (0x80)
 
#define IS_HIGHBIT_SET(ch)   ((unsigned char)(ch) & HIGHBIT)
 
#define SQL_STR_DOUBLE(ch, escape_backslash)    ((ch) == '\'' || ((ch) == '\\' && (escape_backslash)))
 
#define ESCAPE_STRING_SYNTAX   'E'
 
#define STATUS_OK   (0)
 
#define STATUS_ERROR   (-1)
 
#define STATUS_EOF   (-2)
 
#define gettext(x)   (x)
 
#define dgettext(d, x)   (x)
 
#define ngettext(s, p, n)   ((n) == 1 ? (s) : (p))
 
#define dngettext(d, s, p, n)   ((n) == 1 ? (s) : (p))
 
#define _(x)   gettext(x)
 
#define gettext_noop(x)   (x)
 
#define PG_TEXTDOMAIN(domain)   (domain "-" PG_MAJORVERSION)
 
#define unconstify(underlying_type, expr)    ((underlying_type) (expr))
 
#define unvolatize(underlying_type, expr)    ((underlying_type) (expr))
 
#define PG_BINARY   0
 
#define PG_BINARY_A   "a"
 
#define PG_BINARY_R   "r"
 
#define PG_BINARY_W   "w"
 
#define PGDLLIMPORT
 
#define PGDLLEXPORT
 
#define SIGNAL_ARGS   int postgres_signal_arg
 

Typedefs

typedef void(* pg_funcptr_t) (void)
 
typedef void * Pointer
 
typedef int8_t int8
 
typedef int16_t int16
 
typedef int32_t int32
 
typedef int64_t int64
 
typedef uint8_t uint8
 
typedef uint16_t uint16
 
typedef uint32_t uint32
 
typedef uint64_t uint64
 
typedef uint8 bits8
 
typedef uint16 bits16
 
typedef uint32 bits32
 
typedef size_t Size
 
typedef unsigned int Index
 
typedef signed int Offset
 
typedef float float4
 
typedef double float8
 
typedef Oid regproc
 
typedef regproc RegProcedure
 
typedef uint32 TransactionId
 
typedef uint32 LocalTransactionId
 
typedef uint32 SubTransactionId
 
typedef TransactionId MultiXactId
 
typedef uint64 MultiXactOffset
 
typedef uint32 CommandId
 
typedef uint64 Oid8
 
typedef struct varlena bytea
 
typedef struct varlena text
 
typedef struct varlena BpChar
 
typedef struct varlena VarChar
 
typedef struct nameData NameData
 
typedef NameDataName
 
typedef struct PGAlignedBlock PGAlignedBlock
 
typedef struct PGIOAlignedBlock PGIOAlignedBlock
 
typedef struct PGAlignedXLogBlock PGAlignedXLogBlock
 
typedef uint16_t char16_t
 
typedef uint32_t char32_t
 

Functions

pg_noreturn void ExceptionalCondition (const char *conditionName, const char *fileName, int lineNumber)
 
int fdatasync (int fd)
 

Macro Definition Documentation

◆ _

#define _ (   x)    gettext(x)

Definition at line 1170 of file c.h.

◆ __has_attribute

#define __has_attribute (   attribute)    0

Definition at line 131 of file c.h.

◆ Assert

#define Assert (   condition)    ((void)true)

Definition at line 879 of file c.h.

◆ AssertMacro

#define AssertMacro (   condition)    ((void)true)

Definition at line 880 of file c.h.

◆ AssertPointerAlignment

#define AssertPointerAlignment (   ptr,
  bndr 
)     Assert(TYPEALIGN(bndr, (uintptr_t)(ptr)) == (uintptr_t)(ptr))

Definition at line 914 of file c.h.

◆ AssertVariableIsOfType

#define AssertVariableIsOfType (   varname,
  typename 
)
Value:
StaticAssertStmt(sizeof(varname) == sizeof(typename), \
CppAsString(varname) " does not have type " CppAsString(typename))
#define CppAsString(identifier)
Definition: c.h:433
#define StaticAssertStmt(condition, errmessage)
Definition: c.h:950

Definition at line 980 of file c.h.

◆ AssertVariableIsOfTypeMacro

#define AssertVariableIsOfTypeMacro (   varname,
  typename 
)
Value:
(StaticAssertExpr(sizeof(varname) == sizeof(typename), \
CppAsString(varname) " does not have type " CppAsString(typename)))
#define StaticAssertExpr(condition, errmessage)
Definition: c.h:956

Definition at line 983 of file c.h.

◆ BoolIsValid

#define BoolIsValid (   boolean)    ((boolean) == false || (boolean) == true)

Definition at line 782 of file c.h.

◆ BUFFERALIGN

#define BUFFERALIGN (   LEN)    TYPEALIGN(ALIGNOF_BUFFER, (LEN))

Definition at line 834 of file c.h.

◆ BUFFERALIGN_DOWN

#define BUFFERALIGN_DOWN (   LEN)    TYPEALIGN_DOWN(ALIGNOF_BUFFER, (LEN))

Definition at line 845 of file c.h.

◆ CACHELINEALIGN

#define CACHELINEALIGN (   LEN)    TYPEALIGN(PG_CACHE_LINE_SIZE, (LEN))

Definition at line 835 of file c.h.

◆ CppAsString

#define CppAsString (   identifier)    #identifier

Definition at line 433 of file c.h.

◆ CppAsString2

#define CppAsString2 (   x)    CppAsString(x)

Definition at line 434 of file c.h.

◆ CppConcat

#define CppConcat (   x,
  y 
)    x##y

Definition at line 435 of file c.h.

◆ dgettext

#define dgettext (   d,
  x 
)    (x)

Definition at line 1165 of file c.h.

◆ dngettext

#define dngettext (   d,
  s,
  p,
 
)    ((n) == 1 ? (s) : (p))

Definition at line 1167 of file c.h.

◆ DOUBLEALIGN

#define DOUBLEALIGN (   LEN)    TYPEALIGN(ALIGNOF_DOUBLE, (LEN))

Definition at line 831 of file c.h.

◆ DOUBLEALIGN_DOWN

#define DOUBLEALIGN_DOWN (   LEN)    TYPEALIGN_DOWN(ALIGNOF_DOUBLE, (LEN))

Definition at line 843 of file c.h.

◆ ESCAPE_STRING_SYNTAX

#define ESCAPE_STRING_SYNTAX   'E'

Definition at line 1151 of file c.h.

◆ FirstCommandId

#define FirstCommandId   ((CommandId) 0)

Definition at line 688 of file c.h.

◆ FLEXIBLE_ARRAY_MEMBER

#define FLEXIBLE_ARRAY_MEMBER   /* empty */

Definition at line 486 of file c.h.

◆ FLOAT4_FITS_IN_INT16

#define FLOAT4_FITS_IN_INT16 (   num)     ((num) >= (float4) PG_INT16_MIN && (num) < -((float4) PG_INT16_MIN))

Definition at line 1081 of file c.h.

◆ FLOAT4_FITS_IN_INT32

#define FLOAT4_FITS_IN_INT32 (   num)     ((num) >= (float4) PG_INT32_MIN && (num) < -((float4) PG_INT32_MIN))

Definition at line 1083 of file c.h.

◆ FLOAT4_FITS_IN_INT64

#define FLOAT4_FITS_IN_INT64 (   num)     ((num) >= (float4) PG_INT64_MIN && (num) < -((float4) PG_INT64_MIN))

Definition at line 1085 of file c.h.

◆ FLOAT8_FITS_IN_INT16

#define FLOAT8_FITS_IN_INT16 (   num)     ((num) >= (float8) PG_INT16_MIN && (num) < -((float8) PG_INT16_MIN))

Definition at line 1087 of file c.h.

◆ FLOAT8_FITS_IN_INT32

#define FLOAT8_FITS_IN_INT32 (   num)     ((num) >= (float8) PG_INT32_MIN && (num) < -((float8) PG_INT32_MIN))

Definition at line 1089 of file c.h.

◆ FLOAT8_FITS_IN_INT64

#define FLOAT8_FITS_IN_INT64 (   num)     ((num) >= (float8) PG_INT64_MIN && (num) < -((float8) PG_INT64_MIN))

Definition at line 1091 of file c.h.

◆ FLOAT8PASSBYVAL

#define FLOAT8PASSBYVAL   true

Definition at line 656 of file c.h.

◆ gettext

#define gettext (   x)    (x)

Definition at line 1164 of file c.h.

◆ gettext_noop

#define gettext_noop (   x)    (x)

Definition at line 1181 of file c.h.

◆ HAVE_INT64_TIMESTAMP

#define HAVE_INT64_TIMESTAMP

Definition at line 619 of file c.h.

◆ HIGHBIT

#define HIGHBIT   (0x80)

Definition at line 1139 of file c.h.

◆ INT64_FORMAT

#define INT64_FORMAT   "%" PRId64

Definition at line 570 of file c.h.

◆ INT64CONST

#define INT64CONST (   x)    INT64_C(x)

Definition at line 566 of file c.h.

◆ INTALIGN

#define INTALIGN (   LEN)    TYPEALIGN(ALIGNOF_INT, (LEN))

Definition at line 829 of file c.h.

◆ INTALIGN_DOWN

#define INTALIGN_DOWN (   LEN)    TYPEALIGN_DOWN(ALIGNOF_INT, (LEN))

Definition at line 841 of file c.h.

◆ InvalidCommandId

#define InvalidCommandId   (~(CommandId)0)

Definition at line 689 of file c.h.

◆ InvalidOid8

#define InvalidOid8   ((Oid8) 0)

Definition at line 694 of file c.h.

◆ InvalidSubTransactionId

#define InvalidSubTransactionId   ((SubTransactionId) 0)

Definition at line 678 of file c.h.

◆ INVERT_COMPARE_RESULT

#define INVERT_COMPARE_RESULT (   var)     ((var) = ((var) < 0) ? 1 : -(var))

Definition at line 1105 of file c.h.

◆ IS_HIGHBIT_SET

#define IS_HIGHBIT_SET (   ch)    ((unsigned char)(ch) & HIGHBIT)

Definition at line 1140 of file c.h.

◆ lengthof

#define lengthof (   array)    (sizeof (array) / sizeof ((array)[0]))

Definition at line 809 of file c.h.

◆ likely

#define likely (   x)    ((x) != 0)

Definition at line 417 of file c.h.

◆ LONGALIGN

#define LONGALIGN (   LEN)    TYPEALIGN(ALIGNOF_LONG, (LEN))

Definition at line 830 of file c.h.

◆ LONGALIGN_DOWN

#define LONGALIGN_DOWN (   LEN)    TYPEALIGN_DOWN(ALIGNOF_LONG, (LEN))

Definition at line 842 of file c.h.

◆ Max

#define Max (   x,
  y 
)    ((x) > (y) ? (x) : (y))

Definition at line 997 of file c.h.

◆ MAXALIGN

#define MAXALIGN (   LEN)    TYPEALIGN(MAXIMUM_ALIGNOF, (LEN))

Definition at line 832 of file c.h.

◆ MAXALIGN64

#define MAXALIGN64 (   LEN)    TYPEALIGN64(MAXIMUM_ALIGNOF, (LEN))

Definition at line 857 of file c.h.

◆ MAXALIGN_DOWN

#define MAXALIGN_DOWN (   LEN)    TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN))

Definition at line 844 of file c.h.

◆ MemSet

#define MemSet (   start,
  val,
  len 
)
Value:
do \
{ \
/* must be void* because we don't know if it is size_t aligned yet */ \
void *_vstart = (void *) (start); \
int _val = (val); \
Size _len = (len); \
if ((((uintptr_t) _vstart) & SIZE_T_ALIGN_MASK) == 0 && \
(_len & SIZE_T_ALIGN_MASK) == 0 && \
_val == 0 && \
_len <= MEMSET_LOOP_LIMIT && \
/* \
* If MEMSET_LOOP_LIMIT == 0, optimizer should find \
* the whole "if" false at compile time. \
*/ \
MEMSET_LOOP_LIMIT != 0) \
{ \
size_t *_start = (size_t *) _vstart; \
size_t *_stop = (size_t *) ((char *) _start + _len); \
while (_start < _stop) \
*_start++ = 0; \
} \
else \
memset(_vstart, _val, _len); \
} while (0)
#define SIZE_T_ALIGN_MASK
Definition: c.h:1007
return str start
long val
Definition: informix.c:689
if(TABLE==NULL||TABLE_index==NULL)
Definition: isn.c:81
const void size_t len

Definition at line 1019 of file c.h.

◆ MemSetAligned

#define MemSetAligned (   start,
  val,
  len 
)
Value:
do \
{ \
size_t *_start = (size_t *) (start); \
int _val = (val); \
Size _len = (len); \
if ((_len & SIZE_T_ALIGN_MASK) == 0 && \
_val == 0 && \
_len <= MEMSET_LOOP_LIMIT && \
MEMSET_LOOP_LIMIT != 0) \
{ \
size_t *_stop = (size_t *) ((char *) _start + _len); \
while (_start < _stop) \
*_start++ = 0; \
} \
else \
memset(_start, _val, _len); \
} while (0)

Definition at line 1049 of file c.h.

◆ Min

#define Min (   x,
  y 
)    ((x) < (y) ? (x) : (y))

Definition at line 1003 of file c.h.

◆ NameStr

#define NameStr (   name)    ((name).data)

Definition at line 771 of file c.h.

◆ ngettext

#define ngettext (   s,
  p,
 
)    ((n) == 1 ? (s) : (p))

Definition at line 1166 of file c.h.

◆ OffsetToPointer

#define OffsetToPointer (   base,
  offset 
)     ((void *)((char *) base + offset))

Definition at line 791 of file c.h.

◆ OID8_FORMAT

#define OID8_FORMAT   "%" PRIu64

Definition at line 572 of file c.h.

◆ OID8_MAX

#define OID8_MAX   UINT64_MAX

Definition at line 695 of file c.h.

◆ Oid8IsValid

#define Oid8IsValid (   objectId)    ((bool) ((objectId) != InvalidOid8))

Definition at line 796 of file c.h.

◆ OidIsValid

#define OidIsValid (   objectId)    ((bool) ((objectId) != InvalidOid))

Definition at line 794 of file c.h.

◆ pg_assume

#define pg_assume (   expr)    ((void) 0)

Definition at line 403 of file c.h.

◆ pg_attribute_always_inline

#define pg_attribute_always_inline   inline

Definition at line 285 of file c.h.

◆ pg_attribute_cold

#define pg_attribute_cold

Definition at line 326 of file c.h.

◆ pg_attribute_format_arg

#define pg_attribute_format_arg (   a)

Definition at line 247 of file c.h.

◆ pg_attribute_hot

#define pg_attribute_hot

Definition at line 332 of file c.h.

◆ pg_attribute_no_sanitize_address

#define pg_attribute_no_sanitize_address ( )

Definition at line 183 of file c.h.

◆ pg_attribute_no_sanitize_alignment

#define pg_attribute_no_sanitize_alignment ( )

Definition at line 195 of file c.h.

◆ pg_attribute_nonnull

#define pg_attribute_nonnull (   ...)

Definition at line 206 of file c.h.

◆ pg_attribute_printf

#define pg_attribute_printf (   f,
  a 
)

Definition at line 248 of file c.h.

◆ pg_attribute_target

#define pg_attribute_target (   ...)

Definition at line 218 of file c.h.

◆ pg_attribute_unused

#define pg_attribute_unused ( )

Definition at line 138 of file c.h.

◆ PG_BINARY

#define PG_BINARY   0

Definition at line 1258 of file c.h.

◆ PG_BINARY_A

#define PG_BINARY_A   "a"

Definition at line 1259 of file c.h.

◆ PG_BINARY_R

#define PG_BINARY_R   "r"

Definition at line 1260 of file c.h.

◆ PG_BINARY_W

#define PG_BINARY_W   "w"

Definition at line 1261 of file c.h.

◆ PG_INT16_MAX

#define PG_INT16_MAX   INT16_MAX

Definition at line 606 of file c.h.

◆ PG_INT16_MIN

#define PG_INT16_MIN   INT16_MIN

Definition at line 605 of file c.h.

◆ PG_INT32_MAX

#define PG_INT32_MAX   INT32_MAX

Definition at line 609 of file c.h.

◆ PG_INT32_MIN

#define PG_INT32_MIN   INT32_MIN

Definition at line 608 of file c.h.

◆ PG_INT64_MAX

#define PG_INT64_MAX   INT64_MAX

Definition at line 612 of file c.h.

◆ PG_INT64_MIN

#define PG_INT64_MIN   INT64_MIN

Definition at line 611 of file c.h.

◆ PG_INT8_MAX

#define PG_INT8_MAX   INT8_MAX

Definition at line 603 of file c.h.

◆ PG_INT8_MIN

#define PG_INT8_MIN   INT8_MIN

Definition at line 602 of file c.h.

◆ pg_nodiscard

#define pg_nodiscard

Definition at line 150 of file c.h.

◆ pg_noinline

#define pg_noinline

Definition at line 301 of file c.h.

◆ pg_noreturn

#define pg_noreturn

Definition at line 170 of file c.h.

◆ PG_PRINTF_ATTRIBUTE

#define PG_PRINTF_ATTRIBUTE   PG_C_PRINTF_ATTRIBUTE

Definition at line 237 of file c.h.

◆ pg_restrict

#define pg_restrict   restrict

Definition at line 115 of file c.h.

◆ PG_TEXTDOMAIN

#define PG_TEXTDOMAIN (   domain)    (domain "-" PG_MAJORVERSION)

Definition at line 1199 of file c.h.

◆ PG_UINT16_MAX

#define PG_UINT16_MAX   UINT16_MAX

Definition at line 607 of file c.h.

◆ PG_UINT32_MAX

#define PG_UINT32_MAX   UINT32_MAX

Definition at line 610 of file c.h.

◆ PG_UINT64_MAX

#define PG_UINT64_MAX   UINT64_MAX

Definition at line 613 of file c.h.

◆ PG_UINT8_MAX

#define PG_UINT8_MAX   UINT8_MAX

Definition at line 604 of file c.h.

◆ pg_unreachable

#define pg_unreachable ( )    abort()

Definition at line 347 of file c.h.

◆ PG_USED_FOR_ASSERTS_ONLY

#define PG_USED_FOR_ASSERTS_ONLY   pg_attribute_unused()

Definition at line 229 of file c.h.

◆ PGDLLEXPORT

#define PGDLLEXPORT

Definition at line 1320 of file c.h.

◆ PGDLLIMPORT

#define PGDLLIMPORT

Definition at line 1305 of file c.h.

◆ PointerIsAligned

#define PointerIsAligned (   pointer,
  type 
)     (((uintptr_t)(pointer) % (sizeof (type))) == 0)

Definition at line 788 of file c.h.

◆ RegProcedureIsValid

#define RegProcedureIsValid (   p)    OidIsValid(p)

Definition at line 798 of file c.h.

◆ SHORTALIGN

#define SHORTALIGN (   LEN)    TYPEALIGN(ALIGNOF_SHORT, (LEN))

Definition at line 828 of file c.h.

◆ SHORTALIGN_DOWN

#define SHORTALIGN_DOWN (   LEN)    TYPEALIGN_DOWN(ALIGNOF_SHORT, (LEN))

Definition at line 840 of file c.h.

◆ SIGNAL_ARGS

#define SIGNAL_ARGS   int postgres_signal_arg

Definition at line 1334 of file c.h.

◆ SIZE_T_ALIGN_MASK

#define SIZE_T_ALIGN_MASK   (sizeof(size_t) - 1)

Definition at line 1007 of file c.h.

◆ SQL_STR_DOUBLE

#define SQL_STR_DOUBLE (   ch,
  escape_backslash 
)     ((ch) == '\'' || ((ch) == '\\' && (escape_backslash)))

Definition at line 1148 of file c.h.

◆ StaticAssertDecl

#define StaticAssertDecl (   condition,
  errmessage 
)     static_assert(condition, errmessage)

Definition at line 948 of file c.h.

◆ StaticAssertExpr

#define StaticAssertExpr (   condition,
  errmessage 
)     ((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; }))

Definition at line 956 of file c.h.

◆ StaticAssertStmt

#define StaticAssertStmt (   condition,
  errmessage 
)     do { static_assert(condition, errmessage); } while(0)

Definition at line 950 of file c.h.

◆ STATUS_EOF

#define STATUS_EOF   (-2)

Definition at line 1156 of file c.h.

◆ STATUS_ERROR

#define STATUS_ERROR   (-1)

Definition at line 1155 of file c.h.

◆ STATUS_OK

#define STATUS_OK   (0)

Definition at line 1154 of file c.h.

◆ TopSubTransactionId

#define TopSubTransactionId   ((SubTransactionId) 1)

Definition at line 679 of file c.h.

◆ TYPEALIGN

#define TYPEALIGN (   ALIGNVAL,
  LEN 
)     (((uintptr_t) (LEN) + ((ALIGNVAL) - 1)) & ~((uintptr_t) ((ALIGNVAL) - 1)))

Definition at line 825 of file c.h.

◆ TYPEALIGN64

#define TYPEALIGN64 (   ALIGNVAL,
  LEN 
)     (((uint64) (LEN) + ((ALIGNVAL) - 1)) & ~((uint64) ((ALIGNVAL) - 1)))

Definition at line 853 of file c.h.

◆ TYPEALIGN_DOWN

#define TYPEALIGN_DOWN (   ALIGNVAL,
  LEN 
)     (((uintptr_t) (LEN)) & ~((uintptr_t) ((ALIGNVAL) - 1)))

Definition at line 837 of file c.h.

◆ UINT64_FORMAT

#define UINT64_FORMAT   "%" PRIu64

Definition at line 571 of file c.h.

◆ UINT64CONST

#define UINT64CONST (   x)    UINT64_C(x)

Definition at line 567 of file c.h.

◆ unconstify

#define unconstify (   underlying_type,
  expr 
)     ((underlying_type) (expr))

Definition at line 1230 of file c.h.

◆ unlikely

#define unlikely (   x)    ((x) != 0)

Definition at line 418 of file c.h.

◆ unvolatize

#define unvolatize (   underlying_type,
  expr 
)     ((underlying_type) (expr))

Definition at line 1232 of file c.h.

◆ VA_ARGS_NARGS

#define VA_ARGS_NARGS (   ...)
Value:
VA_ARGS_NARGS_(__VA_ARGS__, \
63,62,61,60, \
59,58,57,56,55,54,53,52,51,50, \
49,48,47,46,45,44,43,42,41,40, \
39,38,37,36,35,34,33,32,31,30, \
29,28,27,26,25,24,23,22,21,20, \
19,18,17,16,15,14,13,12,11,10, \
9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define VA_ARGS_NARGS_(_01, _02, _03, _04, _05, _06, _07, _08, _09, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N,...)
Definition: c.h:461

Definition at line 451 of file c.h.

◆ VA_ARGS_NARGS_

#define VA_ARGS_NARGS_ (   _01,
  _02,
  _03,
  _04,
  _05,
  _06,
  _07,
  _08,
  _09,
  _10,
  _11,
  _12,
  _13,
  _14,
  _15,
  _16,
  _17,
  _18,
  _19,
  _20,
  _21,
  _22,
  _23,
  _24,
  _25,
  _26,
  _27,
  _28,
  _29,
  _30,
  _31,
  _32,
  _33,
  _34,
  _35,
  _36,
  _37,
  _38,
  _39,
  _40,
  _41,
  _42,
  _43,
  _44,
  _45,
  _46,
  _47,
  _48,
  _49,
  _50,
  _51,
  _52,
  _53,
  _54,
  _55,
  _56,
  _57,
  _58,
  _59,
  _60,
  _61,
  _62,
  _63,
  N,
  ... 
)     (N)

Definition at line 461 of file c.h.

◆ VARHDRSZ

#define VARHDRSZ   ((int32) sizeof(int32))

Definition at line 717 of file c.h.

Typedef Documentation

◆ bits16

typedef uint16 bits16

Definition at line 560 of file c.h.

◆ bits32

typedef uint32 bits32

Definition at line 561 of file c.h.

◆ bits8

typedef uint8 bits8

Definition at line 559 of file c.h.

◆ BpChar

typedef struct varlena BpChar

Definition at line 726 of file c.h.

◆ bytea

typedef struct varlena bytea

Definition at line 724 of file c.h.

◆ char16_t

typedef uint16_t char16_t

Definition at line 1376 of file c.h.

◆ char32_t

typedef uint32_t char32_t

Definition at line 1377 of file c.h.

◆ CommandId

typedef uint32 CommandId

Definition at line 686 of file c.h.

◆ float4

typedef float float4

Definition at line 649 of file c.h.

◆ float8

typedef double float8

Definition at line 650 of file c.h.

◆ Index

typedef unsigned int Index

Definition at line 634 of file c.h.

◆ int16

typedef int16_t int16

Definition at line 547 of file c.h.

◆ int32

typedef int32_t int32

Definition at line 548 of file c.h.

◆ int64

typedef int64_t int64

Definition at line 549 of file c.h.

◆ int8

typedef int8_t int8

Definition at line 546 of file c.h.

◆ LocalTransactionId

Definition at line 674 of file c.h.

◆ MultiXactId

Definition at line 682 of file c.h.

◆ MultiXactOffset

Definition at line 684 of file c.h.

◆ Name

typedef NameData* Name

Definition at line 769 of file c.h.

◆ NameData

typedef struct nameData NameData

◆ Offset

typedef signed int Offset

Definition at line 644 of file c.h.

◆ Oid8

typedef uint64 Oid8

Definition at line 692 of file c.h.

◆ pg_funcptr_t

typedef void(* pg_funcptr_t) (void)

Definition at line 476 of file c.h.

◆ PGAlignedBlock

◆ PGAlignedXLogBlock

◆ PGIOAlignedBlock

◆ Pointer

typedef void* Pointer

Definition at line 543 of file c.h.

◆ regproc

typedef Oid regproc

Definition at line 669 of file c.h.

◆ RegProcedure

Definition at line 670 of file c.h.

◆ Size

typedef size_t Size

Definition at line 625 of file c.h.

◆ SubTransactionId

Definition at line 676 of file c.h.

◆ text

typedef struct varlena text

Definition at line 725 of file c.h.

◆ TransactionId

Definition at line 672 of file c.h.

◆ uint16

typedef uint16_t uint16

Definition at line 551 of file c.h.

◆ uint32

typedef uint32_t uint32

Definition at line 552 of file c.h.

◆ uint64

typedef uint64_t uint64

Definition at line 553 of file c.h.

◆ uint8

typedef uint8_t uint8

Definition at line 550 of file c.h.

◆ VarChar

typedef struct varlena VarChar

Definition at line 727 of file c.h.

Function Documentation

◆ ExceptionalCondition()

pg_noreturn void ExceptionalCondition ( const char *  conditionName,
const char *  fileName,
int  lineNumber 
)

Definition at line 30 of file assert.c.

33{
34 /* Report the failure on stderr (or local equivalent) */
35 if (!conditionName || !fileName)
36 write_stderr("TRAP: ExceptionalCondition: bad arguments in PID %d\n",
37 (int) getpid());
38 else
39 write_stderr("TRAP: failed Assert(\"%s\"), File: \"%s\", Line: %d, PID: %d\n",
40 conditionName, fileName, lineNumber, (int) getpid());
41
42 /* Usually this shouldn't be needed, but make sure the msg went out */
43 fflush(stderr);
44
45 /* If we have support for it, dump a simple backtrace */
46#ifdef HAVE_BACKTRACE_SYMBOLS
47 {
48 void *buf[100];
49 int nframes;
50
51 nframes = backtrace(buf, lengthof(buf));
52 backtrace_symbols_fd(buf, nframes, fileno(stderr));
53 }
54#endif
55
56 /*
57 * If configured to do so, sleep indefinitely to allow user to attach a
58 * debugger. It would be nice to use pg_usleep() here, but that can sleep
59 * at most 2G usec or ~33 minutes, which seems too short.
60 */
61#ifdef SLEEP_ON_ASSERT
62 sleep(1000000);
63#endif
64
65 abort();
66}
#define write_stderr(str)
Definition: parallel.c:186
#define lengthof(array)
Definition: c.h:809
static char buf[DEFAULT_XLOG_SEG_SIZE]
Definition: pg_test_fsync.c:71

References buf, lengthof, and write_stderr.

Referenced by pg_re_throw().

◆ fdatasync()

int fdatasync ( int  fd)

Definition at line 23 of file win32fdatasync.c.

24{
25 IO_STATUS_BLOCK iosb;
26 NTSTATUS status;
27 HANDLE handle;
28
29 handle = (HANDLE) _get_osfhandle(fd);
30 if (handle == INVALID_HANDLE_VALUE)
31 {
32 errno = EBADF;
33 return -1;
34 }
35
36 if (initialize_ntdll() < 0)
37 return -1;
38
39 memset(&iosb, 0, sizeof(iosb));
40 status = pg_NtFlushBuffersFileEx(handle,
42 NULL,
43 0,
44 &iosb);
45
46 if (NT_SUCCESS(status))
47 return 0;
48
50 return -1;
51}
static int fd(const char *x, int i)
Definition: preproc-init.c:105
void _dosmaperr(unsigned long)
Definition: win32error.c:177
PGDLLIMPORT NtFlushBuffersFileEx_t pg_NtFlushBuffersFileEx
Definition: win32ntdll.c:22
int initialize_ntdll(void)
Definition: win32ntdll.c:39
#define FLUSH_FLAGS_FILE_DATA_SYNC_ONLY
Definition: win32ntdll.h:21
PGDLLIMPORT RtlNtStatusToDosError_t pg_RtlNtStatusToDosError
Definition: win32ntdll.c:21

References _dosmaperr(), fd(), FLUSH_FLAGS_FILE_DATA_SYNC_ONLY, initialize_ntdll(), pg_NtFlushBuffersFileEx, and pg_RtlNtStatusToDosError.

Referenced by pg_fdatasync(), and test_sync().