• Tom Lane's avatar
    Fix collation handling in plpgsql functions. · a4425e32
    Tom Lane authored
    Make plpgsql treat the input collation as a polymorphism variable, so
    that we cache separate plans for each input collation that's used in a
    particular session, as per recent discussion.  Propagate the input
    collation to all collatable input parameters.
    
    I chose to also propagate the input collation to all declared variables of
    collatable types, which is a bit more debatable but seems to be necessary
    for non-astonishing behavior.  (Copying a parameter into a separate local
    variable shouldn't result in a change of behavior, for example.)  There is
    enough infrastructure here to support declaring a collation for each local
    variable to override that default, but I thought we should wait to see what
    the field demand is before adding such a feature.
    
    In passing, remove exec_get_rec_fieldtype(), which wasn't used anywhere.
    
    Documentation patch to follow.
    a4425e32
collate.linux.utf8.sql 11.2 KB