mirror of
https://github.com/postgres/postgres.git
synced 2025-11-21 00:42:43 +03:00
Make initdb behave sanely when the selected locale has codeset "US-ASCII".
Per discussion, this should result in defaulting to SQL_ASCII encoding. The original coding could not support that because it conflated selection of SQL_ASCII encoding with not being able to determine the encoding. Adjust pg_get_encoding_from_locale()'s API to distinguish these cases, and fix callers appropriately. Only initdb actually changes behavior, since the other callers were perfectly content to consider these cases equivalent. Per bug #5178 from Boh Yap. Not going to bother back-patching, since no one has complained before and there's an easy workaround (namely, specify the encoding you want).
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Tatsuo Ishii
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.91 2009/10/17 05:14:52 mha Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.92 2009/11/12 02:46:16 tgl Exp $
|
||||
*/
|
||||
#include "postgres.h"
|
||||
|
||||
@@ -984,7 +984,14 @@ int
|
||||
GetPlatformEncoding(void)
|
||||
{
|
||||
if (PlatformEncoding == NULL)
|
||||
PlatformEncoding = &pg_enc2name_tbl[pg_get_encoding_from_locale("")];
|
||||
{
|
||||
/* try to determine encoding of server's environment locale */
|
||||
int encoding = pg_get_encoding_from_locale("");
|
||||
|
||||
if (encoding < 0)
|
||||
encoding = PG_SQL_ASCII;
|
||||
PlatformEncoding = &pg_enc2name_tbl[encoding];
|
||||
}
|
||||
return PlatformEncoding->encoding;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user