Thread

Commits

  1. Fix broken ruleutils support for function TRANSFORM clauses.

  2. Doc: improve documentation of pg_proc.protrftypes.

  1. The mysterious pg_proc.protrftypes

    Joel Jacobson <joel@compiler.org> — 2021-01-25T07:04:34Z

    Hi,
    
    I'm trying to understand how pg_proc.protrftypes works.
    
    The documentation says "Data type OIDs for which to apply transforms.".
    For this column, there is no reference to any catalog table?
    I would guess it should be "(references pg_type.oid)", right?
    
    I tried to generate a value for this column to verify my hypothesis,
    but I struggle to find an example that produces a not null value here.
    
    I grepped the sources and found the "CREATE TRANSFORM FOR type_name" command,
    and found an extension using it named "bool_plperl" which I installed.
    
    I assumed this would cause a value, but no.
    
    Both of bool_plperl's two functions get null pg_proc.protrftypes values.
    
    I've tried running the full regression "make installcheck", but protrftypes doesn't seem to be covered:
    
    $ cd postgresql
    $ make installcheck
    ...
    =======================
    All 203 tests passed.
    =======================
    $ psql regression
    regression=# SELECT COUNT(*) FROM pg_proc WHERE protrftypes IS NOT NULL;
    count
    -------
         0
    (1 row)
    
    Can someone please show me how to generate a function with a not null pg_proc.protrftypes value?
    
    Many thanks.
    
    /Joel
    
    
    
    
    
    
  2. Re: The mysterious pg_proc.protrftypes

    Pavel Stehule <pavel.stehule@gmail.com> — 2021-01-25T07:14:37Z

    po 25. 1. 2021 v 8:05 odesílatel Joel Jacobson <joel@compiler.org> napsal:
    
    > Hi,
    >
    > I'm trying to understand how pg_proc.protrftypes works.
    >
    > The documentation says "Data type OIDs for which to apply transforms.".
    > For this column, there is no reference to any catalog table?
    > I would guess it should be "(references pg_type.oid)", right?
    >
    > I tried to generate a value for this column to verify my hypothesis,
    > but I struggle to find an example that produces a not null value here.
    >
    > I grepped the sources and found the "CREATE TRANSFORM FOR type_name"
    > command,
    > and found an extension using it named "bool_plperl" which I installed.
    >
    > I assumed this would cause a value, but no.
    >
    > Both of bool_plperl's two functions get null pg_proc.protrftypes values.
    >
    > I've tried running the full regression "make installcheck",
    > but protrftypes doesn't seem to be covered:
    >
    > $ cd postgresql
    > $ make installcheck
    > ...
    > =======================
    > All 203 tests passed.
    > =======================
    > $ psql regression
    > regression=# SELECT COUNT(*) FROM pg_proc WHERE protrftypes IS NOT NULL;
    > count
    > -------
    >      0
    > (1 row)
    >
    > Can someone please show me how to generate a function with a not null
    > pg_proc.protrftypes value?
    >
    
    you should to use TRANSFORM clause in CREATE FUNCTION statement
    
    https://www.postgresql.org/docs/current/sql-createfunction.html
    
    CREATE EXTENSION hstore_plperl CASCADE;
    
    CREATE FUNCTION test2() RETURNS hstore
    LANGUAGE plperl
    TRANSFORM FOR TYPE hstore
    AS $$
    $val = {a => 1, b => 'boo', c => undef};
    return $val;
    $$;
    
    Regards
    
    Pavel
    
    
    > Many thanks.
    >
    > /Joel
    >
    >
    >
    >
    >
    >
    >
    
  3. Re: The mysterious pg_proc.protrftypes

    Joel Jacobson <joel@compiler.org> — 2021-01-25T07:46:24Z

    On Mon, Jan 25, 2021, at 08:14, Pavel Stehule wrote:
    >you should to use TRANSFORM clause in CREATE FUNCTION statement
    
    Thanks, it worked, and like expected it references the pg_type.oid of the transform.
    
    Attached patch adds "(references pg_type.oid)" to the documentation for pg_proc.protrftypes.
    
    Suggested commit message: "Document the fact that pg_proc.protrftypes references pg_type.oid"
    
    /Joel
  4. Re: The mysterious pg_proc.protrftypes

    Pavel Stehule <pavel.stehule@gmail.com> — 2021-01-25T08:01:33Z

    po 25. 1. 2021 v 8:47 odesílatel Joel Jacobson <joel@compiler.org> napsal:
    
    > On Mon, Jan 25, 2021, at 08:14, Pavel Stehule wrote:
    > >you should to use TRANSFORM clause in CREATE FUNCTION statement
    >
    > Thanks, it worked, and like expected it references the pg_type.oid of the
    > transform.
    >
    > Attached patch adds "(references pg_type.oid)" to the documentation
    > for pg_proc.protrftypes.
    >
    > Suggested commit message: "Document the fact that pg_proc.protrftypes
    > references pg_type.oid"
    >
    
    +1
    
    Pavel
    
    
    > /Joel
    >
    
  5. Re: The mysterious pg_proc.protrftypes

    Tom Lane <tgl@sss.pgh.pa.us> — 2021-01-25T18:05:35Z

    "Joel Jacobson" <joel@compiler.org> writes:
    > Attached patch adds "(references pg_type.oid)" to the documentation for pg_proc.protrftypes.
    
    Agreed, pushed.  I also stumbled over a backend core dump while
    testing it :-(.  So this whole area seems a bit spongy ...
    
    			regards, tom lane