As the subject says -- I've applied this patch to HEAD.

-Neil
Index: src/bin/psql/common.c
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/src/bin/psql/common.c,v
retrieving revision 1.86
diff -c -r1.86 common.c
*** src/bin/psql/common.c       7 May 2004 00:24:58 -0000       1.86
--- src/bin/psql/common.c       23 May 2004 21:20:01 -0000
***************
*** 802,808 ****
                                char            buf[10];
  
                                success = true;
!                               sprintf(buf, "%u", (unsigned int) PQoidValue(results));
                                if (!QUIET())
                                {
                                        if (pset.popt.topt.format == PRINT_HTML)
--- 802,809 ----
                                char            buf[10];
  
                                success = true;
!                               snprintf(buf, sizeof(buf),
!                                                "%u", (unsigned int) 
PQoidValue(results));
                                if (!QUIET())
                                {
                                        if (pset.popt.topt.format == PRINT_HTML)
Index: src/bin/psql/print.c
===================================================================
RCS file: /Users/neilc/local/cvs/pgsql-server/src/bin/psql/print.c,v
retrieving revision 1.47
diff -c -r1.47 print.c
*** src/bin/psql/print.c        18 May 2004 20:18:58 -0000      1.47
--- src/bin/psql/print.c        23 May 2004 22:07:52 -0000
***************
*** 1133,1147 ****
  printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout)
  {
        int                     nfields;
        const char **headers;
        const char **cells;
        char      **footers;
        char       *align;
        int                     i;
  
- 
        /* extract headers */
- 
        nfields = PQnfields(result);
  
        headers = calloc(nfields + 1, sizeof(*headers));
--- 1133,1146 ----
  printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout)
  {
        int                     nfields;
+       int                     ncells;
        const char **headers;
        const char **cells;
        char      **footers;
        char       *align;
        int                     i;
  
        /* extract headers */
        nfields = PQnfields(result);
  
        headers = calloc(nfields + 1, sizeof(*headers));
***************
*** 1155,1169 ****
                headers[i] = mbvalidate(PQfname(result, i), opt->topt.encoding);
  
        /* set cells */
! 
!       cells = calloc(nfields * PQntuples(result) + 1, sizeof(*cells));
        if (!cells)
        {
                perror("calloc");
                exit(EXIT_FAILURE);
        }
  
!       for (i = 0; i < nfields * PQntuples(result); i++)
        {
                if (PQgetisnull(result, i / nfields, i % nfields))
                        cells[i] = opt->nullPrint ? opt->nullPrint : "";
--- 1154,1168 ----
                headers[i] = mbvalidate(PQfname(result, i), opt->topt.encoding);
  
        /* set cells */
!       ncells = PQntuples(result) * nfields;
!       cells = calloc(ncells + 1, sizeof(*cells));
        if (!cells)
        {
                perror("calloc");
                exit(EXIT_FAILURE);
        }
  
!       for (i = 0; i < ncells; i++)
        {
                if (PQgetisnull(result, i / nfields, i % nfields))
                        cells[i] = opt->nullPrint ? opt->nullPrint : "";
***************
*** 1185,1190 ****
--- 1184,1194 ----
                }
  
                footers[0] = malloc(100);
+               if (!footers[0])
+               {
+                       perror("malloc");
+                       exit(EXIT_FAILURE);
+               }
                if (PQntuples(result) == 1)
                        snprintf(footers[0], 100, gettext("(1 row)"));
                else
***************
*** 1194,1200 ****
                footers = NULL;
  
        /* set alignment */
- 
        align = calloc(nfields + 1, sizeof(*align));
        if (!align)
        {
--- 1198,1203 ----
***************
*** 1221,1233 ****
        }
  
        /* call table printer */
- 
        printTable(opt->title, headers, cells,
!                          footers ? (const char *const *) footers : (const char 
*const *) (opt->footers),
                           align, &opt->topt, fout);
  
!       free((void *) headers);
!       free((void *) cells);
        if (footers)
        {
                free(footers[0]);
--- 1224,1235 ----
        }
  
        /* call table printer */
        printTable(opt->title, headers, cells,
!                          (const char *const *) footers,
                           align, &opt->topt, fout);
  
!       free(headers);
!       free(cells);
        if (footers)
        {
                free(footers[0]);
---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to