diff options
Diffstat (limited to 'src/include/libpq/libpq.h')
-rw-r--r-- | src/include/libpq/libpq.h | 328 |
1 files changed, 172 insertions, 156 deletions
diff --git a/src/include/libpq/libpq.h b/src/include/libpq/libpq.h index 080a1052deb..1b074cba118 100644 --- a/src/include/libpq/libpq.h +++ b/src/include/libpq/libpq.h @@ -1,18 +1,18 @@ /*------------------------------------------------------------------------- * * libpq.h-- - * POSTGRES LIBPQ buffer structure definitions. + * POSTGRES LIBPQ buffer structure definitions. * * * Copyright (c) 1994, Regents of the University of California * - * $Id: libpq.h,v 1.5 1996/11/05 07:38:17 scrappy Exp $ + * $Id: libpq.h,v 1.6 1997/09/07 04:58:24 momjian Exp $ * * 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 + * 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 * *------------------------------------------------------------------------- */ @@ -23,118 +23,130 @@ /* ---------------- * PQArgBlock -- - * Information (pointer to array of this structure) required - * for the PQfn() call. + * 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; +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. + * Information about an attribute. * ---------------- */ #define NameLength 16 -typedef struct TypeBlock { - char name[NAMEDATALEN]; /* name of the attribute */ - int adtid; /* adtid of the type */ - int adtsize; /* adtsize of the type */ -} TypeBlock; +typedef struct TypeBlock +{ + char name[NAMEDATALEN]; /* name of the attribute */ + int adtid; /* adtid of the type */ + int adtsize; /* adtsize of the type */ +} TypeBlock; /* ---------------- * TupleBlock -- - * Data of a tuple. + * 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; +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. + * 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; +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. + * 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; +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 + * 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. + * 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; +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 PORTALS_INITIAL_SIZE 32 -#define PORTALS_GROW_BY 32 +#define PORTALS_GROW_BY 32 /* in portalbuf.c */ -extern PortalEntry** portals; -extern size_t portals_array_size; +extern PortalEntry **portals; +extern size_t portals_array_size; /* - * Asynchronous notification + * 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; +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) + (ExcData)0, (ExcMessage) 0) /* in portal.c */ -extern Exception MemoryError, PortalError, PostquelError, ProtocolError; +extern Exception MemoryError, + PortalError, + PostquelError, + ProtocolError; -/* - * POSTGRES backend dependent Constants. +/* + * POSTGRES backend dependent Constants. */ /* ERROR_MSG_LENGTH should really be the same as ELOG_MAXLEN in utils/elog.h*/ @@ -142,107 +154,111 @@ extern Exception MemoryError, PortalError, PostquelError, ProtocolError; #define COMMAND_LENGTH 20 #define REMARK_LENGTH 80 -extern char PQerrormsg[ERROR_MSG_LENGTH]; /* in portal.c */ +extern char PQerrormsg[ERROR_MSG_LENGTH]; /* in portal.c */ /* * External functions. */ -/* - * prototypes for functions in portal.c +/* + * prototypes for functions in portal.c */ -extern void pqdebug(char *target, char *msg); -extern void pqdebug2(char *target, char *msg1, char *msg2); -extern void PQtrace(void); -extern void PQuntrace(void); -extern int PQnportals(int rule_p); -extern void PQpnames(char **pnames, int rule_p); +extern void pqdebug(char *target, char *msg); +extern void pqdebug2(char *target, char *msg1, char *msg2); +extern void PQtrace(void); +extern void PQuntrace(void); +extern int PQnportals(int rule_p); +extern void PQpnames(char **pnames, int rule_p); extern PortalBuffer *PQparray(char *pname); -extern int PQrulep(PortalBuffer *portal); -extern int PQntuples(PortalBuffer *portal); -extern int PQninstances(PortalBuffer *portal); -extern int PQngroups(PortalBuffer *portal); -extern int PQntuplesGroup(PortalBuffer *portal, int group_index); -extern int PQninstancesGroup(PortalBuffer *portal, int group_index); -extern int PQnfieldsGroup(PortalBuffer *portal, int group_index); -extern int PQfnumberGroup(PortalBuffer *portal, int group_index, char *field_name); -extern char *PQfnameGroup(PortalBuffer *portal, int group_index, int field_number); -extern int PQftypeGroup(PortalBuffer *portal, int group_index, - int field_number); -extern int PQfsizeGroup(PortalBuffer *portal, int group_index, - int field_number); -extern GroupBuffer *PQgroup(PortalBuffer *portal, int tuple_index); -extern int PQgetgroup(PortalBuffer *portal, int tuple_index); -extern int PQnfields(PortalBuffer *portal, int tuple_index); -extern int PQfnumber(PortalBuffer *portal, int tuple_index, char *field_name); - extern char *PQfname(PortalBuffer *portal, int tuple_index, int field_number); -extern int PQftype(PortalBuffer *portal, int tuple_index, int field_number); -extern int PQfsize(PortalBuffer *portal, int tuple_index, int field_number); -extern int PQsametype(PortalBuffer *portal, int tuple_index1, int tuple_index2); -extern char *PQgetvalue(PortalBuffer *portal, int tuple_index, int field_number); -extern char *PQgetAttr(PortalBuffer *portal, int tuple_index, int field_number); -extern int PQgetlength(PortalBuffer *portal, int tuple_index, int field_number); -extern void PQclear(char *pname); -extern void PQcleanNotify(void); -extern void PQnotifies_init(void); +extern int PQrulep(PortalBuffer * portal); +extern int PQntuples(PortalBuffer * portal); +extern int PQninstances(PortalBuffer * portal); +extern int PQngroups(PortalBuffer * portal); +extern int PQntuplesGroup(PortalBuffer * portal, int group_index); +extern int PQninstancesGroup(PortalBuffer * portal, int group_index); +extern int PQnfieldsGroup(PortalBuffer * portal, int group_index); +extern int PQfnumberGroup(PortalBuffer * portal, int group_index, char *field_name); +extern char *PQfnameGroup(PortalBuffer * portal, int group_index, int field_number); +extern int +PQftypeGroup(PortalBuffer * portal, int group_index, + int field_number); +extern int +PQfsizeGroup(PortalBuffer * portal, int group_index, + int field_number); +extern GroupBuffer *PQgroup(PortalBuffer * portal, int tuple_index); +extern int PQgetgroup(PortalBuffer * portal, int tuple_index); +extern int PQnfields(PortalBuffer * portal, int tuple_index); +extern int PQfnumber(PortalBuffer * portal, int tuple_index, char *field_name); +extern char *PQfname(PortalBuffer * portal, int tuple_index, int field_number); +extern int PQftype(PortalBuffer * portal, int tuple_index, int field_number); +extern int PQfsize(PortalBuffer * portal, int tuple_index, int field_number); +extern int PQsametype(PortalBuffer * portal, int tuple_index1, int tuple_index2); +extern char *PQgetvalue(PortalBuffer * portal, int tuple_index, int field_number); +extern char *PQgetAttr(PortalBuffer * portal, int tuple_index, int field_number); +extern int PQgetlength(PortalBuffer * portal, int tuple_index, int field_number); +extern void PQclear(char *pname); +extern void PQcleanNotify(void); +extern void PQnotifies_init(void); extern PQNotifyList *PQnotifies(void); -extern void PQremoveNotify(PQNotifyList *nPtr); -extern void PQappendNotify(char *relname, int pid); -/* - * prototypes for functions in portalbuf.c +extern void PQremoveNotify(PQNotifyList * nPtr); +extern void PQappendNotify(char *relname, int pid); + +/* + * prototypes for functions in portalbuf.c */ -extern caddr_t pbuf_alloc(size_t size); -extern void pbuf_free(caddr_t pointer); +extern caddr_t pbuf_alloc(size_t size); +extern void pbuf_free(caddr_t pointer); extern PortalBuffer *pbuf_addPortal(void); -extern GroupBuffer *pbuf_addGroup(PortalBuffer *portal); +extern GroupBuffer *pbuf_addGroup(PortalBuffer * portal); extern TypeBlock *pbuf_addTypes(int n); extern TupleBlock *pbuf_addTuples(void); -extern char **pbuf_addTuple(int n); -extern int *pbuf_addTupleValueLengths(int n); -extern char *pbuf_addValues(int n); +extern char **pbuf_addTuple(int n); +extern int *pbuf_addTupleValueLengths(int n); +extern char *pbuf_addValues(int n); extern PortalEntry *pbuf_addEntry(void); -extern void pbuf_freeEntry(int i); -extern void pbuf_freeTypes(TypeBlock *types); -extern void pbuf_freeTuples(TupleBlock *tuples, int no_tuples, int no_fields); -extern void pbuf_freeGroup(GroupBuffer *group); -extern void pbuf_freePortal(PortalBuffer *portal); -extern int pbuf_getIndex(char *pname); -extern void pbuf_setportalinfo(PortalEntry *entry, char *pname); +extern void pbuf_freeEntry(int i); +extern void pbuf_freeTypes(TypeBlock * types); +extern void pbuf_freeTuples(TupleBlock * tuples, int no_tuples, int no_fields); +extern void pbuf_freeGroup(GroupBuffer * group); +extern void pbuf_freePortal(PortalBuffer * portal); +extern int pbuf_getIndex(char *pname); +extern void pbuf_setportalinfo(PortalEntry * entry, char *pname); extern PortalEntry *pbuf_setup(char *pname); -extern void pbuf_close(char *pname); -extern GroupBuffer *pbuf_findGroup(PortalBuffer *portal, int group_index); -extern int pbuf_findFnumber(GroupBuffer *group, char *field_name); -extern void pbuf_checkFnumber(GroupBuffer *group, int field_number); -extern char *pbuf_findFname(GroupBuffer *group, int field_number); - -/* - * prototypes for functions in pqcomm.c +extern void pbuf_close(char *pname); +extern GroupBuffer *pbuf_findGroup(PortalBuffer * portal, int group_index); +extern int pbuf_findFnumber(GroupBuffer * group, char *field_name); +extern void pbuf_checkFnumber(GroupBuffer * group, int field_number); +extern char *pbuf_findFname(GroupBuffer * group, int field_number); + +/* + * prototypes for functions in pqcomm.c */ -extern void pq_init(int fd); -extern void pq_gettty(char *tp); -extern int pq_getport(void); -extern void pq_close(void); -extern void pq_flush(void); -extern int pq_getstr(char *s, int maxlen); -extern int PQgetline(char *s, int maxlen); -extern int PQputline(char *s); -extern int pq_getnchar(char *s, int off, int maxlen); -extern int pq_getint(int b); -extern void pq_putstr(char *s); -extern void pq_putnchar(char *s, int n); -extern void pq_putint(int i, int b); -extern int pq_sendoob(char *msg, int len); -extern int pq_recvoob(char *msgPtr, int *lenPtr); -extern int pq_getinaddr(struct sockaddr_in *sin, char *host, int port); -extern int pq_getinserv(struct sockaddr_in *sin, char *host, char *serv); -extern int pq_connect(char *dbname, char *user, char *args, char *hostName, - char *debugTty, char *execFile, short portName); -extern int StreamOpen(char *hostName, short portName, Port *port); -extern void pq_regoob(void (*fptr)()); -extern void pq_unregoob(void); -extern void pq_async_notify(void); -extern int StreamServerPort(char *hostName, short portName, int *fdP); -extern int StreamConnection(int server_fd, Port *port); -extern void StreamClose(int sock); - -#endif /* LIBPQ_H */ +extern void pq_init(int fd); +extern void pq_gettty(char *tp); +extern int pq_getport(void); +extern void pq_close(void); +extern void pq_flush(void); +extern int pq_getstr(char *s, int maxlen); +extern int PQgetline(char *s, int maxlen); +extern int PQputline(char *s); +extern int pq_getnchar(char *s, int off, int maxlen); +extern int pq_getint(int b); +extern void pq_putstr(char *s); +extern void pq_putnchar(char *s, int n); +extern void pq_putint(int i, int b); +extern int pq_sendoob(char *msg, int len); +extern int pq_recvoob(char *msgPtr, int *lenPtr); +extern int pq_getinaddr(struct sockaddr_in * sin, char *host, int port); +extern int pq_getinserv(struct sockaddr_in * sin, char *host, char *serv); +extern int +pq_connect(char *dbname, char *user, char *args, char *hostName, + char *debugTty, char *execFile, short portName); +extern int StreamOpen(char *hostName, short portName, Port * port); +extern void pq_regoob(void (*fptr) ()); +extern void pq_unregoob(void); +extern void pq_async_notify(void); +extern int StreamServerPort(char *hostName, short portName, int *fdP); +extern int StreamConnection(int server_fd, Port * port); +extern void StreamClose(int sock); + +#endif /* LIBPQ_H */ |