From 07b51a41bfbc7c180f3729d954c407a14af5aed7 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 5 Feb 2024 01:22:46 -0800 Subject: [PATCH] Compile with lnzpq --- nz_include/acPwcache.h | 51 +++ nz_include/bitarch.h | 35 ++ nz_include/c.h | 876 ++++++++++++++++++++++++++++++++++++++ nz_include/comtypes.h | 85 ++++ nz_include/libpq-fe.h | 508 ++++++++++++++++++++++ nz_include/nzfieldtype.h | 632 +++++++++++++++++++++++++++ nz_include/os.h | 115 +++++ nz_include/pg_config.h | 823 +++++++++++++++++++++++++++++++++++ nz_include/postgres_ext.h | 88 ++++ nz_lib/libnzpq.so | Bin 0 -> 471096 bytes psycopg/connection.h | 2 +- setup.py | 7 +- 12 files changed, 3220 insertions(+), 2 deletions(-) create mode 100644 nz_include/acPwcache.h create mode 100755 nz_include/bitarch.h create mode 100644 nz_include/c.h create mode 100644 nz_include/comtypes.h create mode 100644 nz_include/libpq-fe.h create mode 100644 nz_include/nzfieldtype.h create mode 100644 nz_include/os.h create mode 100644 nz_include/pg_config.h create mode 100644 nz_include/postgres_ext.h create mode 100755 nz_lib/libnzpq.so diff --git a/nz_include/acPwcache.h b/nz_include/acPwcache.h new file mode 100644 index 00000000..73122484 --- /dev/null +++ b/nz_include/acPwcache.h @@ -0,0 +1,51 @@ +#ifndef ACPWCACHE_INCLUDED +#define ACPWCACHE_INCLUDED + +/* + * "C" API for manipulating the password cache + * + * It is not intended for appcomps code to use this interface directly. Use + * the C++ API in acPasswordCache.h. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* lookup the cached password for host and username. Caller must free the + * result with free() */ +bool pwcache_lookup_no_resolve(const char *host, const char *username, char **password); +bool pwcache_lookup(const char *host, const char *username, char **password); + +/* remove cached password entry for username and host */ +bool pwcache_delete(const char *host, const char *username); + +/* remove all cached password entries */ +bool pwcache_clear(); + +/* save password for host and username */ +bool pwcache_save(const char *host, const char *username, const char *password); + +/* get the current list of hosts/usernames in the cache and return number of + * entries, or -1 on error */ +int pwcache_enum(char ***hosts, char ***usernames); + +/* free the arrays returned by pwcache_enum */ +void pwcache_free_enum(char **hosts, char **usernames); + +/* get the error message for the prior request */ +const char *pwcache_errmsg(); + +bool pwcache_resetkey(bool none); + +/* Control verbose output */ +void pwcache_set_verbose(bool verbose); + +/* Control Resolving hostnames */ +void pwcache_set_resolve_mode(bool resolve); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/nz_include/bitarch.h b/nz_include/bitarch.h new file mode 100755 index 00000000..7762569d --- /dev/null +++ b/nz_include/bitarch.h @@ -0,0 +1,35 @@ +#ifndef _BITARCH_H_ +#define _BITARCH_H_ +/* -*-C-*- + * (C) Copyright IBM Corp. 2001, 2012 All Rights Reserved. + */ + +/* + * Set this to 1 to have 64 bit SPU + */ +#ifndef SPU_64BIT +#define SPU_64BIT 1 +#endif + +/* + * Set this to 1 for 64 bit HOST. + * It's turned off yet but once the host is 64 bit we can turn it on again + */ +#ifndef HOST_64BIT +#define HOST_64BIT 1 +#endif + +/* explicitly defined VARHDRSZ */ + +/* + * Check if following items are in sync: + * class NzVarlena in nde/misc/geninl.h + * class NzVarlena in nde/expr/pgwrap.h + * struct varlena in pg/include/c.h + * struct varattrib in pg/include/postgres.h + */ + +#define VARLENA_HDR_64BIT 1 +#define VARHDRSZ ((uint32)16) + +#endif /* _BITARCH_H_ */ diff --git a/nz_include/c.h b/nz_include/c.h new file mode 100644 index 00000000..f2abf720 --- /dev/null +++ b/nz_include/c.h @@ -0,0 +1,876 @@ +/*------------------------------------------------------------------------- + * + * c.h + * Fundamental C definitions. This is included by every .c file in + * PostgreSQL (via either postgres.h or postgres_fe.h, as appropriate). + * + * Note that the definitions here are not intended to be exposed to + * clients of the frontend interface libraries --- so we don't worry + * much about polluting the namespace with lots of stuff... + * + * + * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + *------------------------------------------------------------------------- + */ +/* + *---------------------------------------------------------------- + * TABLE OF CONTENTS + * + * When adding stuff to this file, please try to put stuff + * into the relevant section, or add new sections as appropriate. + * + * section description + * ------- ------------------------------------------------ + * 0) config.h and standard system headers + * 1) hacks to cope with non-ANSI C compilers + * 2) bool, true, false, TRUE, FALSE, NULL + * 3) standard system types + * 4) IsValid macros for system types + * 5) offsetof, lengthof, endof, alignment + * 6) widely useful macros + * 7) random stuff + * 8) system-specific hacks + * 9) assertions + + * + * NOTE: since this file is included by both frontend and backend modules, + * it's almost certainly wrong to put an "extern" declaration here. + * typedefs and macros are the kind of thing that might go here. + * + *---------------------------------------------------------------- + */ +#ifndef C_H +#define C_H + +#include "postgres_ext.h" + +/* For C++, we want all the ISO C standard macros as well. */ +#ifndef __STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +#endif +#ifndef __STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +#endif +#ifndef __STDC_FORMAT_MACROS +# define __STDC_FORMAT_MACROS +#endif + +#include "postgres_ext.h" + +/* We have to include stdlib.h here because it defines many of these macros + on some platforms, and we only want our definitions used if stdlib.h doesn't + have its own. The same goes for stddef and stdarg if present. +*/ + +#include "pg_config.h" + +#include +#include +#include +#include +#include +#include +#ifdef STRING_H_WITH_STRINGS_H +# include +#endif + +#include +#ifdef __CYGWIN__ +# include /* ensure O_BINARY is available */ +#endif +#ifdef HAVE_SUPPORTDEFS_H +# include +#endif + +#ifndef WIN32 +# include "bitarch.h" +#endif + +/* ---------------------------------------------------------------- + * Section 1: hacks to cope with non-ANSI C compilers + * + * type prefixes (const, signed, volatile, inline) are now handled in config.h. + * ---------------------------------------------------------------- + */ + +/* + * CppAsString + * Convert the argument to a string, usingclause the C preprocessor. + * CppConcat + * Concatenate two arguments together, usingclause the C preprocessor. + * + * Note: the standard Autoconf macro AC_C_STRINGIZE actually only checks + * whether #identifier works, but if we have that we likely have ## too. + */ +#if defined(HAVE_STRINGIZE) + +# define CppAsString(identifier) # identifier +# define CppConcat(x, y) x##y + +#else /* !HAVE_STRINGIZE */ + +# 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 + +#endif /* !HAVE_STRINGIZE */ + +/* + * dummyret is used to set return values in macros that use ?: to make + * assignments. gcc wants these to be void, other compilers like char + */ +#ifdef __GNUC__ /* GNU cc */ +# define dummyret void +#else +# define dummyret char +#endif + +/* + * Append PG_USED_FOR_ASSERTS_ONLY to definitions of variables that are only + * used in assert-enabled builds, to avoid compiler warnings about unused + * variables in assert-disabled builds. + */ +#ifdef USE_ASSERT_CHECKING +# define PG_USED_FOR_ASSERTS_ONLY +#else +# define PG_USED_FOR_ASSERTS_ONLY pg_attribute_unused() +#endif + +#define PG_PRINTF_ATTRIBUTE printf +/* GCC and XLC support format attributes */ +#if defined(__GNUC__) || defined(__IBMC__) +# define pg_attribute_format_arg(a) __attribute__((format_arg(a))) +# define pg_attribute_printf(f, a) __attribute__((format(PG_PRINTF_ATTRIBUTE, f, a))) +#else +# define pg_attribute_format_arg(a) +# define pg_attribute_printf(f, a) +#endif + +/* + * Hints to the compiler about the likelihood of a branch. Both likely() and + * unlikely() return the boolean value of the contained expression. + * + * These should only be used sparingly, in very hot code paths. It's very easy + * to mis-estimate likelihoods. + */ +#if __GNUC__ >= 3 +# define likely(x) __builtin_expect((x) != 0, 1) +# define unlikely(x) __builtin_expect((x) != 0, 0) +#else +# define likely(x) ((x) != 0) +# define unlikely(x) ((x) != 0) +#endif + +/* ---------------------------------------------------------------- + * Section 2: bool, true, false, TRUE, FALSE, NULL + * ---------------------------------------------------------------- + */ +/* + * bool + * Boolean value, either true or false. + * + */ + +/* BeOS defines bool already, but the compiler chokes on the + * #ifndef unless we wrap it in this check. + */ +#ifndef __BEOS__ + +# ifndef __cplusplus +# ifndef bool_defined +# define bool_defined +typedef char bool; +# endif /* ndef bool */ + +# ifndef true +# define true 1 +# endif + +# ifndef false +# define false 0 +# endif +# endif /* not C++ */ + +#endif /* __BEOS__ */ + +typedef bool *BoolPtr; + +#ifndef TRUE +# define TRUE 1 +#endif + +#ifndef FALSE +# define FALSE 0 +#endif + +/* + * NULL + * Null pointer. + */ +#ifndef NULL +# define NULL ((void *) 0) +#endif + +/* ---------------------------------------------------------------- + * Section 3: standard system types + * ---------------------------------------------------------------- + */ + +/* + * 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; + +/* + * intN + * Signed integer, EXACTLY N BITS IN SIZE, + * used for numerical computations and the + * frontend/backend protocol. + */ +#ifndef __BEOS__ /* this shouldn't be required, but is is! */ +# if !AIX +typedef signed char int8; /* == 8 bits */ +typedef signed short int16; /* == 16 bits */ +typedef signed int int32; /* == 32 bits */ +# endif +#endif /* __BEOS__ */ + +/* + * uintN + * Unsigned integer, EXACTLY N BITS IN SIZE, + * used for numerical computations and the + * frontend/backend protocol. + */ +#ifndef __BEOS__ /* this shouldn't be required, but is is! */ +typedef unsigned char uint8; /* == 8 bits */ +typedef unsigned short uint16; /* == 16 bits */ +typedef unsigned int uint32; /* == 32 bits */ +#endif /* __BEOS__ */ + +/* + * 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 */ + +/* + * 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. + * + * XXX: these typedefs are now deprecated in favor of float4 and float8. + * They will eventually go away. + */ +typedef float float32data; +typedef double float64data; +typedef float *float32; +typedef double *float64; + +/* + * 64-bit integers -- use standard types for these + */ +typedef int64_t int64; +typedef uint64_t uint64; + +#define INT64CONST(x) INT64_C(x) +#define UINT64CONST(x) UINT64_C(x) + +/* + * Size + * Size of any memory resident object, as returned by sizeof. + */ +typedef size_t Size; + +/* + * Index + * Index into any memory resident array. + * + * Note: + * Indices are non negative. + */ +typedef unsigned int Index; + +/* + * 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; + +/* + * Common Postgres datatype names (as used in the catalogs) + */ +typedef char int1; +typedef int16 int2; +typedef int32 int4; +typedef float float4; +typedef double float8; + +typedef int8 timestamp; +typedef int4 date; +typedef int4 abstime; + +/* + * Oid, RegProcedure, TransactionId, CommandId + */ + +/* typedef Oid is in postgres_ext.h */ + +/* unfortunately, both regproc and RegProcedure are used */ +typedef Oid regproc; +typedef Oid RegProcedure; + +typedef uint32 TransactionId; + +#define InvalidTransactionId 0 + +typedef uint32 CommandId; + +#define FirstCommandId 0 + +/* + * Array indexing support + */ +#define MAXDIM 6 +typedef struct +{ + int indx[MAXDIM]; +} IntArrayMAXDIM; // NZ: blast name conflict + +/* ---------------- + * Variable-length datatypes all share the 'struct varlena' header. + * + * NOTE: for TOASTable types, this is an oversimplification, since the value + * may be compressed or moved out-of-line. However datatype-specific + * routines are mostly content to deal with de-TOASTed values only, and of + * course client-side routines should never see a TOASTed value. See + * postgres.h for details of the TOASTed form. + * ---------------- + */ +// The following items must be in sync: +// class NzVarlena in nde/misc/geninl.h +// class NzVarlena in nde/expr/pgwrap.h +// struct varlena in pg/include/c.h +// struct varattrib in pg/include/postgres.h +// struct varattrib in udx-source/udx-impls/v2/UDX_Varargs.cpp +struct varlena +{ + int32 vl_len; + int32 vl_fixedlen; + union + { + char *vl_ptr; + int64 vl_align; // allow for 64bit pointers + }; + char vl_dat[1]; +}; + +/* + * These widely-used datatypes are just a varlena header and the data bytes. + * There is no terminating null or anything like that --- the data length is + * always VARSIZE(ptr) - VARHDRSZ. + */ +typedef struct varlena bytea; +typedef struct varlena text; +typedef struct varlena BpChar; /* blank-padded char, ie SQL char(n) */ +typedef struct varlena VarChar; /* var-length char, ie SQL varchar(n) */ +typedef struct varlena VarBin; /* var-length binary, ie SQL varbin(n) */ +typedef struct varlena *JsonPtr; +typedef struct _Jsonb *JsonbPtr; +typedef struct _JsonPath *JsonPathPtr; +/* + * Fixed-length array types (these are not varlena's!) + */ + +typedef int2 int2vector[INDEX_MAX_KEYS]; +typedef Oid oidvector[INDEX_MAX_KEYS]; + +/* + * We want NameData to have length NAMEDATALEN and int alignment, + * because that's how the data type 'name' is defined in pg_type. + * Use a union to make sure the compiler agrees. + */ +typedef union nameData +{ + char data[NAMEDATALEN]; + int alignmentDummy; +} NameData; +typedef NameData *Name; + +#define NameStr(name) ((name).data) + +/* + * stdint.h limits aren't guaranteed to be present and aren't guaranteed to + * have compatible types with our fixed width types. So just define our own. + */ +#define PG_INT8_MIN (-0x7F - 1) +#define PG_INT8_MAX (0x7F) +#define PG_UINT8_MAX (0xFF) +#define PG_INT16_MIN (-0x7FFF - 1) +#define PG_INT16_MAX (0x7FFF) +#define PG_UINT16_MAX (0xFFFF) +#define PG_INT32_MIN (-0x7FFFFFFF - 1) +#define PG_INT32_MAX (0x7FFFFFFF) +#define PG_UINT32_MAX (0xFFFFFFFFU) +#define PG_INT64_MIN (-INT64CONST(0x7FFFFFFFFFFFFFFF) - 1) +#define PG_INT64_MAX INT64CONST(0x7FFFFFFFFFFFFFFF) +#define PG_UINT64_MAX UINT64CONST(0xFFFFFFFFFFFFFFFF) + +/* ---------------------------------------------------------------- + * Section 4: 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) ((void *) (pointer) != NULL) + +/* + * PointerIsAligned + * True iff pointer is properly aligned to point to the given type. + */ +#define PointerIsAligned(pointer, type) (((intptr_t) (pointer) % (sizeof(type))) == 0) + +#define OidIsValid(objectId) ((bool) ((objectId) != InvalidOid)) + +#define RegProcedureIsValid(p) OidIsValid(p) + +/* ---------------------------------------------------------------- + * Section 5: offsetof, lengthof, endof, alignment + * ---------------------------------------------------------------- + */ +/* + * 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. + */ +#ifndef lengthof +# define lengthof(array) (sizeof(array) / sizeof((array)[0])) +#endif + +/* + * endof + * Address of the element one past the last in an array. + */ +#ifndef endof +# define endof(array) (&array[lengthof(array)]) +#endif + +/* ---------------- + * Alignment macros: align a length or address appropriately for a given type. + * + * There used to be some incredibly crufty platform-dependent hackery here, + * but now we rely on the configure script to get the info for us. Much nicer. + * + * NOTE: TYPEALIGN will not work if ALIGNVAL is not a power of 2. + * That case seems extremely unlikely to occur in practice, however. + * ---------------- + */ + +#define TYPEALIGN(ALIGNVAL, LEN) \ + (((intptr_t) (LEN) + (ALIGNVAL - 1)) & ~((intptr_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)) + +/* ---------------------------------------------------------------- + * Section 6: widely useful 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)) + +/* Get a bit mask of the bits set in non-int32 aligned addresses */ +#define INT_ALIGN_MASK (sizeof(int32) - 1) + +/* Get a bit mask of the bits set in non-long aligned addresses */ +#define LONG_ALIGN_MASK (sizeof(long) - 1) + +/* + * MemSet + * Exactly the same as standard library function memset(), but considerably + * faster for zeroing small word-aligned structures (such as parsetree nodes). + * This has to be a macro because the main point is to avoid function-call + * overhead. + * + * We got the 64 number by testing this against the stock memset() on + * BSD/OS 3.0. Larger values were slower. bjm 1997/09/11 + * + * I think the crossover point could be a good deal higher for + * most platforms, actually. tgl 2000-03-19 + */ +#ifdef MemSet +# undef MemSet +#endif +#define MemSet(start, val, len) \ + do { \ + char *_start = (char *) (start); \ + int _val = (val); \ + Size _len = (len); \ + \ + if ((((long) _start) & INT_ALIGN_MASK) == 0 && (_len & INT_ALIGN_MASK) == 0 && _val == 0 && \ + _len <= MEMSET_LOOP_LIMIT) { \ + int32 *_p = (int32 *) _start; \ + int32 *_stop = (int32 *) (_start + _len); \ + while (_p < _stop) \ + *_p++ = 0; \ + } else \ + memset(_start, _val, _len); \ + } while (0) + +/* + * MemSetAligned is the same as MemSet except it omits the test to see if + * "start" is word-aligned. This is okay to use if the caller knows a-priori + * that the pointer is suitably aligned (typically, because he just got it + * from palloc(), which always delivers a max-aligned pointer). + */ +#define MemSetAligned(start, val, len) \ + do { \ + long *_start = (long *) (start); \ + int _val = (val); \ + Size _len = (len); \ + \ + if ((_len & LONG_ALIGN_MASK) == 0 && _val == 0 && _len <= MEMSET_LOOP_LIMIT && \ + MEMSET_LOOP_LIMIT != 0) { \ + long *_stop = (long *) ((char *) _start + _len); \ + while (_start < _stop) \ + *_start++ = 0; \ + } else \ + memset(_start, _val, _len); \ + } while (0) + +#define MEMSET_LOOP_LIMIT 64 + +/* ---------------------------------------------------------------- + * Section 7: random stuff + * ---------------------------------------------------------------- + */ + +/* msb for char */ +#define CSIGNBIT (0x80) +#define IS_HIGHBIT_SET(ch) ((unsigned char) (ch) &CSIGNBIT) + +#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_TIMEOUT (-8) +#define STATUS_FOUND (1) + +/* + * Macro that allows to cast constness and volatile away from an expression, but doesn't + * allow changing the underlying type. Enforcement of the latter + * currently only works for gcc like compilers. + * + * Please note IT IS NOT SAFE to cast constness away if the result will ever + * be modified (it would be undefined behaviour). Doing so anyway can cause + * compiler misoptimizations or runtime crashes (modifying readonly memory). + * It is only safe to use when the result will not be modified, but API + * design or language restrictions prevent you from declaring that + * (e.g. because a function returns both const and non-const variables). + * + * Note that this only works in function scope, not for global variables (it'd + * be nice, but not trivial, to improve that). + */ +#if defined(HAVE__BUILTIN_TYPES_COMPATIBLE_P) +# define unconstify(underlying_type, expr) \ + (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), const underlying_type), \ + "wrong cast"), \ + (underlying_type) (expr)) +# define unvolatize(underlying_type, expr) \ + (StaticAssertExpr(__builtin_types_compatible_p(__typeof(expr), volatile underlying_type), \ + "wrong cast"), \ + (underlying_type) (expr)) +#else +# define unconstify(underlying_type, expr) ((underlying_type) (expr)) +# define unvolatize(underlying_type, expr) ((underlying_type) (expr)) +#endif + +/* ---------------------------------------------------------------- + * Section 8: system-specific hacks + * + * This should be limited to things that absolutely have to be + * included in every source file. The port-specific header file + * is usually a better place for this sort of thing. + * ---------------------------------------------------------------- + */ + +#ifdef __CYGWIN__ +# define PG_BINARY O_BINARY +# define PG_BINARY_R "rb" +# define PG_BINARY_W "wb" +#else +# define PG_BINARY 0 +# define PG_BINARY_R "r" +# define PG_BINARY_W "w" +#endif + +#if defined(linux) +# include +#endif + +#if defined(sun) && defined(__sparc__) && !defined(__SVR4) +# include +#endif + +/* These are for things that are one way on Unix and another on NT */ +#define NULL_DEV "/dev/null" +#define SEP_CHAR '/' + +/* defines for dynamic linking on Win32 platform */ +#ifdef __CYGWIN__ +# if __GNUC__ && !defined(__declspec) +# error You need egcs 1.1 or newer for compiling! +# endif +# ifdef BUILDING_DLL +# define DLLIMPORT __declspec(dllexport) +# else /* not BUILDING_DLL */ +# define DLLIMPORT __declspec(dllimport) +# endif +#else /* not CYGWIN */ +# define DLLIMPORT +#endif + +/* Provide prototypes for routines not present in a particular machine's + * standard C library. It'd be better to put these in config.h, but + * in config.h we haven't yet included anything that defines size_t... + */ + +#ifndef HAVE_SNPRINTF_DECL +extern int snprintf(char *str, size_t count, const char *fmt, ...); + +#endif + +#ifndef HAVE_VSNPRINTF_DECL +extern int vsnprintf(char *str, size_t count, const char *fmt, va_list args); + +#endif + +#if !defined(HAVE_MEMMOVE) && !defined(memmove) +# define memmove(d, s, c) bcopy(s, d, c) +#endif + +/* ---------------------------------------------------------------- + * Section 9: exception handling definitions + * Assert, Trap, etc macros + * ---------------------------------------------------------------- + */ + +typedef char *ExcMessage; + +typedef struct Exception +{ + ExcMessage message; +} Exception; + +extern Exception FailedAssertion; +extern Exception BadArg; +extern Exception BadState; +extern Exception VarTagError; + +extern bool assert_enabled; +extern bool log_mask_all_strings; + +extern int ExceptionalCondition(const char *conditionName, + Exception *exceptionP, + const char *details, + const char *fileName, + int lineNumber); + +/* + * USE_ASSERT_CHECKING, if defined, turns on all the assertions. + * - plai 9/5/90 + * + * It should _NOT_ be defined in releases or in benchmark copies + */ + +/* + * Trap + * Generates an exception if the given condition is true. + * + */ +#define Trap(condition, exception) \ + do { \ + if ((assert_enabled) && (condition)) \ + ExceptionalCondition(CppAsString(condition), &(exception), NULL, __FILE__, __LINE__); \ + } while (0) + +/* + * 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) ((!assert_enabled) || !(condition) || \ + (ExceptionalCondition(CppAsString(condition), &(exception), NULL, __FILE__, __LINE__)))) + +#ifndef USE_ASSERT_CHECKING +# define Assert(condition) +# define AssertMacro(condition) ((void) true) +# define AssertArg(condition) +# define AssertState(condition) +# define assert_enabled 0 + +#elif defined(FRONTEND) + +# include +# define Assert(p) assert(p) +# define AssertMacro(p) ((void) assert(p)) +# define AssertArg(condition) assert(condition) +# define AssertState(condition) assert(condition) +# define AssertPointerAlignment(ptr, bndr) ((void) true) + +#else +# define Assert(condition) Trap(!(condition), FailedAssertion) + +# define AssertMacro(condition) ((void) TrapMacro(!(condition), FailedAssertion)) + +# define AssertArg(condition) Trap(!(condition), BadArg) + +# define AssertState(condition) Trap(!(condition), BadState) + +#endif /* USE_ASSERT_CHECKING */ + +/* + * LogTrap + * Generates an exception with a message if the given condition is true. + * + */ +#define LogTrap(condition, exception, printArgs) \ + do { \ + if ((assert_enabled) && (condition)) \ + ExceptionalCondition(CppAsString(condition), \ + &(exception), \ + vararg_format printArgs, \ + __FILE__, \ + __LINE__); \ + } while (0) + +/* + * 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) ((!assert_enabled) || !(condition) || \ + (ExceptionalCondition(CppAsString(condition), \ + &(exception), \ + vararg_format printArgs, \ + __FILE__, \ + __LINE__)))) + +extern char *vararg_format(const char *fmt, ...); + +#ifndef USE_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) + +# ifdef ASSERT_CHECKING_TEST +extern int assertTest(int val); + +# endif + +#endif /* USE_ASSERT_CHECKING */ + +#ifdef __cplusplus /* NZ */ +# define CEXTERN extern "C" +#else +# define CEXTERN extern +#endif + +/* ---------------- + * end of c.h + * ---------------- + */ +#endif /* C_H */ diff --git a/nz_include/comtypes.h b/nz_include/comtypes.h new file mode 100644 index 00000000..771f2fea --- /dev/null +++ b/nz_include/comtypes.h @@ -0,0 +1,85 @@ +// comtypes.h +// +// definitions of fundamental types shared across pg and nz +// +// This header file is included in many other include files system-wide, so +// any additions to it must be applicable to a very wide variety of +// situations. +// +// NOTE TO DEVELOPERS: +// +// Please be careful about what you add to this file. Changes to this file +// impact almost every other source file in the system. +// +// (C) Copyright IBM Corp. 2002, 2011 All Rights Reserved. + +#ifndef COMTYPES_H_ +#define COMTYPES_H_ + +#include + +/* + * :host64: When Oid was declared as unsigned int here we are allocation + * always an array of 12 chars. + * The value numeric_limits::max() is: 4294967295. We might have + * negative values, so: + * - 1 for the sign, + * - 10 for the number + * - 1 from '\0' + * TOTAL: 12. + * + * Now that we have unsigned long int we need to change this value. + * - numeric_limits::max() is: 18446744073709551615 ==> 20 (no sign) + * - numeric_limits::max() is: 9223372036854775807 ==> 19.(with sign) + * - we need one for the sign (if signed) + * - we need one for '\0' + * TOTAL: 21. + */ + +// :host64: +typedef unsigned int INTERNALOID; +typedef INTERNALOID Oid; + +// :host64: we moved it from postgres_ext.h to have Oid and OID_MAX in one place +#define OID_MAX UINT_MAX + +#define OIDMAXLENGTH 12 /* ((1)+(10)+(1)) */ + +// :host64: we want to add a standard way to print-scan basic types in Postgres +// in a sort of standard way. We use the same approach used by inttypes.h. + +#define __PRI0id_PREFIX /* For 64-bit: "l" */ + +#define PRI0id __PRI0id_PREFIX "u" +// "PRI0id" + +#define __PRIx_PREFIXZERO "8" /* For 64bit: "16" */ + +#define PRIx0id "0" __PRIx_PREFIXZERO __PRI0id_PREFIX "x" +#define PRIX0id "0" __PRIx_PREFIXZERO __PRI0id_PREFIX "X" +// "PRIx0id" + +typedef uintptr_t Datum; + +/* + * We need a #define symbol for sizeof(Datum) for use in some #if tests. + */ +#ifdef __x86_64__ +# define SIZEOF_DATUM 8 +#else +# define SIZEOF_DATUM 4 +#endif + +/* + * To stay backward compatible with older kits. + * This is used for storing consts in Datum by value + * for types other than INT8, at least currently. + * + */ +enum +{ + LegacyCompatibleDatumSize = 4 +}; + +#define SIZEOF_VOID_P SIZEOF_DATUM +#endif /* COMTYPES_H_ */ diff --git a/nz_include/libpq-fe.h b/nz_include/libpq-fe.h new file mode 100644 index 00000000..8ee9806d --- /dev/null +++ b/nz_include/libpq-fe.h @@ -0,0 +1,508 @@ +/*------------------------------------------------------------------------- + * + * libpq-fe.h + * This file contains definitions for structures and + * externs for functions used by frontend postgres applications. + * + * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * + *------------------------------------------------------------------------- + */ + +#ifndef LIBPQ_FE_H +#define LIBPQ_FE_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include +#include + +/* postgres_ext.h defines the backend's externally visible types, + * such as Oid. + */ +#include "postgres_ext.h" +#include "c.h" +#include "acPwcache.h" + +/* Application-visible enum types */ + + typedef enum + { + + /* + * Although you may decide to change this list in some way, values + * which become unused should never be removed, nor should + * constants be redefined - that would break compatibility with + * existing code. + */ + CONNECTION_OK, + CONNECTION_BAD, + CONNECTION_TERM, /* connection terminated by host */ + /* Non-blocking mode only below here */ + + /* + * The existence of these should never be relied upon - they + * should only be used for user feedback or similar purposes. + */ + CONNECTION_STARTED, /* Waiting for connection to be made. */ + CONNECTION_MADE, /* Connection OK; waiting to send. */ + CONNECTION_STARTUP, /* Connection OK; use startup packet */ + CONNECTION_HANDSHAKE, /* Connection OK; use handshake protocol */ + CONNECTION_CLIENT_REQUEST, /* Connection OK; use handshake protocol */ + CONNECTION_CLIENT_RESPONSE, /* Connection OK; use handshake protocol */ + CONNECTION_SERVER_REQUEST, /* Connection OK; use handshake protocol */ + CONNECTION_SERVER_RESPONSE, /* Connection OK; use handshake protocol */ + CONNECTION_AWAITING_RESPONSE, /* Waiting for a response from the + * postmaster. */ + CONNECTION_SSL_REQUEST, /* Connection OK; use handshake protocol */ + CONNECTION_SSL_RESPONSE, /* Connection OK; use handshake protocol */ + CONNECTION_SSL_CONNECTING, /* Connection OK; use handshake protocol */ + CONNECTION_AUTH_OK, /* Received authentication; waiting for + * backend startup. */ + CONNECTION_SETENV /* Negotiating environment. */ + } ConnStatusType; + + typedef enum + { + PGRES_POLLING_FAILED = 0, + PGRES_POLLING_READING, /* These two indicate that one may */ + PGRES_POLLING_WRITING, /* use select before polling again. */ + PGRES_POLLING_OK, + PGRES_POLLING_ACTIVE /* Can call poll function immediately. */ + } PostgresPollingStatusType; + + typedef enum + { + PGRES_EMPTY_QUERY = 0, + PGRES_COMMAND_OK, /* a query command that doesn't return + * anything was executed properly by the + * backend */ + PGRES_TUPLES_OK, /* a query command that returns tuples was + * executed properly by the backend, + * PGresult contains the result tuples */ + PGRES_COPY_OUT, /* Copy Out data transfer in progress */ + PGRES_COPY_IN, /* Copy In data transfer in progress */ + PGRES_BAD_RESPONSE, /* an unexpected response was recv'd from + * the backend */ + PGRES_NONFATAL_ERROR, + PGRES_FATAL_ERROR, + PGRES_FATAL_ERROR_TERM + } ExecStatusType; + +typedef enum +{ + PQSHOW_CONTEXT_NEVER, /* never show CONTEXT field */ + PQSHOW_CONTEXT_ERRORS, /* show CONTEXT for errors only (default) */ + PQSHOW_CONTEXT_ALWAYS /* always show CONTEXT field */ +} PGContextVisibility; + +typedef enum +{ + PQERRORS_TERSE, /* single-line error messages */ + PQERRORS_DEFAULT, /* recommended style */ + PQERRORS_VERBOSE, /* all the facts, ma'am */ + PQERRORS_SQLSTATE /* only error severity and SQLSTATE code */ +} PGVerbosity; + +/* PGconn encapsulates a connection to the backend. + * The contents of this struct are not supposed to be known to applications. + */ + typedef struct pg_conn PGconn; + +/* PGresult encapsulates the result of a query (or more precisely, of a single + * SQL command --- a query string given to PQsendQuery can contain multiple + * commands and thus return multiple PGresult objects). + * The contents of this struct are not supposed to be known to applications. + */ + typedef struct pg_result PGresult; + +/* PGnotify represents the occurrence of a NOTIFY message. + * Ideally this would be an opaque typedef, but it's so simple that it's + * unlikely to change. + * NOTE: in Postgres 6.4 and later, the be_pid is the notifying backend's, + * whereas in earlier versions it was always your own backend's PID. + */ + typedef struct pgNotify + { + char relname[NAMEDATALEN]; /* name of relation + * containing data */ + int be_pid; /* process id of backend */ + } PGnotify; + +/* PQnoticeProcessor is the function type for the notice-message callback. + */ + typedef void (*PQnoticeProcessor) (void *arg, const char *message); + +/* Print options for PQprint() */ + typedef char pqbool; + + typedef struct _PQprintOpt + { + pqbool header; /* print output field headings and row + * count */ + pqbool align; /* fill align the fields */ + pqbool standard; /* old brain dead format */ + pqbool html3; /* output html tables */ + pqbool expanded; /* expand tables */ + pqbool pager; /* use pager for output if needed */ + char *fieldSep; /* field separator */ + char *tableOpt; /* insert to HTML */ + char *caption; /* HTML
*/ + char **fieldName; /* null terminated array of repalcement + * field names */ + } PQprintOpt; + +/* ---------------- + * Structure for the conninfo parameter definitions returned by PQconndefaults + * + * All fields except "val" point at static strings which must not be altered. + * "val" is either NULL or a malloc'd current-value string. PQconninfoFree() + * will release both the val strings and the PQconninfoOption array itself. + * ---------------- + */ + typedef struct _PQconninfoOption + { + const char *keyword; /* The keyword of the option */ + const char *envvar; /* Fallback environment variable name */ + const char *compiled; /* Fallback compiled in default value */ + char *val; /* Option's current value, or NULL */ + const char *label; /* Label for field in connect dialog */ + const char *dispchar; /* Character to display for this field in + * a connect dialog. Values are: "" + * Display entered value as is "*" + * Password field - hide value "D" Debug + * option - don't show by default */ + int dispsize; /* Field size in characters for dialog */ + } PQconninfoOption; + +/* ---------------- + * PQArgBlock -- structure for PQfn() arguments + * ---------------- + */ + typedef struct + { + int len; + int isint; + union + { + int *ptr; /* can't use void (dec compiler barfs) */ + int integer; + } u; + } PQArgBlock; + +/* ---------------- + * AddOpt -- Additional options passed by nzsql + * ---------------- + */ +typedef struct +{ + int securityLevel; + char *caCertFile; +} AddOpt; + +/* ---------------- + * Exported functions of libpq + * ---------------- + */ + +/* === in fe-connect.c === */ + + /* make a new client connection to the backend */ + + /* Asynchronous (non-blocking) */ + extern PGconn *PQconnectStart(const char *conninfo); + extern void PQfreeconnection(PGconn *conn); + extern PostgresPollingStatusType PQconnectPoll(PGconn *conn); + /* Synchronous (blocking) */ + extern PGconn *PQconnectdb(const char *conninfo); + extern PGconn *PQsetdbLogin(const char *pghost, const char *pgport, + const char *pgoptions, const char *pgtty, + const char *dbName, const char *login, + const char *pwd, const AddOpt* add_opt, + const bool quiet, const bool admin_mode, + const bool noPassword); +#define PQsetdb(M_PGHOST,M_PGPORT,M_PGOPT,M_PGTTY,M_DBNAME) \ + PQsetdbLogin(M_PGHOST, M_PGPORT, M_PGOPT, M_PGTTY, M_DBNAME, NULL, NULL) + + extern PGconn *PQsetdbLoginTermOld(const char *pghost, const char *pgport, + const char *pgoptions, const char *pgtty, + const char *dbName, + const char *login, const char *pwd, const int prevPid, + const int secLevel, const char *caCertfile, + const char *priorUser, const char *priorPwd, + const bool quiet); + + /* close the current connection and free the PGconn data structure */ + extern void PQfinish(PGconn *conn); + + /* get info about connection options known to PQconnectdb */ + extern PQconninfoOption *PQconndefaults(void); + + /* free the data structure returned by PQconndefaults() */ + extern void PQconninfoFree(PQconninfoOption *connOptions); + + /* + * close the current connection and restablish a new one with the same + * parameters + */ + /* Asynchronous (non-blocking) */ + extern int PQresetStart(PGconn *conn); + extern PostgresPollingStatusType PQresetPoll(PGconn *conn); + /* Synchronous (blocking) */ + extern void PQreset(PGconn *conn); + + /* issue a cancel request */ + extern int PQrequestCancel(PGconn *conn); + + /* Accessor functions for PGconn objects */ + extern char *PQdb(const PGconn *conn); + extern char *PQuser(const PGconn *conn); + extern void PQsetdbname(PGconn *conn, const char* dbname); + extern void PQsetusername(PGconn *conn, const char* username); + extern char *PQpass(const PGconn *conn); + extern char *PQhost(const PGconn *conn); + extern char *PQport(const PGconn *conn); + extern char *PQtty(const PGconn *conn); + extern char *PQoptions(const PGconn *conn); + extern ConnStatusType PQstatus(const PGconn *conn); + extern const char *PQerrorMessage(const PGconn *conn); + extern void PQresetErrorMessage(PGconn *conn); + extern int PQsocket(const PGconn *conn); + extern int PQbackendPID(const PGconn *conn); + extern int PQsetNzEncoding(PGconn *conn, const int nz_encoding); + extern int PQsetLoadReplayRegion(PGconn *conn, const int64 regionSize); + extern int PQclientEncoding(const PGconn *conn); + extern int PQsetClientEncoding(PGconn *conn, const char *encoding); + /* Get the SSL structure associated with a connection */ + extern SSL *PQgetssl(PGconn *conn); + /* To check for a NULL return */ + const char* SSLcheckError(); + + /* Enable/disable tracing */ + extern void PQtrace(PGconn *conn, FILE *debug_port); + extern void PQuntrace(PGconn *conn); + + /* Override default notice processor */ + extern PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor proc, void *arg); + +/* === in fe-exec.c === */ + + /* Simple synchronous query */ + extern PGresult *PQexec(PGconn *conn, const char *query); + extern PGresult *PQbatchexec(PGconn *conn, const char *query, + int batch_rowset); + extern PGnotify *PQnotifies(PGconn *conn); + + /* Interface for multiple-result or asynchronous queries */ + extern int PQsendQuery(PGconn *conn, const char *query); + extern PGresult *PQgetResult(PGconn *conn); + + /* Routines for managing an asychronous query */ + extern int PQisBusy(PGconn *conn); + extern int PQconsumeInput(PGconn *conn); + + /* Routines for copy in/out */ + extern int PQgetline(PGconn *conn, char *string, int length); + extern int PQputline(PGconn *conn, const char *string); + extern int PQgetlineAsync(PGconn *conn, char *buffer, int bufsize); + extern int PQputnbytes(PGconn *conn, const char *buffer, int nbytes); + extern int PQendcopy(PGconn *conn); + + /* Set blocking/nonblocking connection to the backend */ + extern int PQsetnonblocking(PGconn *conn, int arg); + extern int PQisnonblocking(const PGconn *conn); + + /* Force the write buffer to be written (or at least try) */ + extern int PQflush(PGconn *conn); + + /* Batching */ + extern void PQresetbatchdex(PGconn *conn); + extern int PQgetbatchdex(PGconn *conn); + extern void PQincrementbatchdex(PGconn *conn); + extern bool PQcommand_complete(PGconn *conn); + + /* + * "Fast path" interface --- not really recommended for application + * use + */ + extern PGresult *PQfn(PGconn *conn, + int fnid, + int *result_buf, + int *result_len, + int result_is_int, + const PQArgBlock *args, + int nargs); + extern PGresult *PQset_plan_output_file(PGconn *conn, + char *plan_output_file, + bool is_dir); + + /* Accessor functions for PGresult objects */ + extern ExecStatusType PQresultStatus(const PGresult *res); + extern const char *PQresStatus(ExecStatusType status); + extern const char *PQresultErrorMessage(const PGresult *res); + extern int PQntuples(const PGresult *res); + extern void PQsetntuples(PGresult *res, int ntups); + extern int PQnfields(const PGresult *res); + extern int PQbinaryTuples(const PGresult *res); + extern char *PQfname(const PGresult *res, int field_num); + extern int PQfnumber(const PGresult *res, const char *field_name); + extern Oid PQftype(const PGresult *res, int field_num); + extern int PQfsize(const PGresult *res, int field_num); + extern int PQfmod(const PGresult *res, int field_num); + extern char *PQcmdStatus(PGresult *res); + extern const char *PQoidStatus(const PGresult *res); /* old and ugly */ + extern Oid PQoidValue(const PGresult *res); /* new and improved */ + extern const char *PQcmdTuples(PGresult *res); + extern char *PQgetvalue(const PGresult *res, int tup_num, int field_num); + extern int PQgetlength(const PGresult *res, int tup_num, int field_num); + extern int PQgetisnull(const PGresult *res, int tup_num, int field_num); + extern void PQresult_inc_total_ntups(PGresult *res); + extern uint64 PQresult_get_total_ntups(const PGresult *res); + extern void PQresult_reset_ntups(PGresult *res); + extern bool PQresult_is_batching(const PGresult *res); + extern void PQresetcommandcomplete(PGconn *conn); + extern void PQresetCancelPending(PGconn *conn); + + /* Delete a PGresult */ + extern void PQclear(PGresult *res); + + /* + * Make an empty PGresult with given status (some apps find this + * useful). If conn is not NULL and status indicates an error, the + * conn's errorMessage is copied. + */ + extern PGresult *PQmakeEmptyPGresult(PGconn *conn, ExecStatusType status); + + /* NETEZZA - add three functions to resolve undefines when linked with php-pgsql-4.3.9-3.6 (LAS4) */ + + /* Quoting strings before inclusion in queries. */ + extern size_t PQescapeString(char *to, const char *from, size_t length); + extern char *PQescapeIdentifier(PGconn *conn, const char *str, size_t len, bool as_ident); + extern unsigned char *PQescapeBytea(const unsigned char *bintext, size_t binlen, + size_t *bytealen); + extern unsigned char *PQunescapeBytea(const unsigned char *strtext, + size_t *retbuflen); + + /* + * Dbos tuple mode + */ + extern void SetDbosTupleHandler(int (*cbfun) (PGconn *conn)); + + /* + * Functions for get/se commandNumber + */ + extern void PQsetCommandNumber(PGconn *conn, int cn); + extern int PQgetCommandNumber(PGconn *conn); + + +/* === in fe-print.c === */ + + extern void PQprint(FILE *fout, /* output stream */ + const PGresult *res, + const PQprintOpt *ps); /* option structure */ + + /* + * really old printing routines + */ + extern void PQdisplayTuples(const PGresult *res, + FILE *fp, /* where to send the + * output */ + int fillAlign, /* pad the fields with + * spaces */ + const char *fieldSep, /* field separator */ + int printHeader, /* display headers? */ + int quiet); + + extern void PQprintTuples(const PGresult *res, + FILE *fout, /* output stream */ + int printAttName, /* print attribute names */ + int terseOutput, /* delimiter bars */ + int width); /* width of column, if + * 0, use variable width */ + + +/* === in fe-lobj.c === */ + + /* Large-object access routines */ + extern int lo_open(PGconn *conn, Oid lobjId, int mode); + extern int lo_close(PGconn *conn, int fd); + extern int lo_read(PGconn *conn, int fd, char *buf, size_t len); + extern int lo_write(PGconn *conn, int fd, char *buf, size_t len); + extern int lo_lseek(PGconn *conn, int fd, int offset, int whence); + extern Oid lo_creat(PGconn *conn, int mode); + extern int lo_tell(PGconn *conn, int fd); + extern int lo_unlink(PGconn *conn, Oid lobjId); + extern Oid lo_import(PGconn *conn, const char *filename); + extern int lo_export(PGconn *conn, Oid lobjId, const char *filename); + +/* === in fe-misc.c === */ + + /* Determine length of multibyte encoded char at *s */ + extern int PQmblen(const unsigned char *s, int encoding); + + /* Determine display length of multibyte encoded char at *s */ + extern int PQdsplen(const unsigned char *s, int encoding); + + /* Get encoding id from environment variable PGCLIENTENCODING */ + extern int PQenv2encoding(void); + + /* === for arrow adbc: start === */ + /* + * Note: The following functions will have incremental changes as and when required + * in supporting ADBC drivers. + */ + extern PGresult *PQprepare(PGconn *conn, const char *stmtName, + const char *query, int nParams, + const Oid *paramTypes); + + extern PGresult *PQexecParams(PGconn *conn, + const char *command, + int nParams, + const Oid *paramTypes, + const char *const *paramValues, + const int *paramLengths, + const int *paramFormats, + int resultFormat); + + extern PGresult *PQexecPrepared(PGconn *conn, + const char *stmtName, + int nParams, + const Oid *paramTypes, + const char *const *paramValues, + const int *paramLengths, + const int *paramFormats, + int resultFormat); + + extern PGresult *PQdescribePrepared(PGconn *conn, const char *stmt); + + extern int PQsendQueryPrepared(PGconn *conn, + const char *stmtName, + int nParams, + const Oid *paramTypes, + const char *const *paramValues, + const int *paramLengths, + const int *paramFormats, + int resultFormat); + + extern int PQsendQueryParams(PGconn *conn, + const char *command, + int nParams, + const Oid *paramTypes, + const char *const *paramValues, + const int *paramLengths, + const int *paramFormats, + int resultFormat); + +/* === for arrow adbc: end === */ + +#ifdef __cplusplus +} + +#endif + +#endif /* LIBPQ_FE_H */ diff --git a/nz_include/nzfieldtype.h b/nz_include/nzfieldtype.h new file mode 100644 index 00000000..1bd549be --- /dev/null +++ b/nz_include/nzfieldtype.h @@ -0,0 +1,632 @@ +#ifndef NZFIELDTYPE_H +#define NZFIELDTYPE_H + +// Field type numbers are persisted in the compressed external +// table header. Extending this list with new types is fine. +// The existing constants up to NzTypeLastEntry cannot be renumbered +// (check with Abhishek Jog for details about external table usage). +// If you change an existing type number, we need to write some backward +// compatibility code. + +#define NZ_FIELD_TYPE_LIST \ + \ + /* (ORDINAL, ENUMERATOR, REP, ALIGN, FIXED, SCHEMA, ZMACCUM, COMPARE, DESCRIPTION) \ + */ \ + \ + _ROW_(0, NzTypeUndefined, void, 0, 0, INVALID, invalid, Bad, "UNUSED 0") \ + _SEP_ _ROW_(1, \ + NzTypeRecAddr, \ + int64, \ + ALN64, \ + 8, \ + INT, \ + invalid, \ + Int8, \ + "RecAddr (8 bytes)") _SEP_ _ROW_(2, \ + NzTypeDouble, \ + double, \ + ALN64, \ + 8, \ + FLOAT, \ + double, \ + Double, \ + "FP double (8 bytes)") _SEP_ \ + _ROW_(3, NzTypeInt, int32, ALN32, 4, INT, int32, Int4, "Integer (4 bytes)") _SEP_ _ROW_( \ + 4, \ + NzTypeFloat, \ + float, \ + ALN32, \ + 4, \ + FLOAT, \ + float, \ + Float, \ + "FP single (4 bytes)") _SEP_ _ROW_(5, \ + NzTypeMoney, \ + int32, \ + ALN32, \ + 4, \ + INT, \ + int32, \ + Int4, \ + "Money (4 bytes)") _SEP_ \ + _ROW_(6, NzTypeDate, int32, ALN32, 4, INT, int32, Int4, "Date (4 bytes)") _SEP_ _ROW_( \ + 7, \ + NzTypeNumeric, \ + void, \ + ALN128, \ + -1, \ + NUMERIC, \ + cnum64, \ + Bad, \ + "Numeric (4, 8 or 16 bytes)") _SEP_ _ROW_(8, \ + NzTypeTime, \ + int64, \ + ALN64, \ + 8, \ + INT, \ + int64, \ + Int8, \ + "Time (8 bytes)") \ + _SEP_ _ROW_(9, \ + NzTypeTimestamp, \ + timestamp, \ + ALN64, \ + 8, \ + INT, \ + int64, \ + Int8, \ + "Timestamp (8 bytes)") _SEP_ _ROW_(10, \ + NzTypeInterval, \ + interval, \ + ALN128, \ + 12, \ + TIME, \ + interval, \ + Interval, \ + "Interval (12 bytes)") \ + _SEP_ _ROW_(11, \ + NzTypeTimeTz, \ + timetz, \ + ALN128, \ + 12, \ + TIME, \ + timetz, \ + TimeTz, \ + "Time and TZ (12 bytes)") _SEP_ _ROW_(12, \ + NzTypeBool, \ + int8, \ + ALNNO, \ + 1, \ + INT, \ + int8, \ + Bool, \ + "Boolean (1 byte)") \ + _SEP_ _ROW_( \ + 13, \ + NzTypeInt1, \ + int8, \ + ALNNO, \ + 1, \ + INT, \ + int8, \ + Int1, \ + "Integer (1 byte)") _SEP_ _ROW_(14, \ + NzTypeBinary, \ + void, \ + 0, \ + 0, \ + INVALID, \ + invalid, \ + Bad, \ + "UNUSED 14") _SEP_ _ROW_(15, \ + NzTypeChar, \ + void, \ + ALNNO, \ + -2, \ + FIXEDCHAR, \ + str1A, \ + Bad, \ + "Char (fixed, " \ + "1-16 bytes)") \ + _SEP_ _ROW_(16, \ + NzTypeVarChar, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "ASCII Char Varying") _SEP_ _ROW_(17, \ + NzDEPR_Text, \ + void, \ + FVARY, \ + 0, \ + INVALID, \ + invalid, \ + Bad, \ + "UNUSED 17") \ + _SEP_ _ROW_( \ + 18, \ + NzTypeUnknown, \ + void, \ + FVARY, \ + 0, \ + INVALID, \ + invalid, \ + Bad, \ + "UNUSED 18") _SEP_ _ROW_(19, \ + NzTypeInt2, \ + int16, \ + ALN16, \ + 2, \ + INT, \ + int16, \ + Int2, \ + "Integer (2 " \ + "bytes)") _SEP_ _ROW_(20, \ + NzTypeInt8, \ + int64, \ + ALN64, \ + 8, \ + INT, \ + int64, \ + Int8, \ + "Integer (8 " \ + "bytes)") \ + _SEP_ _ROW_(21, \ + NzTypeVarFixedChar, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "ASCII Char (using " \ + "varying)") _SEP_ _ROW_(22, \ + NzTypeGeometry, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "ST_Geometry") \ + _SEP_ _ROW_(23, \ + NzTypeVarBinary, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "Binary Varying") _SEP_ _ROW_(24, \ + NzDEPR_Blob, \ + void, \ + FVARY, \ + 0, \ + INVALID, \ + invalid, \ + Bad, \ + "UNUSED 24") \ + _SEP_ _ROW_( \ + 25, \ + NzTypeNChar, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "UTF-8 NChar " \ + "(using varying)") _SEP_ _ROW_(26, \ + NzTypeNVarChar, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "UTF-8 NChar Varying") \ + _SEP_ _ROW_( \ + 27, \ + NzDEPR_NText, \ + void, \ + FVARY, \ + 0, \ + INVALID, \ + invalid, \ + Bad, \ + "UNUSED 27") _SEP_ _ROW_(28, \ + NzTypeDTIDBitAddr, \ + int64, \ + ALN64, \ + 8, \ + INT, \ + invalid, \ + Int8, \ + "DTIDBitAddr (8 bytes)") \ + _SEP_ _ROW_(29, \ + NzTypeSuperDouble, \ + cnum128, \ + ALN128, \ + 16, \ + FLOAT, \ + invalid, \ + SuperDouble, \ + "FP super double (16 bytes)") \ + _SEP_ _ROW_(30, \ + NzTypeJson, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "JSON") _SEP_ _ROW_(31, \ + NzTypeJsonb, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "JSONB") \ + _SEP_ _ROW_(32, \ + NzTypeJsonpath, \ + varA, \ + FVARY, \ + 0, \ + VARCHAR, \ + varA, \ + Bad, \ + "JSONPATH") \ + _SEP_ _ROW_( \ + 33, \ + NzTypeLastEntry, \ + void, \ + 0, \ + 0, \ + INVALID, \ + invalid, \ + Bad, \ + "UNUSED 33") /* Entries past \ + NzTypeLastEntry \ + are used only \ + in zonemap \ + code, via \ + fieldTypeWithSize(), \ + and are not \ + persistent. \ + */ \ + _SEP_ _ROW_( \ + 34, \ + NzTypeChar1A, \ + str1A, \ + ALNNO, \ + 1, \ + FIXEDCHAR, \ + str1A, \ + Bad, \ + "ASCII Char[1] (1 byte)") _SEP_ _ROW_(35, \ + NzTypeChar2A, \ + str2A, \ + ALNNO, \ + 2, \ + FIXEDCHAR, \ + str2A, \ + Bad, \ + "ASCII Char[2] (2 bytes)") _SEP_ _ROW_(36, \ + NzTypeChar3A, \ + str3A, \ + ALNNO, \ + 3, \ + FIXEDCHAR, \ + str3A, \ + Bad, \ + "ASCII " \ + "Char[3] " \ + "(3 bytes)") _SEP_ \ + _ROW_(37, NzTypeChar4A, str4A, ALNNO, 4, FIXEDCHAR, str4A, Bad, "ASCII Char[4] (4 bytes)") _SEP_ _ROW_( \ + 38, \ + NzTypeChar5A, \ + str5A, \ + ALNNO, \ + 5, \ + FIXEDCHAR, \ + str5A, \ + Bad, \ + "ASCII Char[5] (5 bytes)") _SEP_ _ROW_(39, \ + NzTypeChar6A, \ + str6A, \ + ALNNO, \ + 6, \ + FIXEDCHAR, \ + str6A, \ + Bad, \ + "ASCII Char[6] (6 bytes)") _SEP_ _ROW_(40, \ + NzTypeChar7A, \ + str7A, \ + ALNNO, \ + 7, \ + FIXEDCHAR, \ + str7A, \ + Bad, \ + "ASCII" \ + " Char" \ + "[7] " \ + "(7 " \ + "bytes" \ + ")") _SEP_ \ + _ROW_(41, NzTypeChar8A, str8A, ALNNO, 8, FIXEDCHAR, str8, Bad, "ASCII Char[8] (8 bytes)") _SEP_ _ROW_( \ + 42, \ + NzTypeChar9A, \ + str9A, \ + ALNNO, \ + 9, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "ASCII Char[9] (9 bytes)") _SEP_ \ + _ROW_(43, NzTypeChar10A, str10A, ALNNO, 10, FIXEDCHAR, str8, Bad, "ASCII Char[10] (10 bytes)") _SEP_ _ROW_( \ + 44, \ + NzTypeChar11A, \ + str11A, \ + ALNNO, \ + 11, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "ASCII Char[11] (11 bytes)") _SEP_ _ROW_(45, \ + NzTypeChar12A, \ + str12A, \ + ALNNO, \ + 12, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "ASCII Char[12] (12 bytes)") _SEP_ \ + _ROW_(46, NzTypeChar13A, str13A, ALNNO, 13, FIXEDCHAR, str8, Bad, "ASCII Char[13] (13 bytes)") _SEP_ _ROW_( \ + 47, \ + NzTypeChar14A, \ + str14A, \ + ALNNO, \ + 14, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "ASCII Char[14] (14 bytes)") _SEP_ \ + _ROW_(48, NzTypeChar15A, str15A, ALNNO, 15, FIXEDCHAR, str8, Bad, "ASCII Char[15] (15 bytes)") _SEP_ _ROW_( \ + 49, \ + NzTypeChar16A, \ + str16A, \ + ALNNO, \ + 16, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "ASCII Char[16] (16 bytes)") _SEP_ \ + _ROW_(50, \ + NzTypeChar1E, \ + str1E, \ + ALNNO, \ + 1, \ + FIXEDCHAR, \ + str1E, \ + Bad, \ + "EBCDIC Char[1] (1 byte)") _SEP_ _ROW_(51, \ + NzTypeChar2E, \ + str2E, \ + ALNNO, \ + 2, \ + FIXEDCHAR, \ + str2E, \ + Bad, \ + "EBCDIC Char[2] (2 " \ + "bytes)") _SEP_ _ROW_(52, \ + NzTypeChar3E, \ + str3E, \ + ALNNO, \ + 3, \ + FIXEDCHAR, \ + str3E, \ + Bad, \ + "EBCDIC Char[3] (3 bytes)") _SEP_ \ + _ROW_(53, NzTypeChar4E, str4E, ALNNO, 4, FIXEDCHAR, str4E, Bad, "EBCDIC Char[4] (4 bytes)") _SEP_ _ROW_( \ + 54, \ + NzTypeChar5E, \ + str5E, \ + ALNNO, \ + 5, \ + FIXEDCHAR, \ + str5E, \ + Bad, \ + "EBCDIC Char[5] (5 bytes)") _SEP_ \ + _ROW_(55, NzTypeChar6E, str6E, ALNNO, 6, FIXEDCHAR, str6E, Bad, "EBCDIC Char[6] (6 bytes)") _SEP_ _ROW_( \ + 56, \ + NzTypeChar7E, \ + str7E, \ + ALNNO, \ + 7, \ + FIXEDCHAR, \ + str7E, \ + Bad, \ + "EBCDIC Char[7] (7 bytes)") \ + _SEP_ _ROW_( \ + 57, \ + NzTypeChar8E, \ + str8E, \ + ALNNO, \ + 8, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC Char[8] (8 bytes)") \ + _SEP_ _ROW_( \ + 58, \ + NzTypeChar9E, \ + str9E, \ + ALNNO, \ + 9, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC Char[9] (9 bytes)") _SEP_ \ + _ROW_(59, NzTypeChar10E, str10E, ALNNO, 10, FIXEDCHAR, str8, Bad, "EBCDIC Char[10] (10 bytes)") \ + _SEP_ _ROW_( \ + 60, \ + NzTypeChar11E, \ + str11E, \ + ALNNO, \ + 11, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC Char[11] (11 bytes)") \ + _SEP_ _ROW_( \ + 61, \ + NzTypeChar12E, \ + str12E, \ + ALNNO, \ + 12, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC Char[12] (12 " \ + "bytes)") \ + _SEP_ _ROW_( \ + 62, \ + NzTypeChar13E, \ + str13E, \ + ALNNO, \ + 13, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC Char[13] (13 " \ + "bytes)") \ + _SEP_ _ROW_( \ + 63, \ + NzTypeChar14E, \ + str14E, \ + ALNNO, \ + 14, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC Char[14] " \ + "(14 bytes)") \ + _SEP_ _ROW_( \ + 64, \ + NzTypeChar15E, \ + str15E, \ + ALNNO, \ + 15, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC " \ + "Char[15] (15 " \ + "bytes)") \ + _SEP_ _ROW_( \ + 65, \ + NzTypeChar16E, \ + str16E, \ + ALNNO, \ + 16, \ + FIXEDCHAR, \ + str8, \ + Bad, \ + "EBCDIC " \ + "Char[16] " \ + "(16 bytes)") \ + _SEP_ _ROW_( \ + 66, \ + NzTypeVarCharE, \ + varE, \ + FVARY, \ + 0, \ + VARCHAR, \ + varE, \ + Bad, \ + "EBCDIC " \ + "Char " \ + "Varyin" \ + "g") \ + _SEP_ _ROW_( \ + 67, \ + NzTypeVarFixedCharE, \ + varE, \ + FVARY, \ + 0, \ + VARCHAR, \ + varE, \ + Bad, \ + "EBC" \ + "DIC" \ + " Ch" \ + "ar " \ + "(us" \ + "ing" \ + " va" \ + "ryi" \ + "ng" \ + ")") \ + _SEP_ _ROW_( \ + 68, \ + NzTypeNumeric4, \ + int32, \ + ALN32, \ + 4, \ + NUMERIC, \ + int32, \ + Bad, \ + "CNumeri" \ + "c32 (4 " \ + "bytes)") \ + _SEP_ _ROW_( \ + 69, \ + NzTypeNumeric8, \ + cnum64, \ + ALN64, \ + 8, \ + NUMERIC, \ + cnum64, \ + Bad, \ + "CNu" \ + "mer" \ + "ic6" \ + "4 " \ + "(8 " \ + "byt" \ + "es" \ + ")") _SEP_ \ + _ROW_( \ + 70, \ + NzTypeNumeric16, \ + cnum128, \ + ALN128, \ + 16, \ + NUMERIC, \ + cnum128, \ + Bad, \ + "CNumeric128 (16 bytes)") + +// Define the EFieldType enumeration +#define _ROW_(ORDINAL, ENUMERATOR, REP, ALIGN, FIXED, SCHEMA, ZMACCUM, COMPARE, DESCRIPTION) \ + ENUMERATOR +#define _SEP_ , +enum EFieldType +{ + NZ_FIELD_TYPE_LIST +}; +#undef _ROW_ +#undef _SEP_ + +#ifdef __cplusplus + +EFieldType fieldTypeWithSize(EFieldType ft, unsigned bytes, bool padEbcdic); +EFieldType fieldTypeWithSize(struct field_t const* f); + +#endif + +#endif // NZFIELDTYPE_H diff --git a/nz_include/os.h b/nz_include/os.h new file mode 100644 index 00000000..d61c3133 --- /dev/null +++ b/nz_include/os.h @@ -0,0 +1,115 @@ +#if (__PPC__) /* NZ */ +// !FIX-jpb defining this for PPC build (spu.bin target) +# define HAVE_INT_TIMEZONE 1 +#endif + +#if !defined(SUN4S) +// +// all platforms other than Sparc Solaris +// +# if defined(__i386__) || defined(__x86_64__) +typedef unsigned char slock_t; + +# define HAS_TEST_AND_SET + +# elif defined(__powerpc__) +typedef unsigned int slock_t; + +# define HAS_TEST_AND_SET + +# elif defined(__alpha__) +typedef long int slock_t; + +# define HAS_TEST_AND_SET + +# elif defined(__mips__) +typedef unsigned int slock_t; + +# define HAS_TEST_AND_SET + +# elif defined(__arm__) +typedef unsigned char slock_t; + +# define HAS_TEST_AND_SET + +# elif defined(__ia64__) +typedef unsigned int slock_t; + +# define HAS_TEST_AND_SET + +# elif defined(__s390__) +typedef unsigned int slock_t; + +# define HAS_TEST_AND_SET +# endif +#else +// ==================== +// For Sparc Solaris +// ==================== +# define HAS_TEST_AND_SET +typedef unsigned char slock_t; + +/* + * Sort this out for all operting systems some time. The __xxx + * symbols are defined on both GCC and Solaris CC, although GCC + * doesn't document them. The __xxx__ symbols are only on GCC. + */ +# if defined(__i386) && !defined(__i386__) +# define __i386__ +# endif + +# if defined(__sparc) && !defined(__sparc__) +# define __sparc__ +# endif + +# if defined(__i386__) +# include +# endif + +# ifndef BIG_ENDIAN +# define BIG_ENDIAN 4321 +# endif +# ifndef LITTLE_ENDIAN +# define LITTLE_ENDIAN 1234 +# endif +# ifndef PDP_ENDIAN +# define PDP_ENDIAN 3412 +# endif + +# ifndef BYTE_ORDER +# ifdef __sparc__ +# define BYTE_ORDER BIG_ENDIAN +# endif +# ifdef __i386__ +# define BYTE_ORDER LITTLE_ENDIAN +# endif +# endif + +# ifndef NAN + +# if defined(__GNUC__) && defined(__i386__) + +# ifndef __nan_bytes +# define __nan_bytes \ + { \ + 0, 0, 0, 0, 0, 0, 0xf8, 0x7f \ + } +# endif + +# define NAN \ + (__extension__((union { \ +unsigned char __c[8]; \ +double __d; \ + }){ __nan_bytes }) \ + .__d) + +# else +/* not GNUC and i386 */ + +# define NAN (0.0 / 0.0) + +# endif /* GCC. */ + +# endif /* not NAN */ + +#endif /* if SUN4S */ diff --git a/nz_include/pg_config.h b/nz_include/pg_config.h new file mode 100644 index 00000000..cb92f9e3 --- /dev/null +++ b/nz_include/pg_config.h @@ -0,0 +1,823 @@ +/* + * PostgreSQL configuration-settings file. + * + * This file was renamed from config.h to pg_config.h -- sanjay + * + * config.h.in is processed by configure to produce config.h. + * + * -- this header file has been conditionalized to run on the following + * platforms: linux (x86), PPC, Win32 (x86), and Sparc Solaris. + * + * If you want to modify any of the tweakable settings in Part 2 + * of this file, you can do it in config.h.in before running configure, + * or in config.h afterwards. Of course, if you edit config.h, then your + * changes will be overwritten the next time you run configure. + * + */ + +#ifndef CONFIG_H +#define CONFIG_H + +/* + *------------------------------------------------------------------------ + * Part 1: feature symbols and limits that are set by configure based on + * user-supplied switches. This is first so that stuff in Part 2 can + * depend on these values. + * + * Beware of "fixing" configure-time mistakes by editing these values, + * since configure may have inserted the settings in other files as well + * as here. Best to rerun configure if you forgot --enable-multibyte + * or whatever. + *------------------------------------------------------------------------ + */ + +/* The version number is actually hard-coded into configure.in */ +#define PG_VERSION "7.1beta6" +/* A canonical string containing the version number, platform, and C compiler */ +#define PG_VERSION_STR "IBM Netezza SQL Version 1.1" /* NZ */ + +#define NZ_VERSION_STR "1.1" + +/* Set to 1 if you want LOCALE support (--enable-locale) */ +/* #undef USE_LOCALE */ + +/* Set to 1 if you want cyrillic recode (--enable-recode) */ +/* #undef CYR_RECODE */ + +/* Set to 1 if you want to use multibyte characters (--enable-multibyte) */ +/* #undef MULTIBYTE */ + +/* Set to 1 if you want Unicode conversion support (--enable-uniconv) */ +/* #undef UNICODE_CONVERSION */ + +/* Set to 1 if you want ASSERT checking (--enable-cassert) */ +#define USE_ASSERT_CHECKING 1 + +/* Define to build with Kerberos 4 support (--with-krb4[=DIR]) */ +/* #undef KRB4 */ + +/* Define to build with Kerberos 5 support (--with-krb5[=DIR]) */ +/* #undef KRB5 */ + +/* Kerberos name of the Postgres service principal (--with-krb-srvnam=NAME) */ +#define PG_KRB_SRVNAM "netezza" + +/* Define to build with (Open)SSL support (--with-openssl[=DIR]) */ +/* #undef USE_SSL */ + +/* + * DEF_PGPORT is the TCP port number on which the Postmaster listens and + * which clients will try to connect to. This is just a default value; + * it can be overridden at postmaster or client startup. It's awfully + * convenient if your clients have the right default compiled in, though. + * (--with-pgport=PORTNUM) + */ +#define DEF_PGPORT 5480 +/* ... and once more as a string constant instead */ +#define DEF_PGPORT_STR "5480" + +/* + * Default soft limit on number of backend server processes per postmaster; + * this is just the default setting for the postmaster's -N switch. + * (--with-maxbackends=N) + */ +#define DEF_MAXBACKENDS 120 + +/* + *------------------------------------------------------------------------ + * Part 2: feature symbols and limits that are user-configurable, but + * only by editing this file ... there's no configure support for them. + * + * Editing this file and doing a full rebuild (and an initdb if noted) + * should be sufficient to change any of these. + *------------------------------------------------------------------------ + */ + +/* + * Hard limit on number of backend server processes per postmaster. + * Increasing this costs about 32 bytes per process slot as of v 6.5. + */ +#define MAXBACKENDS (DEF_MAXBACKENDS > 2048 ? DEF_MAXBACKENDS : 2048) + +/* + * Default number of buffers in shared buffer pool (each of size BLCKSZ). + * This is just the default setting for the postmaster's -B switch. + * Perhaps it ought to be configurable from a configure switch. + * NOTE: default setting corresponds to the minimum number of buffers + * that postmaster.c will allow for the default MaxBackends value. + */ +#define DEF_NBUFFERS (DEF_MAXBACKENDS > 8 ? DEF_MAXBACKENDS * 2 : 16) + +/* + * Size of a disk block --- this also limits the size of a tuple. + * You can set it bigger if you need bigger tuples (although TOAST + * should reduce the need to have large tuples, since fields can now + * be spread across multiple tuples). + * + * The maximum possible value of BLCKSZ is currently 2^15 (32768). + * This is determined by the 15-bit widths of the lp_off and lp_len + * fields in ItemIdData (see include/storage/itemid.h). + * + * CAUTION: changing BLCKSZ requires an initdb. + */ +// NZ #define BLCKSZ 8192 +#define BLCKSZ 16384 + +/* + * RELSEG_SIZE is the maximum number of blocks allowed in one disk file. + * Thus, the maximum size of a single file is RELSEG_SIZE * BLCKSZ; + * relations bigger than that are divided into multiple files. + * + * CAUTION: RELSEG_SIZE * BLCKSZ must be less than your OS' limit on file + * size. This is typically 2Gb or 4Gb in a 32-bit operating system. By + * default, we make the limit 1Gb to avoid any possible integer-overflow + * problems within the OS. A limit smaller than necessary only means we + * divide a large relation into more chunks than necessary, so it seems + * best to err in the direction of a small limit. (Besides, a power-of-2 + * value saves a few cycles in md.c.) + * + * CAUTION: changing RELSEG_SIZE requires an initdb. + */ +#define RELSEG_SIZE (0x40000000 / BLCKSZ) + +/* + * Maximum number of columns in an index and maximum number of arguments + * to a function. They must be the same value. + * + * The minimum value is 8 (index creation uses 8-argument functions). + * There is no specific upper limit, although large values will waste + * system-table space and processing time. + * + * CAUTION: changing these requires an initdb. + * + * BTW: if you need to call dynamically-loaded old-style C functions that + * have more than 16 arguments, you will also need to add cases to the + * switch statement in fmgr_oldstyle() in src/backend/utils/fmgr/fmgr.c. + * But consider converting such functions to new-style instead... + */ +#define INDEX_MAX_KEYS 64 +#define FUNC_MAX_ARGS INDEX_MAX_KEYS + +/* + * Define this to make libpgtcl's "pg_result -assign" command process C-style + * backslash sequences in returned tuple data and convert Postgres array + * attributes into Tcl lists. CAUTION: this conversion is *wrong* unless + * you install the routines in contrib/string/string_io to make the backend + * produce C-style backslash sequences in the first place. + */ +/* #define TCL_ARRAYS */ + +/* + * User locks are handled totally on the application side as long term + * cooperative locks which extend beyond the normal transaction boundaries. + * Their purpose is to indicate to an application that someone is `working' + * on an item. Define this flag to enable user locks. You will need the + * loadable module user-locks.c to use this feature. + */ +#define USER_LOCKS + +/* + * Define this if you want psql to _always_ ask for a username and a password + * for password authentication. + */ +/* #define PSQL_ALWAYS_GET_PASSWORDS */ + +/* + * Define this if you want to allow the lo_import and lo_export SQL functions + * to be executed by ordinary users. By default these functions are only + * available to the Postgres superuser. CAUTION: these functions are + * SECURITY HOLES since they can read and write any file that the Postgres + * backend has permission to access. If you turn this on, don't say we + * didn't warn you. + */ +/* #define ALLOW_DANGEROUS_LO_FUNCTIONS */ + +/* + * Use btree bulkload code: + * this code is moderately slow (~10% slower) compared to the regular + * btree (insertion) build code on sorted or well-clustered data. on + * random data, however, the insertion build code is unusable -- the + * difference on a 60MB heap is a factor of 15 because the random + * probes into the btree thrash the buffer pool. + * + * Great thanks to Paul M. Aoki (aoki@CS.Berkeley.EDU) + */ +#define FASTBUILD /* access/nbtree/nbtsort.c */ + +/* + * MAXPGPATH: standard size of a pathname buffer in Postgres (hence, + * maximum usable pathname length is one less). + * + * We'd use a standard system header symbol for this, if there weren't + * so many to choose from: MAXPATHLEN, _POSIX_PATH_MAX, MAX_PATH, PATH_MAX + * are all defined by different "standards", and often have different + * values on the same platform! So we just punt and use a reasonably + * generous setting here. + */ +#define MAXPGPATH 1024 + +/* + * DEFAULT_MAX_EXPR_DEPTH: default value of max_expr_depth SET variable. + */ +#define DEFAULT_MAX_EXPR_DEPTH 10000 + +/* + * You can try changing this if you have a machine with bytes of another + * size, but no guarantee... + */ +#define BITS_PER_BYTE 8 + +/* + * Define this if your operating system supports AF_UNIX family sockets. + */ +#if !defined(__QNX__) && !defined(__BEOS__) +# define HAVE_UNIX_SOCKETS 1 +#endif + +/* + * This is the default directory in which AF_UNIX socket files are placed. + * Caution: changing this risks breaking your existing client applications, + * which are likely to continue to look in the old directory. But if you + * just hate the idea of sockets in /tmp, here's where to twiddle it. + * You can also override this at runtime with the postmaster's -k switch. + */ +#define DEFAULT_PGSOCKET_DIR "/tmp" + +/* + *------------------------------------------------------------------------ + * These hand-configurable symbols are for enabling debugging code, + * not for controlling user-visible features or resource limits. + *------------------------------------------------------------------------ + */ + +/* Define this to cause pfree()'d memory to be cleared immediately, + * to facilitate catching bugs that refer to already-freed values. + * XXX For 7.1 development, define this automatically if --enable-cassert. + * In the long term it probably doesn't need to be on by default. + */ +#ifdef USE_ASSERT_CHECKING +# define CLOBBER_FREED_MEMORY +#endif + +/* Define this to check memory allocation errors (scribbling on more + * bytes than were allocated). + * XXX For 7.1 development, define this automatically if --enable-cassert. + * In the long term it probably doesn't need to be on by default. + */ +#ifdef USE_ASSERT_CHECKING +# define MEMORY_CONTEXT_CHECKING +#endif + +/* Define this to force all parse and plan trees to be passed through + * copyObject(), to facilitate catching errors and omissions in copyObject(). + */ +/* #define COPY_PARSE_PLAN_TREES */ + +/* Enable debugging print statements in the date/time support routines. */ +/* #define DATEDEBUG */ + +/* Enable debugging print statements for lock-related operations. */ +#define LOCK_DEBUG + +/* + * Other debug #defines (documentation, anyone?) + */ +/* #define IPORTAL_DEBUG */ +/* #define HEAPDEBUGALL */ +/* #define ISTRATDEBUG */ +/* #define ACLDEBUG */ +/* #define RTDEBUG */ +/* #define GISTDEBUG */ +/* #define OMIT_PARTIAL_INDEX */ + +/* + *------------------------------------------------------------------------ + * Part 3: system configuration information that is auto-detected by + * configure. In theory you shouldn't have to touch any of this stuff + * by hand. In the real world, configure might get it wrong... + *------------------------------------------------------------------------ + */ + +/* Define const as empty if your compiler doesn't grok const. */ +/* #undef const */ + +/* Define as your compiler's spelling of "inline", or empty if no inline. */ +/* #undef inline */ + +/* Define as empty if the C compiler doesn't understand "signed". */ +/* #undef signed */ + +/* Define as empty if the C compiler doesn't understand "volatile". */ +/* #undef volatile */ + +/* Define if your cpp understands the ANSI stringizing operators in macros */ +#define HAVE_STRINGIZE 1 + +/* Set to 1 if you have */ +#if !WIN32 +# define HAVE_CRYPT_H 1 +#endif + +/* Set to 1 if you have */ +/* #undef HAVE_DLD_H */ + +/* Set to 1 if you have */ +#if !WIN32 && !SUN4S && !SUNIS && !HPITANIUM +# define HAVE_ENDIAN_H 1 +#endif + +/* Set to 1 if you have */ +/* #undef HAVE_FP_CLASS_H */ + +/* Set to 1 if you have */ +#if LINUX +# define HAVE_GETOPT_H 1 +#else +/* #undef HAVE_GETOPT_H */ +#endif + +/* Set to 1 if you have */ +/* #undef HAVE_HISTORY_H */ + +/* Set to 1 if you have */ +#if SUN4S +# define HAVE_IEEEFP_H 1 +#else +/* #undef HAVE_IEEEFP_H */ +#endif + +/* Set to 1 if you have */ +#define HAVE_NETINET_TCP_H 1 + +/* Set to 1 if you have */ +/* #undef HAVE_READLINE_H */ + +/* Set to 1 if you have */ +#if !WIN32 +# define HAVE_READLINE_HISTORY_H 1 +#endif + +/* Set to 1 if you have */ +#if !WIN32 +# define HAVE_READLINE_READLINE_H 1 +#endif + +/* Set to 1 if you have */ +#if !WIN32 +# define HAVE_SYS_IPC_H 1 +#endif + +/* Set to 1 if you have */ +#if !WIN32 && !HP800 && !HPITANIUM +# define HAVE_SYS_SELECT_H 1 +#endif + +/* Set to 1 if you have */ +#define HAVE_SYS_UN_H 1 + +/* Set to 1 if you have */ +#define HAVE_SYS_SEM_H 1 + +/* Set to 1 if you have */ +#define HAVE_SYS_SHM_H 1 + +/* Set to 1 if you have */ +/* #undef HAVE_KERNEL_OS_H */ + +/* Set to 1 if you have */ +/* #undef HAVE_SUPPORTDEFS_H */ + +/* Set to 1 if you have */ +/* #undef HAVE_KERNEL_IMAGE_H */ + +/* Set to 1 if you have */ +#if !WIN32 +# define HAVE_TERMIOS_H 1 +#endif + +/* Set to 1 if you have */ +/* #undef HAVE_SYS_PSTAT_H */ + +/* Define if string.h and strings.h may both be included */ +#if !WIN32 +# define STRING_H_WITH_STRINGS_H 1 +#endif + +/* Define if you have the setproctitle function. */ +/* #undef HAVE_SETPROCTITLE */ + +/* Define if you have the pstat function. */ +/* #undef HAVE_PSTAT */ + +/* Define if the PS_STRINGS thing exists. */ +/* #undef HAVE_PS_STRINGS */ + +/* Define if you have the stricmp function. */ +/* #undef HAVE_STRICMP */ + +/* Set to 1 if you have history functions (either in libhistory or libreadline) */ +#define HAVE_HISTORY_FUNCTIONS 1 + +/* Set to 1 if you have */ +#define HAVE_PWD_H 1 + +/* Set to 1 if you have gettimeofday(a) instead of gettimeofday(a,b) */ +/* #undef GETTIMEOFDAY_1ARG */ +#ifdef GETTIMEOFDAY_1ARG +# define gettimeofday(a, b) gettimeofday(a) +#endif + +/* Set to 1 if you have snprintf() in the C library */ +#define HAVE_SNPRINTF 1 + +/* Set to 1 if your standard system headers declare snprintf() */ +#define HAVE_SNPRINTF_DECL 1 + +/* Set to 1 if you have vsnprintf() in the C library */ +#define HAVE_VSNPRINTF 1 + +/* Set to 1 if your standard system headers declare vsnprintf() */ +#define HAVE_VSNPRINTF_DECL 1 + +/* Set to 1 if you have strerror() */ +#define HAVE_STRERROR 1 + +/* Set to 1 if you have isinf() */ +#if !SUN4S && !SUNIS +# define HAVE_ISINF 1 +#endif +#ifndef HAVE_ISINF +extern int isinf(double x); +#endif + +/* + * These are all related to port/isinf.c + */ +/* #undef HAVE_FPCLASS */ +/* #undef HAVE_FP_CLASS */ +/* #undef HAVE_FP_CLASS_H */ +/* #undef HAVE_FP_CLASS_D */ +/* #undef HAVE_CLASS */ + +/* Set to 1 if you have gethostname() */ +#define HAVE_GETHOSTNAME 1 +#ifndef HAVE_GETHOSTNAME +extern int gethostname(char *name, int namelen); +#endif + +/* Set to 1 if struct tm has a tm_zone member */ +#if !__PPC__ // !FIX-bmz hack +# if defined(LINUX) +# define HAVE_TM_ZONE 1 +# elif defined(SUN4S) +# define HAVE_INT_TIMEZONE 1 +# endif +#endif + +/* Set to 1 if you have int timezone. + * NOTE: if both tm_zone and a global timezone variable exist, + * usingclause the tm_zone field should probably be preferred, + * since global variables are inherently not thread-safe. + */ +#if __PPC__ // !FIX-bmz hack +# define HAVE_INT_TIMEZONE 1 +#endif + +/* Set to 1 if you have cbrt() */ +#define HAVE_CBRT 1 + +/* Set to 1 if you have inet_aton() */ +#if !HP800 && !HPITANIUM +# define HAVE_INET_ATON 1 +#endif + +#ifndef HAVE_INET_ATON +# include +# include +# include +extern int inet_aton(const char *cp, struct in_addr *addr); +#endif + +/* Set to 1 if you have fcvt() */ +#define HAVE_FCVT 1 + +/* Set to 1 if you have rint() */ +#define HAVE_RINT 1 + +/* Set to 1 if you have finite() */ +#if !HP800 && !HPITANIUM +# define HAVE_FINITE 1 +#endif + +/* Set to 1 if you have memmove() */ +#define HAVE_MEMMOVE 1 + +/* Set to 1 if you have sigsetjmp() */ +#define HAVE_SIGSETJMP 1 + +/* + * When there is no sigsetjmp, its functionality is provided by plain + * setjmp. Incidentally, nothing provides setjmp's functionality in + * that case. + */ +#ifndef HAVE_SIGSETJMP +# define sigjmp_buf jmp_buf +# define sigsetjmp(x, y) setjmp(x) +# define siglongjmp longjmp +#endif + +/* Set to 1 if you have sysconf() */ +#define HAVE_SYSCONF 1 + +/* Set to 1 if you have getrusage() */ +#define HAVE_GETRUSAGE 1 + +/* Set to 1 if you have waitpid() */ +#define HAVE_WAITPID 1 + +/* Set to 1 if you have setsid() */ +#define HAVE_SETSID 1 + +/* Set to 1 if you have sigprocmask() */ +#define HAVE_SIGPROCMASK 1 + +/* Set to 1 if you have sigprocmask() */ +#define HAVE_STRCASECMP 1 +#ifndef HAVE_STRCASECMP +extern int strcasecmp(const char *s1, const char *s2); +#endif + +/* Set to 1 if you have strtol() */ +#define HAVE_STRTOL 1 + +/* Set to 1 if you have strtoul() */ +#define HAVE_STRTOUL 1 + +/* Set to 1 if you have strdup() */ +#define HAVE_STRDUP 1 +#ifndef HAVE_STRDUP +extern char *strdup(char const *); +#endif + +/* Set to 1 if you have random() */ +#define HAVE_RANDOM 1 +#ifndef HAVE_RANDOM +extern long random(void); +#endif + +/* Set to 1 if you have srandom() */ +#define HAVE_SRANDOM 1 +#ifndef HAVE_SRANDOM +extern void srandom(unsigned int seed); +#endif + +/* The random() function is expected to yield values 0 .. MAX_RANDOM_VALUE */ +/* Currently, all known implementations yield 0..2^31-1, so we just hardwire + * this constant. We could do a configure test if it proves to be necessary. + * CAUTION: Think not to replace this with RAND_MAX. RAND_MAX defines the + * maximum value of the older rand() function, which is often different from + * --- and considerably inferior to --- random(). + */ +#define MAX_RANDOM_VALUE (0x7FFFFFFF) + +/* Define if you have dlopen() */ +#define HAVE_DLOPEN 1 + +/* Define if you have fdatasync() */ +#if !SUN4S +# define HAVE_FDATASYNC 1 +#endif + +/* Define if the standard header unistd.h declares fdatasync() */ +#define HAVE_FDATASYNC_DECL 1 + +#if defined(HAVE_FDATASYNC) && !defined(HAVE_FDATASYNC_DECL) +extern int fdatasync(int fildes); +#endif + +/* Set to 1 if you have libz.a */ +#if SUN4S +/* #undef HAVE_LIBZ */ +#else +# define HAVE_LIBZ 1 +#endif + +/* Set to 1 if you have libreadline.a */ +#define HAVE_LIBREADLINE 1 + +/* Set to 1 if you have libhistory.a */ +/* #undef HAVE_LIBHISTORY */ + +/* Set to 1 if your libreadline defines rl_completion_append_character */ +#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1 + +/* Set to 1 if filename_completion_function is declared in the readline header */ +#define HAVE_FILENAME_COMPLETION_FUNCTION_DECL 1 + +/* Set to 1 if you have getopt_long() (GNU long options) */ +#if !SUN4S +# define HAVE_GETOPT_LONG 1 +#endif + +/* Set to 1 if you have union semun */ +/* #undef HAVE_UNION_SEMUN */ + +/* Set to 1 if you have struct sockaddr_un */ +#if !WIN32 +# define HAVE_STRUCT_SOCKADDR_UN 1 +#endif + +/* Set to 1 if type "long int" works and is 64 bits */ +/* #undef HAVE_LONG_INT_64 */ + +/* Set to 1 if type "long long int" works and is 64 bits */ +#define HAVE_LONG_LONG_INT_64 + +/* Set to 1 if type "long long int" constants should be suffixed by LL */ +#if SUN4S +# define HAVE_LL_CONSTANTS 1 +#endif + +/* + * These must be defined as the alignment requirement (NOT the size) of + * each of the basic C data types (except char, which we assume has align 1). + * MAXIMUM_ALIGNOF is the largest alignment requirement for any C data type. + * ALIGNOF_LONG_LONG_INT need only be defined if HAVE_LONG_LONG_INT_64 is. + */ +#define ALIGNOF_SHORT 2 +#define ALIGNOF_INT 4 +#define ALIGNOF_LONG 4 +#if SUN4S || (HPITANIUM && defined(__LP64__)) +# define ALIGNOF_LONG_LONG_INT 8 +# define ALIGNOF_DOUBLE 8 +# define MAXIMUM_ALIGNOF 8 +#else +# define ALIGNOF_LONG_LONG_INT 4 +# define ALIGNOF_DOUBLE 4 +# define MAXIMUM_ALIGNOF 4 +#endif + +/* + * 64 bit compatibility - below + * we use sizes appropriate for LP64 data model + */ + +#undef ALIGNOF_DOUBLE +#ifdef __x86_64__ +# define ALIGNOF_DOUBLE 8 +#else +# define ALIGNOF_DOUBLE 4 +#endif +#undef ALIGNOF_LONG +#ifdef __x86_64__ +# define ALIGNOF_LONG 8 +#else +# define ALIGNOF_LONG 4 +#endif +#undef ALIGNOF_LONG_LONG_INT +#ifndef __x86_64__ +# define ALIGNOF_LONG_LONG_INT 4 +#endif +#undef FLOAT8PASSBYVAL +#ifdef __x86_64__ +# define FLOAT8PASSBYVAL true +#else +# define FLOAT8PASSBYVAL false +#endif +#undef HAVE_LL_CONSTANTS +#ifndef __x86_64__ +# define HAVE_LL_CONSTANTS 1 +#endif +#undef HAVE_LONG_INT_64 +#undef HAVE_LONG_LONG_INT_64 +#ifdef __x86_64__ +# define HAVE_LONG_INT_64 1 +#else +# define HAVE_LONG_LONG_INT_64 1 +#endif +#undef INT64_FORMAT +#define INT64_FORMAT "%" PRId64 "" +#undef MAXIMUM_ALIGNOF +#if defined(__x86_64__) || (HPITANIUM && defined(__LP64__)) || SUN4S +# define MAXIMUM_ALIGNOF 8 +#else +# define MAXIMUM_ALIGNOF 4 +#endif +#undef SIZEOF_SIZE_T +#ifdef __x86_64__ +# define SIZEOF_SIZE_T 8 +#else +# define SIZEOF_SIZE_T 4 +#endif +#undef SIZEOF_UNSIGNED_LONG +#ifdef __x86_64__ +# define SIZEOF_UNSIGNED_LONG 8 +#else +# define SIZEOF_UNSIGNED_LONG 4 +#endif +#undef UINT64_FORMAT +#define UINT64_FORMAT "%" PRIu64 "" +#undef USE_FLOAT8_BYVAL +#ifdef __x86_64__ +# define USE_FLOAT8_BYVAL 1 +#endif + +#undef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 + +/* end of 64 bit compatibility */ + +/* Define as the type of the 3rd argument to accept() */ + +/* + * :host64: possible change + * + * it might be needed to change the ACCEPT_TYPE_ARG3 to socklen_t + * due to changed accept prototype. We should rely + * on socklen_t type from socket.h + * + * extern int accept (int __fd, __SOCKADDR_ARG __addr, + * socklen_t *__restrict __addr_len); + */ + +#if SUN4S || HPITANIUM +# define ACCEPT_TYPE_ARG3 int +#else +# define ACCEPT_TYPE_ARG3 socklen_t // :host64: +#endif + +/* Define if POSIX signal interface is available */ +#if !WIN32 +# define HAVE_POSIX_SIGNALS +#endif + +/* Define if C++ compiler accepts "usingclause namespace std" */ +/* #undef HAVE_NAMESPACE_STD */ + +/* Define if C++ compiler accepts "#include " */ +/* #undef HAVE_CXX_STRING_HEADER */ + +/* Define if you have the optreset variable */ +/* #undef HAVE_INT_OPTRESET */ + +/* Define if you have strtoll() */ +#if !HP800 && !AIX && !HPITANIUM +# define HAVE_STRTOLL 1 +#endif + +/* Define if you have strtoq() */ +/* #undef HAVE_STRTOQ */ + +/* If strtoq() exists, rename it to the more standard strtoll() */ +#if defined(HAVE_LONG_LONG_INT_64) && !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ) +# define strtoll strtoq +# define HAVE_STRTOLL 1 +#endif + +/* Define if you have strtoull() */ +#define HAVE_STRTOULL 1 + +/* Define if you have strtouq() */ +/* #undef HAVE_STRTOUQ */ + +/* If strtouq() exists, rename it to the more standard strtoull() */ +#if defined(HAVE_LONG_LONG_INT_64) && !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ) +# define strtoull strtouq +# define HAVE_STRTOULL 1 +#endif + +/* Define if you have atexit() */ +#define HAVE_ATEXIT 1 + +/* Define if you have on_exit() */ +/* #undef HAVE_ON_EXIT */ + +/* + *------------------------------------------------------------------------ + * Part 4: pull in system-specific declarations. + * + * This is still configure's responsibility, because it picks where + * the "os.h" symlink points... + *------------------------------------------------------------------------ + */ + +/* + * Pull in OS-specific declarations (usingclause link created by configure) + */ + +#include "os.h" + +/* + * The following is used as the arg list for signal handlers. Any ports + * that take something other than an int argument should override this in + * the port-specific os.h file. Note that variable names are required + * because it is used in both the prototypes as well as the definitions. + * Note also the long name. We expect that this won't collide with + * other names causing compiler warnings. + */ + +#ifndef SIGNAL_ARGS +# define SIGNAL_ARGS int postgres_signal_arg +#endif + +#endif /* CONFIG_H */ diff --git a/nz_include/postgres_ext.h b/nz_include/postgres_ext.h new file mode 100644 index 00000000..5f3b46c8 --- /dev/null +++ b/nz_include/postgres_ext.h @@ -0,0 +1,88 @@ +#ifndef POSTGRES_EXT_H +#define POSTGRES_EXT_H +/// @file postgres_ext.h +/// @brief Definitions shared between postgres and other parts of NPS +/// +////////////////////////////////////////////////////////////////////// +/// Copyright (c) 2008 Netezza Corporation. +////////////////////////////////////////////////////////////////////// +/// +/// Description: +/// +/// +/// +/// postgres_ext.h +/// +/// This file contains declarations of things that are visible everywhere +/// in PostgreSQL *and* are visible to clients of frontend interface libraries. +/// For example, the Oid type is part of the API of libpq and other libraries. +/// +/// Declarations which are specific to a particular interface should +/// go in the header file for that interface (such as libpq-fe.h). This +/// file is only for fundamental Postgres declarations. +/// +/// User-written C functions don't count as "external to Postgres." +/// Those function much as local modifications to the backend itself, and +/// use header files that are otherwise internal to Postgres to interface +/// with the backend. +/// +/// +/// +/// dd - 2008-02-07 +////////////////////////////////////////////////////////////////////// + +#include "limits.h" + +// :host64: +#include "comtypes.h" + +#define InvalidOid ((Oid) 0) + +/* + * NAMEDATALEN is the max length for system identifiers (e.g. table names, + * attribute names, function names, etc.) + * + * NOTE that databases with different NAMEDATALEN's cannot interoperate! + */ +#define NAMEDATALEN 256 // supported length for database object names is 128 UTF-8 characters +#define MAX_IDENTIFIER 128 // supported number of characters for database object names +#define MAX_CFIELD 512 // supported number of characters for client info field names +#define MAX_BYTES_PER_NCHAR 4 +#define CFIELDDATALEN \ + (MAX_CFIELD * MAX_BYTES_PER_NCHAR) // supported length for client information fields +#define MAX_SYSOID 200000 +#define NUM_BASE_VIEW_ATTRS 6 +#define NUM_ROW_SECURE_ATTRS 4 +#define MAX_PASSWORD_LENGTH 2048 // maximum password length + +/* + * StrNCpy + * Like standard library function strncpy(), except that result string + * is guaranteed to be null-terminated --- that is, at most N-1 bytes + * of the source string will be kept. + * Also, the macro returns no result (too hard to do that without + * evaluating the arguments multiple times, which seems worse). + * + * BTW: when you need to copy a non-null-terminated string (like a text + * datum) and add a null, do not do it with StrNCpy(..., len+1). That + * might seem to work, but it fetches one byte more than there is in the + * text object. One fine day you'll have a SIGSEGV because there isn't + * another byte before the end of memory. Don't laugh, we've had real + * live bug reports from real live users over exactly this mistake. + * Do it honestly with "memcpy(dst,src,len); dst[len] = '\0';", instead. + */ +#ifdef StrNCpy +# undef StrNCpy +#endif +#define StrNCpy(dst, src, len) \ + do { \ + char* _dst = (dst); \ + int _len = (len); \ + \ + if (_len > 0) { \ + strncpy(_dst, (src), _len); \ + _dst[_len - 1] = '\0'; \ + } \ + } while (0) + +#endif diff --git a/nz_lib/libnzpq.so b/nz_lib/libnzpq.so new file mode 100755 index 0000000000000000000000000000000000000000..b5d7c646cf5cd9601c8afe6144795ab0d0709e66 GIT binary patch literal 471096 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%0A#WR>_;tfb)FEJQ>??@2>kA^1ZwKGV;DGTLqsl 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

H8+R0hA%bio8*iOKP@LYJ?~zac>Xo% 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 literal 0 HcmV?d00001 diff --git a/psycopg/connection.h b/psycopg/connection.h index 6d61c2eb..9b9c1e3e 100644 --- a/psycopg/connection.h +++ b/psycopg/connection.h @@ -102,7 +102,7 @@ struct connectionObject { int server_version; /* server version */ PGconn *pgconn; /* the postgresql connection */ - PGcancel *cancel; /* the cancellation structure */ + int *cancel; /* the cancellation structure */ /* Weakref to the object executing an asynchronous query. The object * is a cursor for async connections, but it may be something else diff --git a/setup.py b/setup.py index 37f6b5c0..220bd6f1 100644 --- a/setup.py +++ b/setup.py @@ -339,6 +339,9 @@ For further information please check the 'doc/src/install.rst' file (also at def finalize_linux(self): """Finalize build system configuration on GNU/Linux platform.""" # tell piro that GCC is fine and dandy, but not so MS compilers + self.libraries.append("krb5") + self.libraries.append("ssl") + self.libraries.append("k5crypto") for extension in self.extensions: extension.extra_compile_args.append( '-Wdeclaration-after-statement') @@ -358,16 +361,18 @@ For further information please check the 'doc/src/install.rst' file (also at pg_config_helper = PostgresConfig(self) self.include_dirs.append(".") + self.include_dirs.append("./nz_include") if self.static_libpq: if not getattr(self, 'link_objects', None): self.link_objects = [] self.link_objects.append( os.path.join(pg_config_helper.query("libdir"), "libpq.a")) else: - self.libraries.append("pq") + self.libraries.append("nzpq") try: self.library_dirs.append(pg_config_helper.query("libdir")) + self.library_dirs.append("./nz_lib") self.include_dirs.append(pg_config_helper.query("includedir")) self.include_dirs.append(pg_config_helper.query("includedir-server"))