Marc ROGLIANO wrote: > > The following bug has been logged online: > > Bug reference: 2606 > Logged by: Marc ROGLIANO > Email address: [EMAIL PROTECTED] > PostgreSQL version: 8.1.4 > Operating system: Windows XP > Description: (libpq) incorrect function declaration in libpq-fe.h > Details: > > Hello, > > In libpq-fe.h, the function lo_write is declared : > > extern int lo_write(PGconn *conn, int fd, char *buf, size_t len); > => 'const' missing before char *buf : buf should not be writable here
Right, patch attached and applied. Interestingly, it was documented as taking a 'const' there, but not implemented as const in the code. -- Bruce Momjian [EMAIL PROTECTED] EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/libpq/be-fsstubs.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v retrieving revision 1.82 diff -c -c -r1.82 be-fsstubs.c *** src/backend/libpq/be-fsstubs.c 26 Apr 2006 00:34:57 -0000 1.82 --- src/backend/libpq/be-fsstubs.c 7 Sep 2006 15:34:28 -0000 *************** *** 165,171 **** } int ! lo_write(int fd, char *buf, int len) { int status; --- 165,171 ---- } int ! lo_write(int fd, const char *buf, int len) { int status; Index: src/backend/storage/large_object/inv_api.c =================================================================== RCS file: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v retrieving revision 1.119 diff -c -c -r1.119 inv_api.c *** src/backend/storage/large_object/inv_api.c 31 Jul 2006 20:09:05 -0000 1.119 --- src/backend/storage/large_object/inv_api.c 7 Sep 2006 15:34:29 -0000 *************** *** 488,494 **** } int ! inv_write(LargeObjectDesc *obj_desc, char *buf, int nbytes) { int nwritten = 0; int n; --- 488,494 ---- } int ! inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes) { int nwritten = 0; int n; Index: src/include/libpq/be-fsstubs.h =================================================================== RCS file: /cvsroot/pgsql/src/include/libpq/be-fsstubs.h,v retrieving revision 1.26 diff -c -c -r1.26 be-fsstubs.h *** src/include/libpq/be-fsstubs.h 5 Mar 2006 15:58:56 -0000 1.26 --- src/include/libpq/be-fsstubs.h 7 Sep 2006 15:34:30 -0000 *************** *** 41,47 **** * but too late now... */ extern int lo_read(int fd, char *buf, int len); ! extern int lo_write(int fd, char *buf, int len); /* * Cleanup LOs at xact commit/abort --- 41,47 ---- * but too late now... */ extern int lo_read(int fd, char *buf, int len); ! extern int lo_write(int fd, const char *buf, int len); /* * Cleanup LOs at xact commit/abort Index: src/include/storage/large_object.h =================================================================== RCS file: /cvsroot/pgsql/src/include/storage/large_object.h,v retrieving revision 1.34 diff -c -c -r1.34 large_object.h *** src/include/storage/large_object.h 26 Apr 2006 00:34:57 -0000 1.34 --- src/include/storage/large_object.h 7 Sep 2006 15:34:30 -0000 *************** *** 77,82 **** extern int inv_seek(LargeObjectDesc *obj_desc, int offset, int whence); extern int inv_tell(LargeObjectDesc *obj_desc); extern int inv_read(LargeObjectDesc *obj_desc, char *buf, int nbytes); ! extern int inv_write(LargeObjectDesc *obj_desc, char *buf, int nbytes); #endif /* LARGE_OBJECT_H */ --- 77,82 ---- extern int inv_seek(LargeObjectDesc *obj_desc, int offset, int whence); extern int inv_tell(LargeObjectDesc *obj_desc); extern int inv_read(LargeObjectDesc *obj_desc, char *buf, int nbytes); ! extern int inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes); #endif /* LARGE_OBJECT_H */ Index: src/interfaces/libpq/fe-lobj.c =================================================================== RCS file: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v retrieving revision 1.58 diff -c -c -r1.58 fe-lobj.c *** src/interfaces/libpq/fe-lobj.c 14 Jun 2006 17:49:25 -0000 1.58 --- src/interfaces/libpq/fe-lobj.c 7 Sep 2006 15:34:30 -0000 *************** *** 172,178 **** * returns the number of bytes written, or -1 on failure. */ int ! lo_write(PGconn *conn, int fd, char *buf, size_t len) { PQArgBlock argv[2]; PGresult *res; --- 172,178 ---- * returns the number of bytes written, or -1 on failure. */ int ! lo_write(PGconn *conn, int fd, const char *buf, size_t len) { PQArgBlock argv[2]; PGresult *res; Index: src/interfaces/libpq/libpq-fe.h =================================================================== RCS file: /cvsroot/pgsql/src/interfaces/libpq/libpq-fe.h,v retrieving revision 1.132 diff -c -c -r1.132 libpq-fe.h *** src/interfaces/libpq/libpq-fe.h 18 Aug 2006 19:52:39 -0000 1.132 --- src/interfaces/libpq/libpq-fe.h 7 Sep 2006 15:34:30 -0000 *************** *** 483,489 **** 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 Oid lo_create(PGconn *conn, Oid lobjId); --- 483,489 ---- 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, const 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 Oid lo_create(PGconn *conn, Oid lobjId);
---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match