• Robert Haas's avatar
    Adapt hashfn.c and hashutils.h for frontend use. · a91e2fa9
    Robert Haas authored
    hash_any() and its various variants are defined to return Datum,
    which is a backend-only concept, but the underlying functions
    actually want to return uint32 and uint64, and only return Datum
    because it's convenient for callers who are using them to
    implement a hash function for some SQL datatype.
    
    However, changing these functions to return uint32 and uint64
    seems like it might lead to programming errors or back-patching
    difficulties, both because they are widely used and because
    failure to use UInt{32,64}GetDatum() might not provoke a
    compilation error. Instead, rename the existing functions as
    well as changing the return type, and add static inline wrappers
    for those callers that need the previous behavior.
    
    Although this commit adapts hashutils.h and hashfn.c so that they
    can be compiled as frontend code, it does not actually do
    anything that would cause them to be so compiled. That is left
    for another commit.
    
    Patch by me, reviewed by Suraj Kharage and Mark Dilger.
    
    Discussion: http://postgr.es/m/CA+TgmoaRiG4TXND8QuM6JXFRkM_1wL2ZNhzaUKsuec9-4yrkgw@mail.gmail.com
    a91e2fa9
hashfn.c 17.5 KB