diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml
index bfd66945f9c14319ba18f6787ddbb3f0127427b0..ec1324c810c3bf75baf076cac0b5b10612f3f60a 100644
--- a/doc/src/sgml/libpq.sgml
+++ b/doc/src/sgml/libpq.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.145 2004/01/09 02:02:43 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.146 2004/01/26 22:13:21 neilc Exp $
 -->
 
  <chapter id="libpq">
@@ -903,7 +903,7 @@ only protocol 2.0.  (Protocol 1.0 is obsolete and not supported by <application>
        Returns the error message most recently generated by
        an operation on the connection.
 <synopsis>
-char *PQerrorMessage(const PGconn* conn);
+char *PQerrorMessage(const PGconn *conn);
 </synopsis>
       </para>
 
@@ -912,7 +912,9 @@ char *PQerrorMessage(const PGconn* conn);
        <function>PQerrorMessage</function> if they fail.
        Note that by <application>libpq</application> convention, a nonempty
        <function>PQerrorMessage</function> result will
-       include a trailing newline.
+       include a trailing newline. The caller should not free the result 
+       directly. It will be freed when the associated <structname>PGconn</> 
+       handle is passed to <function>PQfinish</function>.
       </para>
      </listitem>
     </varlistentry>
@@ -1262,7 +1264,8 @@ processor (see <xref linkend="libpq-notice-processing">).
 <listitem>
 <para>
         Converts the enumerated type returned by <function>PQresultStatus</> into
-        a string constant describing the status code.
+        a string constant describing the status code. The caller should not 
+        free the result.
 <synopsis>
 char *PQresStatus(ExecStatusType status);
 </synopsis>
@@ -1279,7 +1282,10 @@ if there was no error.
 <synopsis>
 char *PQresultErrorMessage(const PGresult *res);
 </synopsis>
-If there was an error, the returned string will include a trailing newline.
+If there was an error, the returned string will include a trailing newline. 
+The caller should not free the result directly. It will be freed when the 
+associated <structname>PGresult</> handle is passed to 
+<function>PQclear</function>.
 </para>
 
 <para>
@@ -1307,7 +1313,10 @@ char *PQresultErrorField(const PGresult *res, int fieldcode);
 listed below.  <symbol>NULL</symbol> is returned if the
 <structname>PGresult</structname> is not an error or warning result,
 or does not include the specified field.  Field values will normally
-not include a trailing newline.
+not include a trailing newline. The caller should not free the 
+result directly. It will be freed when the
+associated <structname>PGresult</> handle is passed to
+<function>PQclear</function>.
 </para>
 
 <para>
@@ -1535,8 +1544,10 @@ int PQnfields(const PGresult *res);
 <term><function>PQfname</function><indexterm><primary>PQfname</></></term>
 <listitem>
 <para>
- Returns the column name associated with the given column number.
- Column numbers start at 0.
+Returns the column name associated with the given column number.
+Column numbers start at 0. The caller should not free the result
+directly. It will be freed when the associated <structname>PGresult</>
+handle is passed to <function>PQclear</function>.
 <synopsis>
 char *PQfname(const PGresult *res,
               int column_number);
@@ -1566,8 +1577,8 @@ int PQfnumber(const PGresult *res,
 
 <para>
         The given name is treated like an identifier in an SQL command,
-	that is, it is downcased unless double-quoted.  For example,
-	given a query result generated from the SQL command
+        that is, it is downcased unless double-quoted.  For example,
+        given a query result generated from the SQL command
 <programlisting>
 select 1 as FOO, 2 as "BAR";
 </programlisting>
@@ -1747,11 +1758,14 @@ returns 1 only if all columns of the result are binary (format 1).
 <term><function>PQgetvalue</function><indexterm><primary>PQgetvalue</></></term>
 <listitem>
 <para>
-            Returns a single field value of one row
-            of a <structname>PGresult</structname>.
-            Row and column numbers start at 0.
+            Returns a single field value of one row of a
+            <structname>PGresult</structname>.  Row and column numbers
+            start at 0.  The caller should not free the result
+            directly.  It will be freed when the associated
+            <structname>PGresult</> handle is passed to
+            <function>PQclear</function>.
 <synopsis>
-char* PQgetvalue(const PGresult *res,
+char *PQgetvalue(const PGresult *res,
                  int row_number,
                  int column_number);
 </synopsis>
@@ -1880,12 +1894,15 @@ results.
           Returns the command status tag from the SQL command that
           generated the <structname>PGresult</structname>.
 <synopsis>
-char * PQcmdStatus(PGresult *res);
+char *PQcmdStatus(PGresult *res);
 </synopsis>
 </para>
 <para>
 Commonly this is just the name of the command, but it may include additional
-data such as the number of rows processed.
+data such as the number of rows processed. The caller should
+not free the result directly. It will be freed when the
+associated <structname>PGresult</> handle is passed to
+<function>PQclear</function>.
 </para>
 </listitem>
 </varlistentry>
@@ -1896,7 +1913,7 @@ data such as the number of rows processed.
 <para>
           Returns the number of rows affected by the SQL command.
 <synopsis>
-char * PQcmdTuples(PGresult *res);
+char *PQcmdTuples(PGresult *res);
 </synopsis>
 </para>
 
@@ -1906,7 +1923,10 @@ char * PQcmdTuples(PGresult *res);
           <command>UPDATE</>, <command>DELETE</command>, <command>MOVE</>,
           or <command>FETCH</>, this returns a
           string containing the number of rows affected.  If the
-          command was anything else, it returns the empty string.
+          command was anything else, it returns the empty string. The
+          caller should not free the result directly. It will be freed 
+          when the associated <structname>PGresult</> handle is passed to
+          <function>PQclear</function>.
 </para>
 </listitem>
 </varlistentry>
@@ -1940,7 +1960,7 @@ Oid PQoidValue(const PGresult *res);
           OIDs.)  If the command was not an <command>INSERT</command>,
           returns an empty string.
 <synopsis>
-char * PQoidStatus(const PGresult *res);
+char *PQoidStatus(const PGresult *res);
 </synopsis>
 </para>
 
@@ -2522,7 +2542,7 @@ parameters and results substitutes for a fast-path function call.
 The function <function>PQfn</function><indexterm><primary>PQfn</></>
 requests execution of a server function via the fast-path interface:
 <synopsis>
-PGresult* PQfn(PGconn* conn,
+PGresult *PQfn(PGconn *conn,
                int fnid,
                int *result_buf,
                int *result_len,
@@ -2620,7 +2640,7 @@ The function <function>PQnotifies</function>
           returned from <function>PQnotifies</>, it is considered handled and will be
           removed from the list of notifications.
 <synopsis>
-PGnotify* PQnotifies(PGconn *conn);
+PGnotify *PQnotifies(PGconn *conn);
 
 typedef struct pgNotify {
     char *relname;              /* notification condition name */
@@ -3291,7 +3311,7 @@ a void pointer that is the same one passed to
 The default notice processor is simply
 <programlisting>
 static void
-defaultNoticeProcessor(void * arg, const char * message)
+defaultNoticeProcessor(void *arg, const char *message)
 {
     fprintf(stderr, "%s", message);
 }