• Alvaro Herrera's avatar
    Improve BRIN infra, minmax opclass and regression test · db5f98ab
    Alvaro Herrera authored
    The minmax opclass was using the wrong support functions when
    cross-datatypes queries were run.  Instead of trying to fix the
    pg_amproc definitions (which apparently is not possible), use the
    already correct pg_amop entries instead.  This requires jumping through
    more hoops (read: extra syscache lookups) to obtain the underlying
    functions to execute, but it is necessary for correctness.
    
    Author: Emre Hasegeli, tweaked by Álvaro
    Review: Andreas Karlsson
    
    Also change BrinOpcInfo to record each stored type's typecache entry
    instead of just the OID.  Turns out that the full type cache is
    necessary in brin_deform_tuple: the original code used the indexed
    type's byval and typlen properties to extract the stored tuple, which is
    correct in Minmax; but in other implementations that want to store
    something different, that's wrong.  The realization that this is a bug
    comes from Emre also, but I did not use his patch.
    
    I also adopted Emre's regression test code (with smallish changes),
    which is more complete.
    db5f98ab
brin_tuple.c 13.8 KB