• Tom Lane's avatar
    Allow creation of C/POSIX collations without depending on libc behavior. · f9725657
    Tom Lane authored
    Most of our collations code has special handling for the locale names
    "C" and "POSIX", allowing those collations to be used whether or not
    the system libraries think those locale names are valid, or indeed
    whether said libraries even have any locale support.  But we missed
    handling things that way in CREATE COLLATION.  This meant you couldn't
    clone the C/POSIX collations, nor explicitly define a new collation
    using those locale names, unless the libraries allow it.  That's pretty
    pointless, as well as being a violation of pg_newlocale_from_collation's
    API specification.
    
    The practical effect of this change is quite limited: it allows creating
    such collations even on platforms that don't HAVE_LOCALE_T, and it allows
    making "POSIX" collation objects on Windows, which before this would only
    let you make "C" collation objects.  Hence, even though this is a bug fix
    IMO, it doesn't seem worth the trouble to back-patch.
    
    In passing, suppress the DROP CASCADE detail messages at the end of the
    collation regression test.  I'm surprised we've never been bit by
    message ordering issues there.
    
    Per report from Murtuza Zabuawala.
    
    Discussion: https://postgr.es/m/CAKKotZS-wcDcofXDCH=sidiuajE+nqHn2CGjLLX78anyDmi3gQ@mail.gmail.com
    f9725657
collate.sql 9.33 KB