This is libpq.h in view mode; [Download] [Up]
/* ---------------------------------------------------------------- * FILE * libpq.h * * DESCRIPTION * POSTGRES LIBPQ buffer structure definitions. * * NOTES * This file contains definitions for structures and * externs for functions used by both frontend applications * and the POSTGRES backend. See the files libpq-fe.h and * libpq-be.h for frontend/backend specific information * * IDENTIFICATION * /usr/local/devel/postgres-v4r2/src/backend/tmp/RCS/libpq.h,v 1.26 1994/02/07 11:46:13 aoki Exp * ---------------------------------------------------------------- */ #ifndef LibpqIncluded /* include this file only once. */ #define LibpqIncluded 1 #include <stdio.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include "tmp/simplelists.h" #include "utils/exc.h" #include "tmp/postgres.h" #include "tmp/pqcomm.h" /* ---------------- * PQArgBlock -- * Information (pointer to array of this structure) required * for the PQfn() call. * ---------------- */ typedef struct { int len; int isint; union { int *ptr; /* can't use void (dec compiler barfs) */ int integer; } u; } PQArgBlock; /* ---------------- * TypeBlock -- * Information about an attribute. * ---------------- */ #define NameLength 16 typedef struct TypeBlock { char name[NameLength]; /* name of the attribute */ int adtid; /* adtid of the type */ int adtsize; /* adtsize of the type */ } TypeBlock; /* ---------------- * TupleBlock -- * Data of a tuple. * ---------------- */ #define TupleBlockSize 100 typedef struct TupleBlock { char **values[TupleBlockSize]; /* an array of tuples */ int *lengths[TupleBlockSize]; /* an array of length vec. foreach tuple */ struct TupleBlock *next; /* next tuple block */ int tuple_index; /* current tuple index */ } TupleBlock; /* ---------------- * GroupBuffer -- * A group of tuples with the same attributes. * ---------------- */ typedef struct GroupBuffer { int no_tuples; /* number of tuples in this group */ int no_fields; /* number of attributes */ TypeBlock *types; /* types of the attributes */ TupleBlock *tuples; /* tuples in this group */ struct GroupBuffer *next; /* next group */ } GroupBuffer; /* ---------------- * PortalBuffer -- * Data structure of a portal buffer. * ---------------- */ typedef struct PortalBuffer { int rule_p; /* 1 if this is an asynchronized portal. */ int no_tuples; /* number of tuples in this portal buffer */ int no_groups; /* number of tuple groups */ GroupBuffer *groups; /* linked list of tuple groups */ } PortalBuffer; /* ---------------- * PortalEntry -- * an entry in the global portal table * * Note: the portalcxt is only meaningful for PQcalls made from * within a postgres backend. frontend apps should ignore it. * ---------------- */ #define PortalNameLength 32 typedef struct PortalEntry { char name[PortalNameLength]; /* name of this portal */ PortalBuffer *portal; /* tuples contained in this portal */ Pointer portalcxt; /* memory context (for backend) */ Pointer result; /* result for PQexec */ } PortalEntry; /* #define MAXPORTALS 10 */ /* the portals[] array should not be statically sized to MAXPORTALS, */ /* now portals[] starts off at PORTALS_INITIAL_SIZE, and grows dynamically */ #define PORTALS_INITIAL_SIZE 32 #define PORTALS_GROW_BY 32 extern PortalEntry** portals; extern size_t portals_array_size; /* * Asynchronous notification */ typedef struct PQNotifyList { char relname[NAMEDATALEN]; /* name of relation containing data */ int be_pid; /* process id of backend */ int valid; /* has this already been handled by user. */ SLNode Node; } PQNotifyList; /* * Exceptions. */ #define libpq_raise(X, Y) ExcRaise((Exception *)(X), (ExcDetail) (Y),\ (ExcData)0, (ExcMessage) 0) extern Exception MemoryError, PortalError, PostquelError, ProtocolError; /* * POSTGRES backend dependent Constants. */ #define initstr_length 256 #define error_msg_length 4096 #define command_length 20 #define remark_length 80 #define portal_name_length 16 extern char PQerrormsg[error_msg_length]; /* * External functions. */ /* portal.c */ extern void pqdebug ARGS((char *target, char *msg)); extern void pqdebug2 ARGS((char *target, char *msg1, char *msg2)); extern void PQtrace ARGS((void)); extern void PQuntrace ARGS((void)); extern int PQnportals ARGS((int rule_p)); extern void PQpnames ARGS((char **pnames, int rule_p)); extern PortalBuffer *PQparray ARGS((char *pname)); extern int PQrulep ARGS((PortalBuffer *portal)); extern int PQntuples ARGS((PortalBuffer *portal)); extern int PQninstances ARGS((PortalBuffer *portal)); extern int PQngroups ARGS((PortalBuffer *portal)); extern int PQntuplesGroup ARGS((PortalBuffer *portal, int group_index)); extern int PQninstancesGroup ARGS((PortalBuffer *portal, int group_index)); extern int PQnfieldsGroup ARGS((PortalBuffer *portal, int group_index)); extern int PQfnumberGroup ARGS((PortalBuffer *portal, int group_index, char *field_name)); extern char *PQfnameGroup ARGS((PortalBuffer *portal, int group_index, int field_number)); extern GroupBuffer *PQgroup ARGS((PortalBuffer *portal, int tuple_index)); extern int PQgetgroup ARGS((PortalBuffer *portal, int tuple_index)); extern int PQnfields ARGS((PortalBuffer *portal, int tuple_index)); extern int PQfnumber ARGS((PortalBuffer *portal, int tuple_index, char *field_name)); extern char *PQfname ARGS((PortalBuffer *portal, int tuple_index, int field_number)); extern int PQftype ARGS((PortalBuffer *portal, int tuple_index, int field_number)); extern int PQsametype ARGS((PortalBuffer *portal, int tuple_index1, int tuple_index2)); extern char *PQgetvalue ARGS((PortalBuffer *portal, int tuple_index, int field_number)); extern int PQgetlength ARGS((PortalBuffer *portal, int tuple_index, int field_number)); extern void PQclear ARGS((char *pname)); extern void PQcleanNotify ARGS((void)); extern void PQnotifies_init ARGS((void)); extern PQNotifyList *PQnotifies ARGS((void)); extern void PQremoveNotify ARGS((PQNotifyList *nPtr)); extern void PQappendNotify ARGS((char *relname, int pid)); /* portalbuf.c */ extern caddr_t pbuf_alloc ARGS((size_t size)); extern void pbuf_free ARGS((caddr_t pointer)); extern PortalBuffer *pbuf_addPortal ARGS((void)); extern GroupBuffer *pbuf_addGroup ARGS((PortalBuffer *portal)); extern TypeBlock *pbuf_addTypes ARGS((int n)); extern TupleBlock *pbuf_addTuples ARGS((void)); extern char **pbuf_addTuple ARGS((int n)); extern int *pbuf_addTupleValueLengths ARGS((int n)); extern char *pbuf_addValues ARGS((int n)); extern PortalEntry *pbuf_addEntry ARGS((void)); extern void pbuf_freeEntry ARGS((int i)); extern void pbuf_freeTypes ARGS((TypeBlock *types)); extern void pbuf_freeTuples ARGS((TupleBlock *tuples, int no_tuples, int no_fields)); extern void pbuf_freeGroup ARGS((GroupBuffer *group)); extern void pbuf_freePortal ARGS((PortalBuffer *portal)); extern int pbuf_getIndex ARGS((char *pname)); extern void pbuf_setportalinfo ARGS((PortalEntry *entry, char *pname)); extern PortalEntry *pbuf_setup ARGS((char *pname)); extern void pbuf_close ARGS((char *pname)); extern GroupBuffer *pbuf_findGroup ARGS((PortalBuffer *portal, int group_index)); extern int pbuf_findFnumber ARGS((GroupBuffer *group, char *field_name)); extern void pbuf_checkFnumber ARGS((GroupBuffer *group, int field_number)); extern char *pbuf_findFname ARGS((GroupBuffer *group, int field_number)); /* pqcomm.c */ extern void pq_init ARGS((int fd)); extern void pq_gettty ARGS((char *tp)); extern int pq_getport ARGS((void)); extern void pq_close ARGS((void)); extern void pq_flush ARGS((void)); extern int pq_getstr ARGS((char *s, int maxlen)); extern int PQgetline ARGS((char *s, int maxlen)); extern int PQputline ARGS((char *s)); extern int pq_getnchar ARGS((char *s, int off, int maxlen)); extern int pq_getint ARGS((int b)); extern void pq_putstr ARGS((char *s)); extern void pq_putnchar ARGS((char *s, int n)); extern void pq_putint ARGS((int i, int b)); extern int pq_sendoob ARGS((char *msg, int len)); extern int pq_recvoob ARGS((char *msgPtr, int *lenPtr)); extern int pq_getinaddr ARGS((struct sockaddr_in *sin, char *host, int port)); extern int pq_getinserv ARGS((struct sockaddr_in *sin, char *host, char *serv)); extern int pq_connect ARGS((char *dbname, char *user, char *args, char *hostName, char *debugTty, char *execFile, int portName)); extern void pq_regoob ARGS((void (*fptr)())); extern void pq_unregoob ARGS((void)); extern void pq_async_notify ARGS((void)); extern int StreamServerPort ARGS((char *hostName, int portName, int *fdP)); extern int StreamConnection ARGS((int server_fd, Port *port)); extern int StreamClose ARGS((int sock)); extern int StreamOpen ARGS((char *hostName, int portName, Port *port)); #endif /* LibpqIncluded */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.