Re: [HACKERS] HEAD \df doesn't show functions with no arguments - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] HEAD \df doesn't show functions with no arguments
Date
Msg-id 200504010529.j315Tvv09698@candle.pha.pa.us
Whole thread Raw
List pgsql-patches
I have applied the following attached patch to CVS to fix the \df
display problem you reported.  We might remove the test it at some point
but at least now it works as in previous releases.

---------------------------------------------------------------------------

Michael Fuhr wrote:
> On Thu, Mar 31, 2005 at 01:06:39AM -0500, Tom Lane wrote:
> > Michael Fuhr <mike@fuhr.org> writes:
> > > The problem appears to be that proargtypes[0] is now NULL instead
> > > of 0.  Here's a simplified version of the \df query:
> >
> > >   SELECT proname
> > >   FROM pg_catalog.pg_proc p
> > >   WHERE p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype
> > >     AND p.proname ~ '^foo$';
> >
> > We could fix it by changing <> to IS DISTINCT FROM ... but I've never
> > been very happy with the idea that \df tries to suppress I/O functions
> > anyway.  How do you feel about removing the cstring test altogether?
>
> Wouldn't bother me -- I'd rather see what's there and make the
> "uninteresting" call myself, if that's the only reason for not
> showing the I/O functions.  It's not like they'd overwhelm the
> output.
>
> CREATE DATABASE foo TEMPLATE = template0;
> \c foo
>
> SELECT count(*) FROM pg_proc WHERE proargtypes[0] = 'cstring'::regtype;
>  count
> -------
>     63
> (1 row)
>
> SELECT count(*) FROM pg_proc;
>  count
> -------
>   1760
> (1 row)
>
> --
> Michael Fuhr
> http://www.fuhr.org/~mfuhr/
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/bin/psql/describe.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/describe.c,v
retrieving revision 1.113
diff -c -c -r1.113 describe.c
*** src/bin/psql/describe.c    16 Mar 2005 23:52:18 -0000    1.113
--- src/bin/psql/describe.c    1 Apr 2005 03:43:20 -0000
***************
*** 201,207 ****
       */
      appendPQExpBuffer(&buf,
         "WHERE p.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype\n"
!                       "      AND p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype\n"
                        "      AND NOT p.proisagg\n");

      processNamePattern(&buf, pattern, true, false,
--- 201,208 ----
       */
      appendPQExpBuffer(&buf,
         "WHERE p.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype\n"
!                       "      AND (p.proargtypes[0] IS NULL\n"
!                       "      OR   p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype)\n"
                        "      AND NOT p.proisagg\n");

      processNamePattern(&buf, pattern, true, false,
***************
*** 491,497 ****
                        "       LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"

       "  WHERE p.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype\n"
!                       "      AND p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype\n"
                        "      AND NOT p.proisagg\n",
                        _("function"));
      processNamePattern(&buf, pattern, true, false,
--- 492,499 ----
                        "       LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace\n"

       "  WHERE p.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype\n"
!                       "      AND (p.proargtypes[0] IS NULL\n"
!                       "      OR   p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype)\n"
                        "      AND NOT p.proisagg\n",
                        _("function"));
      processNamePattern(&buf, pattern, true, false,

pgsql-patches by date:

Previous
From: Mark Kirkwood
Date:
Subject: Re: [HACKERS] contrib/pg_buffercache
Next
From: Neil Conway
Date:
Subject: Re: [HACKERS] contrib/pg_buffercache