Minor bugs and a formatting gripe - Mailing list pgsql-hackers

From Tom Lane
Subject Minor bugs and a formatting gripe
Date
Msg-id 9128.904882936@sss.pgh.pa.us
Whole thread Raw
Responses Re: [HACKERS] Minor bugs and a formatting gripe
Re: [HACKERS] Minor bugs and a formatting gripe
List pgsql-hackers
Bruce mentioned that he'd had some trouble applying my last set of
patches, because he'd already run his reformatting script against
the files involved.  So, I took the trouble to grovel through a
"diff --ignore-all-space" comparison of tonight's cvs tree with what
I had last week.  (I didn't have the energy to go through the *whole*
tree, but I did look through all of src/interfaces/.)  It was a
worthwhile exercise because I found a couple of minor errors --- see
attached patch.

I was mostly pretty happy with what the formatting script had done with
the code, especially in libpgtcl which had not been anywhere close to
matching the formatting conventions of the rest of pgsql.  Nice job!

BUT: I am not happy that the script chooses to reflow block comments.
Line breaks chosen on the basis of how much fits are not a readability
improvement over line breaks placed where a human author felt they made
sense.  For example, is this really an improvement in readability?
(And if it's *not* a clear gain, why are we doing it?)

*** 201,209 ****

  /* === in fe-misc.c === */

!     /* "Get" and "Put" routines return 0 if successful, EOF if not.
!      * Note that for Get, EOF merely means the buffer is exhausted,
!      * not that there is necessarily any error.
       */
      extern int    pqGetc(char *result, PGconn *conn);
      extern int    pqGets(char *s, int maxlen, PGconn *conn);
--- 201,210 ----

  /* === in fe-misc.c === */

!  /*
!   * "Get" and "Put" routines return 0 if successful, EOF if not. Note that
!   * for Get, EOF merely means the buffer is exhausted, not that there is
!   * necessarily any error.
    */
  extern int    pqGetc(char *result, PGconn *conn);
  extern int    pqGets(char *s, int maxlen, PGconn *conn);
***************

The only case within src/interfaces for which I am sufficiently annoyed
to submit a reversing patch is this one:

*** 1462,1476 ****
      if (strncmp(res->cmdStatus, "INSERT ", 7) != 0)
          return "";

!     /* The cmdStatus string looks like
!      *     INSERT oid count\0
!      * In order to be able to return an ordinary C string without
!      * damaging the result for PQcmdStatus or PQcmdTuples, we copy
!      * the oid part of the string to just after the null, so that
!      * cmdStatus looks like
!      *     INSERT oid count\0oid\0
!      *                       ^ our return value points here
!      * Pretty klugy eh?  This routine should've just returned an Oid value.
       */

      slen = strlen(res->cmdStatus);
--- 1488,1500 ----
      if (strncmp(res->cmdStatus, "INSERT ", 7) != 0)
          return "";

!     /*
!      * The cmdStatus string looks like INSERT oid count\0 In order to be
!      * able to return an ordinary C string without damaging the result for
!      * PQcmdStatus or PQcmdTuples, we copy the oid part of the string to
!      * just after the null, so that cmdStatus looks like INSERT oid
!      * count\0oid\0 ^ our return value points here Pretty klugy eh?  This
!      * routine should've just returned an Oid value.
       */

      slen = strlen(res->cmdStatus);
***************

but I hope this one drives home the point that automatic reflow of
block comments is a pretty stupid idea.  I strongly recommend that
that "feature" be disabled forthwith.  I'd further recommend that
someone look through the full source tree to see if any other block
comments have been rendered equally illegible.  I haven't got time
to do it myself right now, however.

Patch attached that corrects two minor errors introduced into
libpgtcl and libpq, and corrects the above loss of readability
of one block comment.

            regards, tom lane

*** src/interfaces/libpgtcl/pgtclCmds.c.orig    Thu Sep  3 01:08:28 1998
--- src/interfaces/libpgtcl/pgtclCmds.c    Thu Sep  3 23:06:36 1998
***************
*** 616,623 ****
              for (i = 1; i < PQnfields(result); i++)
              {
                  sprintf(workspace, "%s,%.200s%s", field0, PQfname(result,i),
!                     appendstr);
!                 sprintf(workspace, "%s,%.200s", field0, PQfname(result,i));
                  if (Tcl_SetVar2(interp, arrVar, workspace,
                                  PQgetvalue(result, tupno, i),
                                  TCL_LEAVE_ERR_MSG) == NULL)
--- 616,622 ----
              for (i = 1; i < PQnfields(result); i++)
              {
                  sprintf(workspace, "%s,%.200s%s", field0, PQfname(result,i),
!                         appendstr);
                  if (Tcl_SetVar2(interp, arrVar, workspace,
                                  PQgetvalue(result, tupno, i),
                                  TCL_LEAVE_ERR_MSG) == NULL)
*** src/interfaces/libpq/libpq-fe.h.orig    Wed Sep  2 22:10:51 1998
--- src/interfaces/libpq/libpq-fe.h    Thu Sep  3 23:37:43 1998
***************
*** 182,188 ****
      extern ConnStatusType PQstatus(PGconn *conn);
      extern char *PQerrorMessage(PGconn *conn);
      extern int    PQsocket(PGconn *conn);
-     extern int    PQsocket(PGconn *conn);
      extern int    PQbackendPID(PGconn *conn);

      /* Enable/disable tracing */
--- 182,187 ----
*** src/interfaces/libpq/fe-exec.c.orig    Wed Sep  2 22:10:47 1998
--- src/interfaces/libpq/fe-exec.c    Thu Sep  3 23:33:42 1998
***************
*** 1489,1500 ****
          return "";

      /*
!      * The cmdStatus string looks like INSERT oid count\0 In order to be
!      * able to return an ordinary C string without damaging the result for
!      * PQcmdStatus or PQcmdTuples, we copy the oid part of the string to
!      * just after the null, so that cmdStatus looks like INSERT oid
!      * count\0oid\0 ^ our return value points here Pretty klugy eh?  This
!      * routine should've just returned an Oid value.
       */

      slen = strlen(res->cmdStatus);
--- 1489,1503 ----
          return "";

      /*
!      * The cmdStatus string looks like
!      *     INSERT oid count\0
!      * In order to be able to return an ordinary C string without
!      * damaging the result for PQcmdStatus or PQcmdTuples, we copy
!      * the oid part of the string to just after the null, so that
!      * cmdStatus looks like
!      *     INSERT oid count\0oid\0
!      *                       ^ our return value points here
!      * Pretty klugy eh?  This routine should've just returned an Oid value.
       */

      slen = strlen(res->cmdStatus);

pgsql-hackers by date:

Previous
From: Vadim Mikheev
Date:
Subject: Re: [HACKERS] Open 6.4 items
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] Open 6.4 items