Thread

Commits

  1. Be more consistent about errors for opfamily member lookup failures.

  1. cache lookup failed error for partition key with custom opclass

    Rushabh Lathia <rushabh.lathia@gmail.com> — 2017-07-24T11:36:49Z

    Hi,
    
    Consider the following test:
    
    CREATE OR REPLACE FUNCTION dummy_binaryint4(a int4, b int4) RETURNS int4 AS
    $$ BEGIN RETURN a; END; $$ LANGUAGE 'plpgsql' IMMUTABLE;
    
    CREATE OPERATOR CLASS custom_opclass2 FOR TYPE int2 USING BTREE AS OPERATOR
    1 = , FUNCTION 1 dummy_binaryint4(int4, int4);
    
    t=# CREATE TABLE list_tab(a int2, b int) PARTITION BY LIST (a
    custom_opclass2);
    *ERROR:  cache lookup failed for function 0*
    
    In the above test creating OP class type int2, but passing the function of
    int4
    type. During CREATE PARTITION, ComputePartitionAttrs() able to resolve the
    opclass
    for the partition key (partition key type is int2), but while looking for a
    method for the int2 -
    it unable to find the proper function and end up with the cache lookup
    failed error.
    Error coming from RelationBuildPartitionKey().
    
    I think overall this is expected but still error can be better - like all
    the other
    places where get_opfamily_proc() unable to find valid function oid.
    
    PFA patch, where added elog() to add the error message same as all other
    places.
    
    
    Thanks,
    Rushabh Lathia
    www.EnterpriseDB.com
    
  2. Re: cache lookup failed error for partition key with custom opclass

    Tom Lane <tgl@sss.pgh.pa.us> — 2017-07-24T13:53:06Z

    Rushabh Lathia <rushabh.lathia@gmail.com> writes:
    > PFA patch, where added elog() to add the error message same as all other
    > places.
    
    Some looking around says that this *isn't* the only place that just
    blithely assumes that it will find an opfamily entry.  But I agree
    that not checking for that isn't up to project standards.
    
    			regards, tom lane
    
    
    
  3. Re: cache lookup failed error for partition key with custom opclass

    Rushabh Lathia <rushabh.lathia@gmail.com> — 2017-07-25T05:41:09Z

    On Mon, Jul 24, 2017 at 7:23 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
    
    > Rushabh Lathia <rushabh.lathia@gmail.com> writes:
    > > PFA patch, where added elog() to add the error message same as all other
    > > places.
    >
    > Some looking around says that this *isn't* the only place that just
    > blithely assumes that it will find an opfamily entry.  But I agree
    > that not checking for that isn't up to project standards.
    >
    
    Thanks Tom.
    
    I go thorough the get_opfamily_proc() in the system and added the
    check for InvalidOid.
    
    Thanks,
    Rushabh Lathia
    www.EnterpriseDB.com
    
  4. Re: cache lookup failed error for partition key with custom opclass

    Tom Lane <tgl@sss.pgh.pa.us> — 2017-07-25T14:13:47Z

    Rushabh Lathia <rushabh.lathia@gmail.com> writes:
    > On Mon, Jul 24, 2017 at 7:23 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
    >> Some looking around says that this *isn't* the only place that just
    >> blithely assumes that it will find an opfamily entry.  But I agree
    >> that not checking for that isn't up to project standards.
    
    > I go thorough the get_opfamily_proc() in the system and added the
    > check for InvalidOid.
    
    Think I did that already, please compare your results with
    278cb4341103e967189997985b09981a73e23a34
    
    			regards, tom lane
    
    
    
  5. Re: cache lookup failed error for partition key with custom opclass

    Rushabh Lathia <rushabh.lathia@gmail.com> — 2017-07-26T06:31:44Z

    On Tue, Jul 25, 2017 at 7:43 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
    
    > Rushabh Lathia <rushabh.lathia@gmail.com> writes:
    > > On Mon, Jul 24, 2017 at 7:23 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
    > >> Some looking around says that this *isn't* the only place that just
    > >> blithely assumes that it will find an opfamily entry.  But I agree
    > >> that not checking for that isn't up to project standards.
    >
    > > I go thorough the get_opfamily_proc() in the system and added the
    > > check for InvalidOid.
    >
    > Think I did that already, please compare your results with
    > 278cb4341103e967189997985b09981a73e23a34
    >
    
    Thanks Tom.
    
    
    >
    >                         regards, tom lane
    >
    
    
    
    -- 
    Rushabh Lathia