Fix for 'extern "C"' indenting - Mailing list pgsql-patches

From Bruce Momjian
Subject Fix for 'extern "C"' indenting
Date
Msg-id 200111072223.fA7MN5i14384@candle.pha.pa.us
Whole thread Raw
Responses Re: Fix for 'extern "C"' indenting  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches
Tom found a problem with indenting of "extern C" code blocks.  I thought
I had fixed it earlier, but obviously not.

Attached is a patch which is a run of an improved pgindent over several
include files that contained 'extern "C"' blocks.

Do people want this applied or should we just live with a ugly indenting
of a few C files for 7.2?

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
Index: src/backend/port/dynloader/aix.h
===================================================================
RCS file: /cvsroot/pgsql/src/backend/port/dynloader/aix.h,v
retrieving revision 1.9
diff -c -r1.9 aix.h
*** src/backend/port/dynloader/aix.h    2001/11/05 17:46:27    1.9
--- src/backend/port/dynloader/aix.h    2001/11/07 22:17:17
***************
*** 31,53 ****
   * To be able to intialize, a library may provide a dl_info structure
   * that contains functions to be called to initialize and terminate.
   */
!     struct dl_info
!     {
!         void        (*init) (void);
!         void        (*fini) (void);
!     };

  #if __STDC__ || defined(_IBMR2)
!     void       *dlopen(const char *path, int mode);
!     void       *dlsym(void *handle, const char *symbol);
!     char       *dlerror(void);
!     int            dlclose(void *handle);

  #else
!     void       *dlopen();
!     void       *dlsym();
!     char       *dlerror();
!     int            dlclose();
  #endif

  #ifdef __cplusplus
--- 31,53 ----
   * To be able to intialize, a library may provide a dl_info structure
   * that contains functions to be called to initialize and terminate.
   */
! struct dl_info
! {
!     void        (*init) (void);
!     void        (*fini) (void);
! };

  #if __STDC__ || defined(_IBMR2)
! void       *dlopen(const char *path, int mode);
! void       *dlsym(void *handle, const char *symbol);
! char       *dlerror(void);
! int            dlclose(void *handle);

  #else
! void       *dlopen();
! void       *dlsym();
! char       *dlerror();
! int            dlclose();
  #endif

  #ifdef __cplusplus
Index: src/backend/port/qnx4/sem.h
===================================================================
RCS file: /cvsroot/pgsql/src/backend/port/qnx4/sem.h,v
retrieving revision 1.6
diff -c -r1.6 sem.h
*** src/backend/port/qnx4/sem.h    2001/11/05 17:46:27    1.6
--- src/backend/port/qnx4/sem.h    2001/11/07 22:17:18
***************
*** 38,65 ****
   *    There is one semaphore structure for each semaphore in the system.
   */

!     struct sem
!     {
!         ushort_t    semval;        /* semaphore text map address    */
!         pid_t        sempid;        /* pid of last operation    */
!         ushort_t    semncnt;    /* # awaiting semval > cval */
!         ushort_t    semzcnt;    /* # awaiting semval = 0    */
!     };

  /*
   * User semaphore template for semop system calls.
   */

!     struct sembuf
!     {
!         ushort_t    sem_num;    /* semaphore #            */
!         short        sem_op;        /* semaphore operation        */
!         short        sem_flg;    /* operation flags        */
!     };

!     extern int    semctl(int semid, int semnum, int cmd, /* ... */ union semun arg);
!     extern int    semget(key_t key, int nsems, int semflg);
!     extern int    semop(int semid, struct sembuf * sops, size_t nsops);

  #ifdef __cplusplus
  }
--- 38,65 ----
   *    There is one semaphore structure for each semaphore in the system.
   */

! struct sem
! {
!     ushort_t    semval;            /* semaphore text map address    */
!     pid_t        sempid;            /* pid of last operation    */
!     ushort_t    semncnt;        /* # awaiting semval > cval */
!     ushort_t    semzcnt;        /* # awaiting semval = 0    */
! };

  /*
   * User semaphore template for semop system calls.
   */

! struct sembuf
! {
!     ushort_t    sem_num;        /* semaphore #            */
!     short        sem_op;            /* semaphore operation        */
!     short        sem_flg;        /* operation flags        */
! };

! extern int    semctl(int semid, int semnum, int cmd, /* ... */ union semun arg);
! extern int    semget(key_t key, int nsems, int semflg);
! extern int    semop(int semid, struct sembuf * sops, size_t nsops);

  #ifdef __cplusplus
  }
Index: src/backend/port/qnx4/shm.h
===================================================================
RCS file: /cvsroot/pgsql/src/backend/port/qnx4/shm.h,v
retrieving revision 1.6
diff -c -r1.6 shm.h
*** src/backend/port/qnx4/shm.h    2001/11/05 17:46:27    1.6
--- src/backend/port/qnx4/shm.h    2001/11/07 22:17:18
***************
*** 25,40 ****
  #define SHM_R    0400            /* read permission */
  #define SHM_W    0200            /* write permission */

!     struct shmid_ds
!     {
!         int            dummy;
!         int            shm_nattch;
!     };

!     extern void *shmat(int shmid, const void *shmaddr, int shmflg);
!     extern int    shmdt(const void *addr);
!     extern int    shmctl(int shmid, int cmd, struct shmid_ds * buf);
!     extern int    shmget(key_t key, size_t size, int flags);

  #ifdef    __cplusplus
  }
--- 25,40 ----
  #define SHM_R    0400            /* read permission */
  #define SHM_W    0200            /* write permission */

! struct shmid_ds
! {
!     int            dummy;
!     int            shm_nattch;
! };

! extern void *shmat(int shmid, const void *shmaddr, int shmflg);
! extern int    shmdt(const void *addr);
! extern int    shmctl(int shmid, int cmd, struct shmid_ds * buf);
! extern int    shmget(key_t key, size_t size, int flags);

  #ifdef    __cplusplus
  }
Index: src/backend/storage/lmgr/proc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v
retrieving revision 1.115
diff -c -r1.115 proc.c
*** src/backend/storage/lmgr/proc.c    2001/11/06 00:38:26    1.115
--- src/backend/storage/lmgr/proc.c    2001/11/07 22:17:34
***************
*** 125,131 ****
      /*
       * Compute size for ProcGlobal structure.  Note we need one more sema
       * besides those used for regular backends; this is accounted for in
!      * the PROC_SEM_MAP_ENTRIES macro.  (We do it that way so that other
       * modules that use PROC_SEM_MAP_ENTRIES(maxBackends) to size data
       * structures don't have to know about this explicitly.)
       */
--- 125,131 ----
      /*
       * Compute size for ProcGlobal structure.  Note we need one more sema
       * besides those used for regular backends; this is accounted for in
!      * the PROC_SEM_MAP_ENTRIES macro.    (We do it that way so that other
       * modules that use PROC_SEM_MAP_ENTRIES(maxBackends) to size data
       * structures don't have to know about this explicitly.)
       */
Index: src/backend/tioga/tgRecipe.h
===================================================================
RCS file: /cvsroot/pgsql/src/backend/tioga/tgRecipe.h,v
retrieving revision 1.21
diff -c -r1.21 tgRecipe.h
*** src/backend/tioga/tgRecipe.h    2001/11/05 17:46:28    1.21
--- src/backend/tioga/tgRecipe.h    2001/11/07 22:17:38
***************
*** 31,36 ****
--- 31,37 ----

                                   *
                                   *
+                                  *
                                   * geo-decls.h */
  #endif   /* TIOGA_FRONTEND */

Index: src/include/executor/spi.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/executor/spi.h,v
retrieving revision 1.32
diff -c -r1.32 spi.h
*** src/include/executor/spi.h    2001/11/05 19:41:56    1.32
--- src/include/executor/spi.h    2001/11/07 22:18:39
***************
*** 90,96 ****
  extern HeapTuple SPI_copytuple(HeapTuple tuple);
  extern TupleDesc SPI_copytupledesc(TupleDesc tupdesc);
  extern TupleTableSlot *SPI_copytupleintoslot(HeapTuple tuple,
!                                              TupleDesc tupdesc);
  extern HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts,
                  int *attnum, Datum *Values, char *Nulls);
  extern int    SPI_fnumber(TupleDesc tupdesc, char *fname);
--- 90,96 ----
  extern HeapTuple SPI_copytuple(HeapTuple tuple);
  extern TupleDesc SPI_copytupledesc(TupleDesc tupdesc);
  extern TupleTableSlot *SPI_copytupleintoslot(HeapTuple tuple,
!                       TupleDesc tupdesc);
  extern HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts,
                  int *attnum, Datum *Values, char *Nulls);
  extern int    SPI_fnumber(TupleDesc tupdesc, char *fname);
Index: src/include/port/darwin/sem.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/port/darwin/sem.h,v
retrieving revision 1.5
diff -c -r1.5 sem.h
*** src/include/port/darwin/sem.h    2001/11/05 17:46:35    1.5
--- src/include/port/darwin/sem.h    2001/11/07 22:18:46
***************
*** 44,71 ****
   *    There is one semaphore structure for each semaphore in the system.
   */

!     struct sem
!     {
!         ushort_t    semval;        /* semaphore text map address    */
!         pid_t        sempid;        /* pid of last operation    */
!         ushort_t    semncnt;    /* # awaiting semval > cval */
!         ushort_t    semzcnt;    /* # awaiting semval = 0    */
!     };

  /*
   * User semaphore template for semop system calls.
   */

!     struct sembuf
!     {
!         ushort_t    sem_num;    /* semaphore #            */
!         short        sem_op;        /* semaphore operation        */
!         short        sem_flg;    /* operation flags        */
!     };

!     extern int    semctl(int semid, int semnum, int cmd, /* ... */ union semun arg);
!     extern int    semget(key_t key, int nsems, int semflg);
!     extern int    semop(int semid, struct sembuf * sops, size_t nsops);

  #ifdef __cplusplus
  }
--- 44,71 ----
   *    There is one semaphore structure for each semaphore in the system.
   */

! struct sem
! {
!     ushort_t    semval;            /* semaphore text map address    */
!     pid_t        sempid;            /* pid of last operation    */
!     ushort_t    semncnt;        /* # awaiting semval > cval */
!     ushort_t    semzcnt;        /* # awaiting semval = 0    */
! };

  /*
   * User semaphore template for semop system calls.
   */

! struct sembuf
! {
!     ushort_t    sem_num;        /* semaphore #            */
!     short        sem_op;            /* semaphore operation        */
!     short        sem_flg;        /* operation flags        */
! };

! extern int    semctl(int semid, int semnum, int cmd, /* ... */ union semun arg);
! extern int    semget(key_t key, int nsems, int semflg);
! extern int    semop(int semid, struct sembuf * sops, size_t nsops);

  #ifdef __cplusplus
  }
Index: src/interfaces/ecpg/include/ecpglib.h
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/ecpg/include/ecpglib.h,v
retrieving revision 1.40
diff -c -r1.40 ecpglib.h
*** src/interfaces/ecpg/include/ecpglib.h    2001/11/05 17:46:37    1.40
--- src/interfaces/ecpg/include/ecpglib.h    2001/11/07 22:18:53
***************
*** 35,57 ****
  {
  #endif

!     void        ECPGdebug(int, FILE *);
!     bool        ECPGstatus(int, const char *);
!     bool        ECPGsetcommit(int, const char *, const char *);
!     bool        ECPGsetconn(int, const char *);
!     bool        ECPGconnect(int, const char *, const char *, const char *, const char *, int);
!     bool        ECPGdo(int, const char *, char *,...);
!     bool        ECPGtrans(int, const char *, const char *);
!     bool        ECPGdisconnect(int, const char *);
!     bool        ECPGprepare(int, char *, char *);
!     bool        ECPGdeallocate(int, char *);
!     bool        ECPGdeallocate_all(int);
!     char       *ECPGprepared_statement(char *);

!     void        ECPGlog(const char *format,...);

!     /* print an error message */
!     void        sqlprint(void);

  /* define this for simplicity as well as compatibility */

--- 35,57 ----
  {
  #endif

! void        ECPGdebug(int, FILE *);
! bool        ECPGstatus(int, const char *);
! bool        ECPGsetcommit(int, const char *, const char *);
! bool        ECPGsetconn(int, const char *);
! bool        ECPGconnect(int, const char *, const char *, const char *, const char *, int);
! bool        ECPGdo(int, const char *, char *,...);
! bool        ECPGtrans(int, const char *, const char *);
! bool        ECPGdisconnect(int, const char *);
! bool        ECPGprepare(int, char *, char *);
! bool        ECPGdeallocate(int, char *);
! bool        ECPGdeallocate_all(int);
! char       *ECPGprepared_statement(char *);

! void        ECPGlog(const char *format,...);

!  /* print an error message */
! void        sqlprint(void);

  /* define this for simplicity as well as compatibility */

***************
*** 59,71 ****

  /* dynamic SQL */

!     bool        ECPGdo_descriptor(int line, const char *connection,
!                               const char *descriptor, const char *query);
!     bool        ECPGdeallocate_desc(int line, const char *name);
!     bool        ECPGallocate_desc(int line, const char *name);
!     void        ECPGraise(int line, int code, const char *str);
!     bool        ECPGget_desc_header(int, char *, int *);
!     bool        ECPGget_desc(int, char *, int,...);


  #ifdef __cplusplus
--- 59,71 ----

  /* dynamic SQL */

! bool ECPGdo_descriptor(int line, const char *connection,
!                   const char *descriptor, const char *query);
! bool        ECPGdeallocate_desc(int line, const char *name);
! bool        ECPGallocate_desc(int line, const char *name);
! void        ECPGraise(int line, int code, const char *str);
! bool        ECPGget_desc_header(int, char *, int *);
! bool        ECPGget_desc(int, char *, int,...);


  #ifdef __cplusplus
Index: src/interfaces/ecpg/include/ecpgtype.h
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/ecpg/include/ecpgtype.h,v
retrieving revision 1.23
diff -c -r1.23 ecpgtype.h
*** src/interfaces/ecpg/include/ecpgtype.h    2001/10/28 06:26:11    1.23
--- src/interfaces/ecpg/include/ecpgtype.h    2001/11/07 22:18:53
***************
*** 32,76 ****
  {
  #endif

!     enum ECPGttype
!     {
!         ECPGt_char = 1, ECPGt_unsigned_char, ECPGt_short, ECPGt_unsigned_short,
!         ECPGt_int, ECPGt_unsigned_int, ECPGt_long, ECPGt_unsigned_long,
!         ECPGt_bool,
!         ECPGt_float, ECPGt_double,
!         ECPGt_varchar, ECPGt_varchar2,
!         ECPGt_array,
!         ECPGt_struct,
!         ECPGt_union,
!         ECPGt_char_variable,
!         ECPGt_EOIT,                /* End of insert types. */
!         ECPGt_EORT,                /* End of result types. */
!         ECPGt_NO_INDICATOR,        /* no indicator */
!         ECPGt_long_long, ECPGt_unsigned_long_long,
!         ECPGt_descriptor        /* sql descriptor, no C variable */
!     };

!     /* descriptor items */
!     enum ECPGdtype
!     {
!         ECPGd_count = 1,
!         ECPGd_data,
!         ECPGd_di_code,
!         ECPGd_di_precision,
!         ECPGd_indicator,
!         ECPGd_key_member,
!         ECPGd_length,
!         ECPGd_name,
!         ECPGd_nullable,
!         ECPGd_octet,
!         ECPGd_precision,
!         ECPGd_ret_length,
!         ECPGd_ret_octet,
!         ECPGd_scale,
!         ECPGd_type,
!         ECPGd_EODT,                /* End of descriptor types. */
!         ECPGd_cardinality
!     };

  #define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_varchar2) || ((type)>=ECPGt_long_long &&
(type)<= ECPGt_unsigned_long_long)) 

--- 32,76 ----
  {
  #endif

! enum ECPGttype
! {
!     ECPGt_char = 1, ECPGt_unsigned_char, ECPGt_short, ECPGt_unsigned_short,
!     ECPGt_int, ECPGt_unsigned_int, ECPGt_long, ECPGt_unsigned_long,
!     ECPGt_bool,
!     ECPGt_float, ECPGt_double,
!     ECPGt_varchar, ECPGt_varchar2,
!     ECPGt_array,
!     ECPGt_struct,
!     ECPGt_union,
!     ECPGt_char_variable,
!     ECPGt_EOIT,                    /* End of insert types. */
!     ECPGt_EORT,                    /* End of result types. */
!     ECPGt_NO_INDICATOR,            /* no indicator */
!     ECPGt_long_long, ECPGt_unsigned_long_long,
!     ECPGt_descriptor            /* sql descriptor, no C variable */
! };

!  /* descriptor items */
! enum ECPGdtype
! {
!     ECPGd_count = 1,
!     ECPGd_data,
!     ECPGd_di_code,
!     ECPGd_di_precision,
!     ECPGd_indicator,
!     ECPGd_key_member,
!     ECPGd_length,
!     ECPGd_name,
!     ECPGd_nullable,
!     ECPGd_octet,
!     ECPGd_precision,
!     ECPGd_ret_length,
!     ECPGd_ret_octet,
!     ECPGd_scale,
!     ECPGd_type,
!     ECPGd_EODT,                    /* End of descriptor types. */
!     ECPGd_cardinality
! };

  #define IS_SIMPLE_TYPE(type) (((type) >= ECPGt_char && (type) <= ECPGt_varchar2) || ((type)>=ECPGt_long_long &&
(type)<= ECPGt_unsigned_long_long)) 

Index: src/interfaces/ecpg/include/sqlca.h
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/ecpg/include/sqlca.h,v
retrieving revision 1.20
diff -c -r1.20 sqlca.h
*** src/interfaces/ecpg/include/sqlca.h    2001/11/05 17:46:37    1.20
--- src/interfaces/ecpg/include/sqlca.h    2001/11/07 22:18:53
***************
*** 16,59 ****
  {
  #endif

!     struct sqlca
      {
!         char        sqlcaid[8];
!         long        sqlabc;
!         long        sqlcode;
!         struct
!         {
!             int            sqlerrml;
!             char        sqlerrmc[SQLERRMC_LEN];
!         }            sqlerrm;
!         char        sqlerrp[8];
!         long        sqlerrd[6];
!         /* Element 0: empty                        */
!         /* 1: OID of processed tuple if applicable            */
!         /* 2: number of rows processed                */
!         /* after an INSERT, UPDATE or                */
!         /* DELETE statement                    */
!         /* 3: empty                        */
!         /* 4: empty                        */
!         /* 5: empty                        */
!         char        sqlwarn[8];
!         /* Element 0: set to 'W' if at least one other is 'W'    */
!         /* 1: if 'W' at least one character string        */
!         /* value was truncated when it was            */
!         /* stored into a host variable.                */

!         /*
!          * 2: if 'W' a (hopefully) non-fatal notice occured
!          */    /* 3: empty */
!         /* 4: empty                        */
!         /* 5: empty                        */
!         /* 6: empty                        */
!         /* 7: empty                        */

!         char        sqlext[8];
!     };

!     extern DLLIMPORT struct sqlca sqlca;


  #ifdef __cplusplus
--- 16,59 ----
  {
  #endif

! struct sqlca
! {
!     char        sqlcaid[8];
!     long        sqlabc;
!     long        sqlcode;
!     struct
      {
!         int            sqlerrml;
!         char        sqlerrmc[SQLERRMC_LEN];
!     }            sqlerrm;
!     char        sqlerrp[8];
!     long        sqlerrd[6];
!     /* Element 0: empty                        */
!     /* 1: OID of processed tuple if applicable            */
!     /* 2: number of rows processed                */
!     /* after an INSERT, UPDATE or                */
!     /* DELETE statement                    */
!     /* 3: empty                        */
!     /* 4: empty                        */
!     /* 5: empty                        */
!     char        sqlwarn[8];
!     /* Element 0: set to 'W' if at least one other is 'W'    */
!     /* 1: if 'W' at least one character string        */
!     /* value was truncated when it was            */
!     /* stored into a host variable.                */

!     /*
!      * 2: if 'W' a (hopefully) non-fatal notice occured
!      */    /* 3: empty */
!     /* 4: empty                        */
!     /* 5: empty                        */
!     /* 6: empty                        */
!     /* 7: empty                        */

!     char        sqlext[8];
! };

! extern DLLIMPORT struct sqlca sqlca;


  #ifdef __cplusplus
Index: src/interfaces/libpq/libpq-fe.h
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/libpq-fe.h,v
retrieving revision 1.79
diff -c -r1.79 libpq-fe.h
*** src/interfaces/libpq/libpq-fe.h    2001/11/05 17:46:37    1.79
--- src/interfaces/libpq/libpq-fe.h    2001/11/07 22:19:03
***************
*** 35,102 ****

  /* 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,
!         /* 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_AWAITING_RESPONSE,    /* Waiting for a response from the
                                           * postmaster.          */
!         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
!     } ExecStatusType;

  /* 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
--- 35,101 ----

  /* 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,
!     /* 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_AWAITING_RESPONSE,        /* Waiting for a response from the
                                           * postmaster.          */
!     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
! } ExecStatusType;

  /* 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
***************
*** 104,138 ****
   * 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 <table ...> */
!         char       *caption;    /* HTML <caption> */
!         char      **fieldName;    /* null terminated array of repalcement
                                   * field names */
!     } PQprintOpt;

  /* ----------------
   * Structure for the conninfo parameter definitions returned by PQconndefaults
--- 103,137 ----
   * 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 <table ...> */
!     char       *caption;        /* HTML <caption> */
!     char      **fieldName;        /* null terminated array of repalcement
                                   * field names */
! } PQprintOpt;

  /* ----------------
   * Structure for the conninfo parameter definitions returned by PQconndefaults
***************
*** 142,176 ****
   * will release both the val strings and the PQconninfoOption array itself.
   * ----------------
   */
!     typedef struct _PQconninfoOption
!     {
!         char       *keyword;    /* The keyword of the option            */
!         char       *envvar;        /* Fallback environment variable name    */
!         char       *compiled;    /* Fallback compiled in default value    */
!         char       *val;        /* Option's current value, or NULL         */
!         char       *label;        /* Label for field in connect dialog    */
!         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;

  /* ----------------
   * Exported functions of libpq
--- 141,175 ----
   * will release both the val strings and the PQconninfoOption array itself.
   * ----------------
   */
! typedef struct _PQconninfoOption
! {
!     char       *keyword;        /* The keyword of the option            */
!     char       *envvar;            /* Fallback environment variable name    */
!     char       *compiled;        /* Fallback compiled in default value    */
!     char       *val;            /* Option's current value, or NULL         */
!     char       *label;            /* Label for field in connect dialog    */
!     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;

  /* ----------------
   * Exported functions of libpq
***************
*** 181,375 ****

  /* make a new client connection to the backend */
  /* Asynchronous (non-blocking) */
!     extern PGconn *PQconnectStart(const char *conninfo);
!     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);

  #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)

  /* 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 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 char *PQerrorMessage(const PGconn *conn);
!     extern int    PQsocket(const PGconn *conn);
!     extern int    PQbackendPID(const PGconn *conn);
!     extern int    PQclientEncoding(const PGconn *conn);
!     extern int    PQsetClientEncoding(PGconn *conn, const char *encoding);

  #ifdef USE_SSL
  /* Get the SSL structure associated with a connection */
!     extern SSL *PQgetssl(PGconn *conn);
  #endif


  /* 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 === */

  /* Quoting strings before inclusion in queries. */
!     extern size_t PQescapeString(char *to, const char *from, size_t length);
!     extern unsigned char *PQescapeBytea(unsigned char *bintext, size_t binlen,
!                                                     size_t *bytealen);

  /* Simple synchronous query */
!     extern PGresult *PQexec(PGconn *conn, const char *query);
!     extern PGnotify *PQnotifies(PGconn *conn);
!     extern void PQfreeNotify(PGnotify *notify);

  /* 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);

  /*
   * "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);

  /* Accessor functions for PGresult objects */
!     extern ExecStatusType PQresultStatus(const PGresult *res);
!     extern char *PQresStatus(ExecStatusType status);
!     extern char *PQresultErrorMessage(const PGresult *res);
!     extern int    PQntuples(const PGresult *res);
!     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 char *PQoidStatus(const PGresult *res);        /* old and ugly */
!     extern Oid    PQoidValue(const PGresult *res);        /* new and improved */
!     extern 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);

  /* 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);

  /* === 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);

  /* Get encoding id from environment variable PGCLIENTENCODING */
!     extern int    PQenv2encoding(void);

  #ifdef __cplusplus
  }
--- 180,375 ----

  /* make a new client connection to the backend */
  /* Asynchronous (non-blocking) */
! extern PGconn *PQconnectStart(const char *conninfo);
! 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);

  #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)

  /* 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 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 char *PQerrorMessage(const PGconn *conn);
! extern int    PQsocket(const PGconn *conn);
! extern int    PQbackendPID(const PGconn *conn);
! extern int    PQclientEncoding(const PGconn *conn);
! extern int    PQsetClientEncoding(PGconn *conn, const char *encoding);

  #ifdef USE_SSL
  /* Get the SSL structure associated with a connection */
! extern SSL *PQgetssl(PGconn *conn);
  #endif


  /* 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 === */

  /* Quoting strings before inclusion in queries. */
! extern size_t PQescapeString(char *to, const char *from, size_t length);
! extern unsigned char *PQescapeBytea(unsigned char *bintext, size_t binlen,
!               size_t *bytealen);

  /* Simple synchronous query */
! extern PGresult *PQexec(PGconn *conn, const char *query);
! extern PGnotify *PQnotifies(PGconn *conn);
! extern void PQfreeNotify(PGnotify *notify);

  /* 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);

  /*
   * "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);

  /* Accessor functions for PGresult objects */
! extern ExecStatusType PQresultStatus(const PGresult *res);
! extern char *PQresStatus(ExecStatusType status);
! extern char *PQresultErrorMessage(const PGresult *res);
! extern int    PQntuples(const PGresult *res);
! 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 char *PQoidStatus(const PGresult *res);    /* old and ugly */
! extern Oid    PQoidValue(const PGresult *res);    /* new and improved */
! extern 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);

  /* 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);

  /* === 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);

  /* Get encoding id from environment variable PGCLIENTENCODING */
! extern int    PQenv2encoding(void);

  #ifdef __cplusplus
  }
Index: src/interfaces/odbc/gpps.h
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/odbc/gpps.h,v
retrieving revision 1.17
diff -c -r1.17 gpps.h
*** src/interfaces/odbc/gpps.h    2001/10/28 06:26:13    1.17
--- src/interfaces/odbc/gpps.h    2001/11/07 22:19:08
***************
*** 18,41 ****
  {
  #endif

!     DWORD
!                 GetPrivateProfileString(const char *theSection, /* section name */
!                                                     const char *theKey, /* search key name */
!                                                   const char *theDefault,        /* default value if not
!                                                                                  * found */
!                                                     char *theReturnBuffer,        /* return valuse stored
!                                                                                  * here */
!                                                   size_t theBufferLength,        /* byte length of return
!                                                                                  * buffer */
!                                              const char *theIniFileName);        /* pathname of ini file
!                                                                                  * to search */

!     DWORD
!                 WritePrivateProfileString(const char *theSection,        /* section name */
!                                                       const char *theKey,        /* write key name */
!                                                    const char *theBuffer,        /* input buffer */
!                                              const char *theIniFileName);        /* pathname of ini file
!                                                                                  * to write */

  #ifdef __cplusplus
  }
--- 18,41 ----
  {
  #endif

! DWORD
! GetPrivateProfileString(const char *theSection, /* section name */
!                         const char *theKey,        /* search key name */
!                         const char *theDefault, /* default value if not
!                                                  * found */
!                         char *theReturnBuffer,    /* return valuse stored
!                                                  * here */
!                         size_t theBufferLength, /* byte length of return
!                                                  * buffer */
!                         const char *theIniFileName);    /* pathname of ini file
!                                                          * to search */

! DWORD
! WritePrivateProfileString(const char *theSection,        /* section name */
!                           const char *theKey,    /* write key name */
!                           const char *theBuffer,        /* input buffer */
!                           const char *theIniFileName);    /* pathname of ini file
!                                                          * to write */

  #ifdef __cplusplus
  }
Index: src/interfaces/odbc/isql.h
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/odbc/isql.h,v
retrieving revision 1.17
diff -c -r1.17 isql.h
*** src/interfaces/odbc/isql.h    2001/11/05 17:46:38    1.17
--- src/interfaces/odbc/isql.h    2001/11/07 22:19:10
***************
*** 135,243 ****
  {
  #endif

!     RETCODE SQL_API SQLAllocConnect(HENV henv,
!                                                 HDBC FAR * phdbc);
!     RETCODE SQL_API SQLAllocEnv(HENV FAR * phenv);
!     RETCODE SQL_API SQLAllocStmt(HDBC hdbc,
!                                              HSTMT FAR * phstmt);
!     RETCODE SQL_API SQLBindCol(HSTMT hstmt,
!                                            UWORD icol,
!                                            SWORD fCType,
!                                            PTR rgbValue,
!                                            SDWORD cbValueMax,
!                                            SDWORD FAR * pcbValue);
!
!     RETCODE SQL_API SQLCancel(HSTMT hstmt);
!
!     RETCODE SQL_API SQLColAttributes(HSTMT hstmt,
!                                                  UWORD icol,
!                                                  UWORD fDescType,
!                                                  PTR rgbDesc,
!                                                  SWORD cbDescMax,
!                                                  SWORD FAR * pcbDesc,
!                                                  SDWORD FAR * pfDesc);
!
!     RETCODE SQL_API SQLConnect(HDBC hdbc,
!                                            UCHAR FAR * szDSN,
!                                            SWORD cbDSN,
!                                            UCHAR FAR * szUID,
!                                            SWORD cbUID,
!                                            UCHAR FAR * szAuthStr,
!                                            SWORD cbAuthStr);
!
!     RETCODE SQL_API SQLDescribeCol(HSTMT hstmt,
!                                                UWORD icol,
!                                                UCHAR FAR * szColName,
!                                                SWORD cbColNameMax,
!                                                SWORD FAR * pcbColName,
!                                                SWORD FAR * pfSqlType,
!                                                UDWORD FAR * pcbColDef,
!                                                SWORD FAR * pibScale,
!                                                SWORD FAR * pfNullable);
!
!     RETCODE SQL_API SQLDisconnect(HDBC hdbc);
!
!     RETCODE SQL_API SQLError(HENV henv,
!                                          HDBC hdbc,
!                                          HSTMT hstmt,
!                                          UCHAR FAR * szSqlState,
!                                          SDWORD FAR * pfNativeError,
!                                          UCHAR FAR * szErrorMsg,
!                                          SWORD cbErrorMsgMax,
!                                          SWORD FAR * pcbErrorMsg);
!
!     RETCODE SQL_API SQLExecDirect(HSTMT hstmt,
!                                               UCHAR FAR * szSqlStr,
!                                               SDWORD cbSqlStr);
!
!     RETCODE SQL_API SQLExecute(HSTMT hstmt);
!
!     RETCODE SQL_API SQLFetch(HSTMT hstmt);
!
!     RETCODE SQL_API SQLFreeConnect(HDBC hdbc);
!
!     RETCODE SQL_API SQLFreeEnv(HENV henv);
!
!     RETCODE SQL_API SQLFreeStmt(HSTMT hstmt,
!                                             UWORD fOption);
!
!     RETCODE SQL_API SQLGetCursorName(HSTMT hstmt,
!                                                  UCHAR FAR * szCursor,
!                                                  SWORD cbCursorMax,
!                                                  SWORD FAR * pcbCursor);
!
!     RETCODE SQL_API SQLNumResultCols(HSTMT hstmt,
!                                                  SWORD FAR * pccol);
!
!     RETCODE SQL_API SQLPrepare(HSTMT hstmt,
!                                            UCHAR FAR * szSqlStr,
!                                            SDWORD cbSqlStr);
!
!     RETCODE SQL_API SQLRowCount(HSTMT hstmt,
!                                             SDWORD FAR * pcrow);
!
!     RETCODE SQL_API SQLSetCursorName(HSTMT hstmt,
!                                                  UCHAR FAR * szCursor,
!                                                  SWORD cbCursor);
!
!     RETCODE SQL_API SQLTransact(HENV henv,
!                                             HDBC hdbc,
!                                             UWORD fType);
!
!     RETCODE SQL_API SQLSetParam(HSTMT hstmt,
!                                             UWORD ipar,
!                                             SWORD fCType,
!                                             SWORD fSqlType,
!                                             UDWORD cbColDef,
!                                             SWORD ibScale,
!                                             PTR rgbValue,
!                                             SDWORD FAR * pcbValue);
!
!     RETCODE SQL_API SQLDataSources(HENV henv,
!                                  UWORD Direction, UCHAR FAR * ServerName,
!                                    WORD BufferLength1, WORD *NameLength1,
!                              UCHAR FAR * Description, WORD BufferLength2,
!                                                WORD *NameLength2);

  #ifdef __cplusplus
  }
--- 135,243 ----
  {
  #endif

! RETCODE SQL_API SQLAllocConnect(HENV henv,
!                 HDBC FAR * phdbc);
! RETCODE SQL_API SQLAllocEnv(HENV FAR * phenv);
! RETCODE SQL_API SQLAllocStmt(HDBC hdbc,
!              HSTMT FAR * phstmt);
! RETCODE SQL_API SQLBindCol(HSTMT hstmt,
!            UWORD icol,
!            SWORD fCType,
!            PTR rgbValue,
!            SDWORD cbValueMax,
!            SDWORD FAR * pcbValue);
!
! RETCODE SQL_API SQLCancel(HSTMT hstmt);
!
! RETCODE SQL_API SQLColAttributes(HSTMT hstmt,
!                  UWORD icol,
!                  UWORD fDescType,
!                  PTR rgbDesc,
!                  SWORD cbDescMax,
!                  SWORD FAR * pcbDesc,
!                  SDWORD FAR * pfDesc);
!
! RETCODE SQL_API SQLConnect(HDBC hdbc,
!            UCHAR FAR * szDSN,
!            SWORD cbDSN,
!            UCHAR FAR * szUID,
!            SWORD cbUID,
!            UCHAR FAR * szAuthStr,
!            SWORD cbAuthStr);
!
! RETCODE SQL_API SQLDescribeCol(HSTMT hstmt,
!                UWORD icol,
!                UCHAR FAR * szColName,
!                SWORD cbColNameMax,
!                SWORD FAR * pcbColName,
!                SWORD FAR * pfSqlType,
!                UDWORD FAR * pcbColDef,
!                SWORD FAR * pibScale,
!                SWORD FAR * pfNullable);
!
! RETCODE SQL_API SQLDisconnect(HDBC hdbc);
!
! RETCODE SQL_API SQLError(HENV henv,
!          HDBC hdbc,
!          HSTMT hstmt,
!          UCHAR FAR * szSqlState,
!          SDWORD FAR * pfNativeError,
!          UCHAR FAR * szErrorMsg,
!          SWORD cbErrorMsgMax,
!          SWORD FAR * pcbErrorMsg);
!
! RETCODE SQL_API SQLExecDirect(HSTMT hstmt,
!               UCHAR FAR * szSqlStr,
!               SDWORD cbSqlStr);
!
! RETCODE SQL_API SQLExecute(HSTMT hstmt);
!
! RETCODE SQL_API SQLFetch(HSTMT hstmt);
!
! RETCODE SQL_API SQLFreeConnect(HDBC hdbc);
!
! RETCODE SQL_API SQLFreeEnv(HENV henv);
!
! RETCODE SQL_API SQLFreeStmt(HSTMT hstmt,
!             UWORD fOption);
!
! RETCODE SQL_API SQLGetCursorName(HSTMT hstmt,
!                  UCHAR FAR * szCursor,
!                  SWORD cbCursorMax,
!                  SWORD FAR * pcbCursor);
!
! RETCODE SQL_API SQLNumResultCols(HSTMT hstmt,
!                  SWORD FAR * pccol);
!
! RETCODE SQL_API SQLPrepare(HSTMT hstmt,
!            UCHAR FAR * szSqlStr,
!            SDWORD cbSqlStr);
!
! RETCODE SQL_API SQLRowCount(HSTMT hstmt,
!             SDWORD FAR * pcrow);
!
! RETCODE SQL_API SQLSetCursorName(HSTMT hstmt,
!                  UCHAR FAR * szCursor,
!                  SWORD cbCursor);
!
! RETCODE SQL_API SQLTransact(HENV henv,
!             HDBC hdbc,
!             UWORD fType);
!
! RETCODE SQL_API SQLSetParam(HSTMT hstmt,
!             UWORD ipar,
!             SWORD fCType,
!             SWORD fSqlType,
!             UDWORD cbColDef,
!             SWORD ibScale,
!             PTR rgbValue,
!             SDWORD FAR * pcbValue);
!
! RETCODE SQL_API SQLDataSources(HENV henv,
!                UWORD Direction, UCHAR FAR * ServerName,
!                WORD BufferLength1, WORD *NameLength1,
!                UCHAR FAR * Description, WORD BufferLength2,
!                WORD *NameLength2);

  #ifdef __cplusplus
  }
Index: src/interfaces/odbc/isqlext.h
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/odbc/isqlext.h,v
retrieving revision 1.13
diff -c -r1.13 isqlext.h
*** src/interfaces/odbc/isqlext.h    2001/11/05 17:46:38    1.13
--- src/interfaces/odbc/isqlext.h    2001/11/07 22:19:11
***************
*** 1342,1556 ****
  {
  #endif

!     RETCODE SQL_API SQLSetConnectOption(HDBC, UWORD, UDWORD);
!     RETCODE SQL_API SQLNumResultCols(HSTMT, SWORD FAR *);

  /*
   *     function prototypes previously missing from isqlext.h
   */
!     RETCODE SQL_API SQLColumns(HSTMT hstmt,
!                                            UCHAR FAR * szTableQualifier,
!                                            SWORD cbTableQualifier,
!                                            UCHAR FAR * szTableOwner,
!                                            SWORD cbTableOwner,
!                                            UCHAR FAR * szTableName,
!                                            SWORD cbTableName,
!                                            UCHAR FAR * szColumnName,
!                                            SWORD cbColumnName);
!
!     RETCODE SQL_API SQLDriverConnect(HDBC hdbc,
!                                                  HWND hwnd,
!                                                  UCHAR FAR * szConnStrIn,
!                                                  SWORD cbConnStrIn,
!                                                  UCHAR FAR * szConnStrOut,
!                                                  SWORD cbConnStrOutMax,
!                                                SWORD FAR * pcbConnStrOut,
!                                                  UWORD fDriverCompletion);
!
!     RETCODE SQL_API SQLGetConnectOption(HDBC hdbc,
!                                                     UWORD fOption,
!                                                     PTR pvParam);
!
!     RETCODE SQL_API SQLGetData(HSTMT hstmt,
!                                            UWORD icol,
!                                            SWORD fCType,
!                                            PTR rgbValue,
!                                            SDWORD cbValueMax,
!                                            SDWORD FAR * pcbValue);
!
!     RETCODE SQL_API SQLGetFunctions(HDBC hdbc,
!                                                 UWORD fFunction,
!                                                 UWORD FAR * pfExists);
!
!     RETCODE SQL_API SQLGetInfo(HDBC hdbc,
!                                            UWORD fInfoType,
!                                            PTR rgbInfoValue,
!                                            SWORD cbInfoValueMax,
!                                            SWORD FAR * pcbInfoValue);
!
!     RETCODE SQL_API SQLGetStmtOption(HSTMT hstmt,
!                                                  UWORD fOption,
!                                                  PTR pvParam);
!
!     RETCODE SQL_API SQLGetTypeInfo(HSTMT hstmt,
!                                                SWORD fSqlType);
!
!     RETCODE SQL_API SQLParamData(HSTMT hstmt,
!                                              PTR FAR * prgbValue);
!
!     RETCODE SQL_API SQLPutData(HSTMT hstmt,
!                                            PTR rgbValue,
!                                            SDWORD cbValue);
!
!     RETCODE SQL_API SQLSetStmtOption(HSTMT hstmt,
!                                                  UWORD fOption,
!                                                  UDWORD vParam);
!
!     RETCODE SQL_API SQLSpecialColumns(HSTMT hstmt,
!                                                   UWORD fColType,
!                                             UCHAR FAR * szTableQualifier,
!                                                   SWORD cbTableQualifier,
!                                                 UCHAR FAR * szTableOwner,
!                                                   SWORD cbTableOwner,
!                                                   UCHAR FAR * szTableName,
!                                                   SWORD cbTableName,
!                                                   UWORD fScope,
!                                                   UWORD fNullable);
!
!     RETCODE SQL_API SQLStatistics(HSTMT hstmt,
!                                             UCHAR FAR * szTableQualifier,
!                                               SWORD cbTableQualifier,
!                                               UCHAR FAR * szTableOwner,
!                                               SWORD cbTableOwner,
!                                               UCHAR FAR * szTableName,
!                                               SWORD cbTableName,
!                                               UWORD fUnique,
!                                               UWORD fAccuracy);
!
!     RETCODE SQL_API SQLTables(HSTMT hstmt,
!                                           UCHAR FAR * szTableQualifier,
!                                           SWORD cbTableQualifier,
!                                           UCHAR FAR * szTableOwner,
!                                           SWORD cbTableOwner,
!                                           UCHAR FAR * szTableName,
!                                           SWORD cbTableName,
!                                           UCHAR FAR * szTableType,
!                                           SWORD cbTableType);
!
!     RETCODE SQL_API SQLBrowseConnect(HDBC hdbc,
!                                                  UCHAR FAR * szConnStrIn,
!                                                  SWORD cbConnStrIn,
!                                                  UCHAR FAR * szConnStrOut,
!                                                  SWORD cbConnStrOutMax,
!                                               SWORD FAR * pcbConnStrOut);
!
!     RETCODE SQL_API SQLColumnPrivileges(HSTMT hstmt,
!                                             UCHAR FAR * szTableQualifier,
!                                                   SWORD cbTableQualifier,
!                                                 UCHAR FAR * szTableOwner,
!                                                     SWORD cbTableOwner,
!                                                  UCHAR FAR * szTableName,
!                                                     SWORD cbTableName,
!                                                 UCHAR FAR * szColumnName,
!                                                     SWORD cbColumnName);
!
!     RETCODE SQL_API SQLDescribeParam(HSTMT hstmt,
!                                                  UWORD ipar,
!                                                  SWORD FAR * pfSqlType,
!                                                  UDWORD FAR * pcbColDef,
!                                                  SWORD FAR * pibScale,
!                                                  SWORD FAR * pfNullable);
!
!     RETCODE SQL_API SQLExtendedFetch(HSTMT hstmt,
!                                                  UWORD fFetchType,
!                                                  SDWORD irow,
!                                                  UDWORD FAR * pcrow,
!                                                UWORD FAR * rgfRowStatus);
!
!     RETCODE SQL_API SQLForeignKeys(HSTMT hstmt,
!                                           UCHAR FAR * szPkTableQualifier,
!                                                SWORD cbPkTableQualifier,
!                                                UCHAR FAR * szPkTableOwner,
!                                                SWORD cbPkTableOwner,
!                                                UCHAR FAR * szPkTableName,
!                                                SWORD cbPkTableName,
!                                           UCHAR FAR * szFkTableQualifier,
!                                                SWORD cbFkTableQualifier,
!                                                UCHAR FAR * szFkTableOwner,
!                                                SWORD cbFkTableOwner,
!                                                UCHAR FAR * szFkTableName,
!                                                SWORD cbFkTableName);
!
!     RETCODE SQL_API SQLMoreResults(HSTMT hstmt);
!
!     RETCODE SQL_API SQLNativeSql(HDBC hdbc,
!                                              UCHAR FAR * szSqlStrIn,
!                                              SDWORD cbSqlStrIn,
!                                              UCHAR FAR * szSqlStr,
!                                              SDWORD cbSqlStrMax,
!                                              SDWORD FAR * pcbSqlStr);
!
!     RETCODE SQL_API SQLNumParams(HSTMT hstmt,
!                                              SWORD FAR * pcpar);
!
!     RETCODE SQL_API SQLParamOptions(HSTMT hstmt,
!                                                 UDWORD crow,
!                                                 UDWORD FAR * pirow);
!
!     RETCODE SQL_API SQLPrimaryKeys(HSTMT hstmt,
!                                             UCHAR FAR * szTableQualifier,
!                                                SWORD cbTableQualifier,
!                                                UCHAR FAR * szTableOwner,
!                                                SWORD cbTableOwner,
!                                                UCHAR FAR * szTableName,
!                                                SWORD cbTableName);
!
!     RETCODE SQL_API SQLProcedureColumns(HSTMT hstmt,
!                                              UCHAR FAR * szProcQualifier,
!                                                     SWORD cbProcQualifier,
!                                                  UCHAR FAR * szProcOwner,
!                                                     SWORD cbProcOwner,
!                                                   UCHAR FAR * szProcName,
!                                                     SWORD cbProcName,
!                                                 UCHAR FAR * szColumnName,
!                                                     SWORD cbColumnName);
!
!     RETCODE SQL_API SQLProcedures(HSTMT hstmt,
!                                               UCHAR FAR * szProcQualifier,
!                                               SWORD cbProcQualifier,
!                                               UCHAR FAR * szProcOwner,
!                                               SWORD cbProcOwner,
!                                               UCHAR FAR * szProcName,
!                                               SWORD cbProcName);
!
!     RETCODE SQL_API SQLSetPos(HSTMT hstmt,
!                                           UWORD irow,
!                                           UWORD fOption,
!                                           UWORD fLock);
!
!     RETCODE SQL_API SQLTablePrivileges(HSTMT hstmt,
!                                             UCHAR FAR * szTableQualifier,
!                                                    SWORD cbTableQualifier,
!                                                 UCHAR FAR * szTableOwner,
!                                                    SWORD cbTableOwner,
!                                                  UCHAR FAR * szTableName,
!                                                    SWORD cbTableName);
!
!     RETCODE SQL_API SQLBindParameter(HSTMT hstmt,
!                                                  UWORD ipar,
!                                                  SWORD fParamType,
!                                                  SWORD fCType,
!                                                  SWORD fSqlType,
!                                                  UDWORD cbColDef,
!                                                  SWORD ibScale,
!                                                  PTR rgbValue,
!                                                  SDWORD cbValueMax,
!                                                  SDWORD FAR * pcbValue);
!
!     RETCODE SQL_API SQLSetScrollOptions(HSTMT hstmt,
!                                                     UWORD fConcurrency,
!                                                     SDWORD crowKeyset,
!                                                     UWORD crowRowset);


  #ifdef __cplusplus
--- 1342,1556 ----
  {
  #endif

! RETCODE SQL_API SQLSetConnectOption(HDBC, UWORD, UDWORD);
! RETCODE SQL_API SQLNumResultCols(HSTMT, SWORD FAR *);

  /*
   *     function prototypes previously missing from isqlext.h
   */
! RETCODE SQL_API SQLColumns(HSTMT hstmt,
!            UCHAR FAR * szTableQualifier,
!            SWORD cbTableQualifier,
!            UCHAR FAR * szTableOwner,
!            SWORD cbTableOwner,
!            UCHAR FAR * szTableName,
!            SWORD cbTableName,
!            UCHAR FAR * szColumnName,
!            SWORD cbColumnName);
!
! RETCODE SQL_API SQLDriverConnect(HDBC hdbc,
!                  HWND hwnd,
!                  UCHAR FAR * szConnStrIn,
!                  SWORD cbConnStrIn,
!                  UCHAR FAR * szConnStrOut,
!                  SWORD cbConnStrOutMax,
!                  SWORD FAR * pcbConnStrOut,
!                  UWORD fDriverCompletion);
!
! RETCODE SQL_API SQLGetConnectOption(HDBC hdbc,
!                     UWORD fOption,
!                     PTR pvParam);
!
! RETCODE SQL_API SQLGetData(HSTMT hstmt,
!            UWORD icol,
!            SWORD fCType,
!            PTR rgbValue,
!            SDWORD cbValueMax,
!            SDWORD FAR * pcbValue);
!
! RETCODE SQL_API SQLGetFunctions(HDBC hdbc,
!                 UWORD fFunction,
!                 UWORD FAR * pfExists);
!
! RETCODE SQL_API SQLGetInfo(HDBC hdbc,
!            UWORD fInfoType,
!            PTR rgbInfoValue,
!            SWORD cbInfoValueMax,
!            SWORD FAR * pcbInfoValue);
!
! RETCODE SQL_API SQLGetStmtOption(HSTMT hstmt,
!                  UWORD fOption,
!                  PTR pvParam);
!
! RETCODE SQL_API SQLGetTypeInfo(HSTMT hstmt,
!                SWORD fSqlType);
!
! RETCODE SQL_API SQLParamData(HSTMT hstmt,
!              PTR FAR * prgbValue);
!
! RETCODE SQL_API SQLPutData(HSTMT hstmt,
!            PTR rgbValue,
!            SDWORD cbValue);
!
! RETCODE SQL_API SQLSetStmtOption(HSTMT hstmt,
!                  UWORD fOption,
!                  UDWORD vParam);
!
! RETCODE SQL_API SQLSpecialColumns(HSTMT hstmt,
!                   UWORD fColType,
!                   UCHAR FAR * szTableQualifier,
!                   SWORD cbTableQualifier,
!                   UCHAR FAR * szTableOwner,
!                   SWORD cbTableOwner,
!                   UCHAR FAR * szTableName,
!                   SWORD cbTableName,
!                   UWORD fScope,
!                   UWORD fNullable);
!
! RETCODE SQL_API SQLStatistics(HSTMT hstmt,
!               UCHAR FAR * szTableQualifier,
!               SWORD cbTableQualifier,
!               UCHAR FAR * szTableOwner,
!               SWORD cbTableOwner,
!               UCHAR FAR * szTableName,
!               SWORD cbTableName,
!               UWORD fUnique,
!               UWORD fAccuracy);
!
! RETCODE SQL_API SQLTables(HSTMT hstmt,
!           UCHAR FAR * szTableQualifier,
!           SWORD cbTableQualifier,
!           UCHAR FAR * szTableOwner,
!           SWORD cbTableOwner,
!           UCHAR FAR * szTableName,
!           SWORD cbTableName,
!           UCHAR FAR * szTableType,
!           SWORD cbTableType);
!
! RETCODE SQL_API SQLBrowseConnect(HDBC hdbc,
!                  UCHAR FAR * szConnStrIn,
!                  SWORD cbConnStrIn,
!                  UCHAR FAR * szConnStrOut,
!                  SWORD cbConnStrOutMax,
!                  SWORD FAR * pcbConnStrOut);
!
! RETCODE SQL_API SQLColumnPrivileges(HSTMT hstmt,
!                     UCHAR FAR * szTableQualifier,
!                     SWORD cbTableQualifier,
!                     UCHAR FAR * szTableOwner,
!                     SWORD cbTableOwner,
!                     UCHAR FAR * szTableName,
!                     SWORD cbTableName,
!                     UCHAR FAR * szColumnName,
!                     SWORD cbColumnName);
!
! RETCODE SQL_API SQLDescribeParam(HSTMT hstmt,
!                  UWORD ipar,
!                  SWORD FAR * pfSqlType,
!                  UDWORD FAR * pcbColDef,
!                  SWORD FAR * pibScale,
!                  SWORD FAR * pfNullable);
!
! RETCODE SQL_API SQLExtendedFetch(HSTMT hstmt,
!                  UWORD fFetchType,
!                  SDWORD irow,
!                  UDWORD FAR * pcrow,
!                  UWORD FAR * rgfRowStatus);
!
! RETCODE SQL_API SQLForeignKeys(HSTMT hstmt,
!                UCHAR FAR * szPkTableQualifier,
!                SWORD cbPkTableQualifier,
!                UCHAR FAR * szPkTableOwner,
!                SWORD cbPkTableOwner,
!                UCHAR FAR * szPkTableName,
!                SWORD cbPkTableName,
!                UCHAR FAR * szFkTableQualifier,
!                SWORD cbFkTableQualifier,
!                UCHAR FAR * szFkTableOwner,
!                SWORD cbFkTableOwner,
!                UCHAR FAR * szFkTableName,
!                SWORD cbFkTableName);
!
! RETCODE SQL_API SQLMoreResults(HSTMT hstmt);
!
! RETCODE SQL_API SQLNativeSql(HDBC hdbc,
!              UCHAR FAR * szSqlStrIn,
!              SDWORD cbSqlStrIn,
!              UCHAR FAR * szSqlStr,
!              SDWORD cbSqlStrMax,
!              SDWORD FAR * pcbSqlStr);
!
! RETCODE SQL_API SQLNumParams(HSTMT hstmt,
!              SWORD FAR * pcpar);
!
! RETCODE SQL_API SQLParamOptions(HSTMT hstmt,
!                 UDWORD crow,
!                 UDWORD FAR * pirow);
!
! RETCODE SQL_API SQLPrimaryKeys(HSTMT hstmt,
!                UCHAR FAR * szTableQualifier,
!                SWORD cbTableQualifier,
!                UCHAR FAR * szTableOwner,
!                SWORD cbTableOwner,
!                UCHAR FAR * szTableName,
!                SWORD cbTableName);
!
! RETCODE SQL_API SQLProcedureColumns(HSTMT hstmt,
!                     UCHAR FAR * szProcQualifier,
!                     SWORD cbProcQualifier,
!                     UCHAR FAR * szProcOwner,
!                     SWORD cbProcOwner,
!                     UCHAR FAR * szProcName,
!                     SWORD cbProcName,
!                     UCHAR FAR * szColumnName,
!                     SWORD cbColumnName);
!
! RETCODE SQL_API SQLProcedures(HSTMT hstmt,
!               UCHAR FAR * szProcQualifier,
!               SWORD cbProcQualifier,
!               UCHAR FAR * szProcOwner,
!               SWORD cbProcOwner,
!               UCHAR FAR * szProcName,
!               SWORD cbProcName);
!
! RETCODE SQL_API SQLSetPos(HSTMT hstmt,
!           UWORD irow,
!           UWORD fOption,
!           UWORD fLock);
!
! RETCODE SQL_API SQLTablePrivileges(HSTMT hstmt,
!                    UCHAR FAR * szTableQualifier,
!                    SWORD cbTableQualifier,
!                    UCHAR FAR * szTableOwner,
!                    SWORD cbTableOwner,
!                    UCHAR FAR * szTableName,
!                    SWORD cbTableName);
!
! RETCODE SQL_API SQLBindParameter(HSTMT hstmt,
!                  UWORD ipar,
!                  SWORD fParamType,
!                  SWORD fCType,
!                  SWORD fSqlType,
!                  UDWORD cbColDef,
!                  SWORD ibScale,
!                  PTR rgbValue,
!                  SDWORD cbValueMax,
!                  SDWORD FAR * pcbValue);
!
! RETCODE SQL_API SQLSetScrollOptions(HSTMT hstmt,
!                     UWORD fConcurrency,
!                     SDWORD crowKeyset,
!                     UWORD crowRowset);


  #ifdef __cplusplus
Index: src/pl/plpgsql/src/pl_exec.c
===================================================================
RCS file: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v
retrieving revision 1.49
diff -c -r1.49 pl_exec.c
*** src/pl/plpgsql/src/pl_exec.c    2001/11/05 19:41:56    1.49
--- src/pl/plpgsql/src/pl_exec.c    2001/11/07 22:19:21
***************
*** 419,424 ****
--- 419,425 ----
                                              func->fn_rettypelem,
                                              -1,
                                              &fcinfo->isnull);
+
              /*
               * If the functions return type isn't by value, copy the value
               * into upper executor memory context.

pgsql-patches by date:

Previous
From: Rene Pijlman
Date:
Subject: Re: Memory leakage in jdbc Driver
Next
From: Tom Lane
Date:
Subject: Re: Fix for 'extern "C"' indenting