Try to deliver a sane message for _create_locale() failure on Windows.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 1 Aug 2017 20:11:51 +0000 (16:11 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 1 Aug 2017 20:11:51 +0000 (16:11 -0400)
commit1e165d05fe06a9072867607886f818bc255507db
treef1970479542b1bb0c043c97a891dd9a766cea5cc
parentc1bb7870463bd8ab2b28b363616ec60a9041e13a
Try to deliver a sane message for _create_locale() failure on Windows.

We were just printing errno, which is certainly not gonna work on
Windows.  Now, it's not entirely clear from Microsoft's documentation
whether _create_locale() adheres to standard Windows error reporting
conventions, but let's assume it does and try to map the GetLastError
result to an errno.  If this turns out not to work, probably the best
thing to do will be to assume the error is always ENOENT on Windows.

This is a longstanding bug, but given the lack of previous field
complaints, I'm not excited about back-patching it.

Per report from Murtuza Zabuawala.

Discussion: https://postgr.es/m/CAKKotZS-wcDcofXDCH=sidiuajE+nqHn2CGjLLX78anyDmi3gQ@mail.gmail.com
src/backend/utils/adt/pg_locale.c
src/test/regress/expected/collate.out
src/test/regress/sql/collate.sql