Обсуждение: Patches for libpq++

Поиск
Список
Период
Сортировка

Patches for libpq++

От
"J. T. Vermeulen"
Дата:
I'd like to suggest the following changes to bring libpq++ a bit more up to
date:
- fixes include path in Makefile- makes some member functions const- flags (but does not fix) what looks like a memory
leakand a warning- changes int return type on ConnectionBad() to bool
 


diff -u -r postgresql-7.0.3/src/interfaces/libpq++/examples/Makefile
postgresql-7.0.3-jtv/src/interfaces/libpq++/examples/Makefile
--- postgresql-7.0.3/src/interfaces/libpq++/examples/Makefile    Thu Mar  2 03:00:59 2000
+++ postgresql-7.0.3-jtv/src/interfaces/libpq++/examples/Makefile    Wed Feb 21 16:16:14 2001
@@ -4,7 +4,8 @@LIBNAME= libpq++
-HEADERDIR= /usr/local/pgsql/include
+#HEADERDIR= /usr/local/pgsql/include
+HEADERDIR=/usr/include/postgresqlLIBPQDIR= /usr/local/pgsql/lib
diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgconnection.cc
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.cc
--- postgresql-7.0.3/src/interfaces/libpq++/pgconnection.cc    Sun Apr 23 00:39:15 2000
+++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.cc    Wed Feb 21 17:16:51 2001
@@ -67,7 +67,7 @@}// PgConnection::status -- return connection or result status
-ConnStatusType PgConnection::Status()
+ConnStatusType PgConnection::Status() const{  return PQstatus(pgConn);}
@@ -123,19 +123,19 @@
-int PgConnection::ConnectionBad() 
+bool PgConnection::ConnectionBad() const{ return Status() == CONNECTION_BAD; }
-const char* PgConnection::ErrorMessage() 
+const char* PgConnection::ErrorMessage() const{ return (const char *)PQerrorMessage(pgConn); }  
-const char* PgConnection::DBName()
+const char* PgConnection::DBName() const{ return (const char *)PQdb(pgConn); }
diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgconnection.h
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.h
--- postgresql-7.0.3/src/interfaces/libpq++/pgconnection.h    Sun Apr 23 00:39:15 2000
+++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.h    Wed Feb 21 17:17:13 2001
@@ -66,12 +66,12 @@   virtual ~PgConnection();             // close connection and clean up      // Connection status
anderror messages
 
-   ConnStatusType Status();
-   int ConnectionBad();
-   const char* ErrorMessage();
+   ConnStatusType Status() const;
+   bool ConnectionBad() const;
+   const char* ErrorMessage() const;     // returns the database name of the connection
-   const char* DBName();
+   const char* DBName() const;   // Query Execution interface   ExecStatusType Exec(const char* query);  // send a
queryto the backend
 
diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.cc
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.cc
--- postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.cc    Sat Jan 29 17:58:52 2000
+++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.cc    Wed Feb 21 17:41:51 2001
@@ -45,6 +45,8 @@    po.align = width;
+        // TODO: Looks like memory leak
+    // TODO: Looks like PQprintOpt::fieldSep should be const char *    if(terseOutput) po.fieldSep = strdup("|");
elsepo.fieldSep = "";
 
@@ -150,15 +152,15 @@}
-int PgDatabase::GetLine(char* string, int length)
+int PgDatabase::GetLine(char str[], int length){ 
-return PQgetline(pgConn, string, length); 
+return PQgetline(pgConn, str, length); }
-void PgDatabase::PutLine(const char* string)
+void PgDatabase::PutLine(const char str[]){ 
-PQputline(pgConn, string); 
+PQputline(pgConn, str); }
diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.h
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.h
--- postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.h    Sun Apr 23 00:39:15 2000
+++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.h    Wed Feb 21 17:37:36 2001
@@ -63,8 +63,8 @@    int terseOutput = 0, int width = 0) ;  // copy command related access
-  int GetLine(char* string, int length);
-  void PutLine(const char* string);
+  int GetLine(char str[], int length);
+  void PutLine(const char str[]);  const char* OidStatus();  int EndCopy();    
diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pglobject.cc
postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.cc
--- postgresql-7.0.3/src/interfaces/libpq++/pglobject.cc    Sun Apr 23 00:39:15 2000
+++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.cc    Wed Feb 21 17:19:56 2001
@@ -142,7 +142,7 @@}
-int PgLargeObject::Tell()
+int PgLargeObject::Tell() const{   return lo_tell(pgConn, pgFd); }
@@ -160,7 +160,7 @@}
-string PgLargeObject::Status() 
+string PgLargeObject::Status() const{   return loStatus; }
diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pglobject.h postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.h
--- postgresql-7.0.3/src/interfaces/libpq++/pglobject.h    Sun Apr 23 00:39:15 2000
+++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.h    Wed Feb 21 17:19:50 2001
@@ -47,12 +47,12 @@  int Read(char* buf, int len);  int Write(const char* buf, int len);  int LSeek(int offset, int
whence);
-  int Tell();
+  int Tell() const;  int Unlink();  Oid LOid();  Oid Import(const char* filename);  int Export(const char* filename);

-  string Status();
+  string Status() const;private:// We don't support copying of PgLargeObject objects,


Re: Patches for libpq++

От
Bruce Momjian
Дата:
Thanks.  I will include this in 7.2.  7.1 is frozen for changes, I
think.


> I'd like to suggest the following changes to bring libpq++ a bit more up to
> date:
> 
>  - fixes include path in Makefile
>  - makes some member functions const
>  - flags (but does not fix) what looks like a memory leak and a warning
>  - changes int return type on ConnectionBad() to bool
> 
> 
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/examples/Makefile
postgresql-7.0.3-jtv/src/interfaces/libpq++/examples/Makefile
> --- postgresql-7.0.3/src/interfaces/libpq++/examples/Makefile    Thu Mar  2 03:00:59 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/examples/Makefile    Wed Feb 21 16:16:14 2001
> @@ -4,7 +4,8 @@
>  
>  
>  LIBNAME= libpq++
> -HEADERDIR= /usr/local/pgsql/include
> +#HEADERDIR= /usr/local/pgsql/include
> +HEADERDIR=/usr/include/postgresql
>  LIBPQDIR= /usr/local/pgsql/lib
>  
>  
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgconnection.cc
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.cc
> --- postgresql-7.0.3/src/interfaces/libpq++/pgconnection.cc    Sun Apr 23 00:39:15 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.cc    Wed Feb 21 17:16:51 2001
> @@ -67,7 +67,7 @@
>  }
>  
>  // PgConnection::status -- return connection or result status
> -ConnStatusType PgConnection::Status()
> +ConnStatusType PgConnection::Status() const
>  {
>    return PQstatus(pgConn);
>  }
> @@ -123,19 +123,19 @@
>  
>  
>  
> -int PgConnection::ConnectionBad() 
> +bool PgConnection::ConnectionBad() const
>  { 
>  return Status() == CONNECTION_BAD; 
>  }
>  
>  
> -const char* PgConnection::ErrorMessage() 
> +const char* PgConnection::ErrorMessage() const
>  { 
>  return (const char *)PQerrorMessage(pgConn); 
>  }
>    
>  
> -const char* PgConnection::DBName()
> +const char* PgConnection::DBName() const
>  { 
>  return (const char *)PQdb(pgConn); 
>  }
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgconnection.h
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.h
> --- postgresql-7.0.3/src/interfaces/libpq++/pgconnection.h    Sun Apr 23 00:39:15 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgconnection.h    Wed Feb 21 17:17:13 2001
> @@ -66,12 +66,12 @@
>     virtual ~PgConnection();             // close connection and clean up
>     
>     // Connection status and error messages
> -   ConnStatusType Status();
> -   int ConnectionBad();
> -   const char* ErrorMessage();
> +   ConnStatusType Status() const;
> +   bool ConnectionBad() const;
> +   const char* ErrorMessage() const;
>    
>     // returns the database name of the connection
> -   const char* DBName();
> +   const char* DBName() const;
>  
>     // Query Execution interface
>     ExecStatusType Exec(const char* query);  // send a query to the backend
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.cc
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.cc
> --- postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.cc    Sat Jan 29 17:58:52 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.cc    Wed Feb 21 17:41:51 2001
> @@ -45,6 +45,8 @@
>  
>      po.align = width;
>  
> +        // TODO: Looks like memory leak
> +    // TODO: Looks like PQprintOpt::fieldSep should be const char *
>      if(terseOutput) po.fieldSep = strdup("|");
>      else po.fieldSep = "";
>  
> @@ -150,15 +152,15 @@
>  }
>  
>  
> -int PgDatabase::GetLine(char* string, int length)
> +int PgDatabase::GetLine(char str[], int length)
>  { 
> -return PQgetline(pgConn, string, length); 
> +return PQgetline(pgConn, str, length); 
>  }
>  
>  
> -void PgDatabase::PutLine(const char* string)
> +void PgDatabase::PutLine(const char str[])
>  { 
> -PQputline(pgConn, string); 
> +PQputline(pgConn, str); 
>  }
>  
>  
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.h
postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.h
> --- postgresql-7.0.3/src/interfaces/libpq++/pgdatabase.h    Sun Apr 23 00:39:15 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pgdatabase.h    Wed Feb 21 17:37:36 2001
> @@ -63,8 +63,8 @@
>      int terseOutput = 0, int width = 0) ;
>  
>    // copy command related access
> -  int GetLine(char* string, int length);
> -  void PutLine(const char* string);
> +  int GetLine(char str[], int length);
> +  void PutLine(const char str[]);
>    const char* OidStatus();
>    int EndCopy();
>      
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pglobject.cc
postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.cc
> --- postgresql-7.0.3/src/interfaces/libpq++/pglobject.cc    Sun Apr 23 00:39:15 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.cc    Wed Feb 21 17:19:56 2001
> @@ -142,7 +142,7 @@
>  }
>  
>  
> -int PgLargeObject::Tell()
> +int PgLargeObject::Tell() const
>  { 
>    return lo_tell(pgConn, pgFd); 
>  }
> @@ -160,7 +160,7 @@
>  }
>  
>  
> -string PgLargeObject::Status() 
> +string PgLargeObject::Status() const
>  { 
>    return loStatus; 
>  }
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/pglobject.h
postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.h
> --- postgresql-7.0.3/src/interfaces/libpq++/pglobject.h    Sun Apr 23 00:39:15 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/pglobject.h    Wed Feb 21 17:19:50 2001
> @@ -47,12 +47,12 @@
>    int Read(char* buf, int len);
>    int Write(const char* buf, int len);
>    int LSeek(int offset, int whence);
> -  int Tell();
> +  int Tell() const;
>    int Unlink();
>    Oid LOid();
>    Oid Import(const char* filename);
>    int Export(const char* filename); 
> -  string Status();
> +  string Status() const;
>  
>  private:
>  // We don't support copying of PgLargeObject objects,
> 


--  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,
Pennsylvania19026
 


Re: Patches for libpq++

От
Bruce Momjian
Дата:
> I'd like to suggest the following changes to bring libpq++ a bit more up to
> date:
> 
>  - fixes include path in Makefile
>  - makes some member functions const
>  - flags (but does not fix) what looks like a memory leak and a warning
>  - changes int return type on ConnectionBad() to bool
> 
> 
> diff -u -r postgresql-7.0.3/src/interfaces/libpq++/examples/Makefile
postgresql-7.0.3-jtv/src/interfaces/libpq++/examples/Makefile
> --- postgresql-7.0.3/src/interfaces/libpq++/examples/Makefile    Thu Mar  2 03:00:59 2000
> +++ postgresql-7.0.3-jtv/src/interfaces/libpq++/examples/Makefile    Wed Feb 21 16:16:14 2001
> @@ -4,7 +4,8 @@
>  
>  
>  LIBNAME= libpq++
> -HEADERDIR= /usr/local/pgsql/include
> +#HEADERDIR= /usr/local/pgsql/include
> +HEADERDIR=/usr/include/postgresql
>  LIBPQDIR= /usr/local/pgsql/lib

This change will not be made.  The source install is
/usr/local/pgsql/include.  RPM's may install in /usr/include/postgresql,
but we don't make such changes on our end of that.

--  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,
Pennsylvania19026
 


Re: Patches for libpq++

От
"J. T. Vermeulen"
Дата:
On Wed, 21 Feb 2001, Bruce Momjian wrote:

> This change will not be made.  The source install is
> /usr/local/pgsql/include.  RPM's may install in /usr/include/postgresql,
> but we don't make such changes on our end of that.

I stand corrected.  In my case it was a Debian package, but otherwise much the
same conflict of filesystem standards.


Jeroen



Re: Patches for libpq++

От
Bruce Momjian
Дата:
> On Wed, 21 Feb 2001, Bruce Momjian wrote:
> 
> > This change will not be made.  The source install is
> > /usr/local/pgsql/include.  RPM's may install in /usr/include/postgresql,
> > but we don't make such changes on our end of that.
> 
> I stand corrected.  In my case it was a Debian package, but otherwise much the
> same conflict of filesystem standards.

It would be nice to say I could get it into 7.1, but we are already in
beta.  Sorry.  If you have other changes, feel free to send them to the
lists and I will keep them 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,
Pennsylvania19026
 


tutorial section

От
Lonnie Cumberland
Дата:
Hello all,

Well, I am slowly getting a feel for PostgreSQL and have even been able to get
some things to compile in the libpq++ examples section.

I was recently working in the "tutorial" section trying to run the demo
"complex" and "funcs" which by the way compiled fine after I made some path
corrections.

After I started up "psql -s" like the README says, I did "\i complex.sql" and
it started the complex script. The problem came when I got the loading the
"complex.so" file which is now resulting in "Permission denied" for some
reason, even though I have the correct file permissions set.

-----------------------------------------------------------------------
Type:  \copyright for distribution terms      \h for help with SQL commands      \? for help on internal slash commands
    \g or terminate with semicolon to execute query      \q to quit
 

lonnie=# \i complex.sql
***(Single step mode: Verify query)********************************************
*
CREATE FUNCTION complex_in(opaque)  RETURNS complex  AS '/home/lonnie/postgresql-7.0.3/src/tutorial/complex.so'
LANGUAGE'c';
 
***(press return to proceed or enter x and return to cancel)*******************
*

psql:complex.sql:32: ERROR:  stat failed on file '/home/lonnie/postgresql-7.0.3
/src/tutorial/complex.so': Permission denied
***(Single step mode: Verify query)********************************************
-------------------------------------------------------------------------------

does someone have an ideas as to what is going on here?

Cheers,
Lonnie


__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices! http://auctions.yahoo.com/


Re: tutorial section

От
Tom Lane
Дата:
Lonnie Cumberland <lonnie_cumberland@yahoo.com> writes:
> psql:complex.sql:32: ERROR:  stat failed on file '/home/lonnie/postgresql-7.0.3
> /src/tutorial/complex.so': Permission denied

I would guess that some directory in that path is not readable by the
postgres backend.  Don't forget it's (probably) not running under the
same userid as you.
        regards, tom lane


Re: tutorial section

От
Lonnie Cumberland
Дата:
Thanks Tom,

I moved everything out into another directory that has general access and
things seem to be running just fine.

Cheers,
Lonnie


--- Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Lonnie Cumberland <lonnie_cumberland@yahoo.com> writes:
> > psql:complex.sql:32: ERROR:  stat failed on file
> '/home/lonnie/postgresql-7.0.3
> > /src/tutorial/complex.so': Permission denied
> 
> I would guess that some directory in that path is not readable by the
> postgres backend.  Don't forget it's (probably) not running under the
> same userid as you.
> 
>             regards, tom lane


__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices! http://auctions.yahoo.com/