7fcd42641d
In F20+, we should be OK for upgrades where locale changed like from en_US.utf8 to en_US.UTF-8. Resolves: #1007802 Version: 9.3.5-7
41 lines
1.5 KiB
Diff
41 lines
1.5 KiB
Diff
From cd3e0071b8c9e082f5fe903a019d4e474be98e57 Mon Sep 17 00:00:00 2001
|
|
From: Tom Lane <tgl@sss.pgh.pa.us>
|
|
Date: Fri, 31 Jan 2014 02:03:30 -0500
|
|
Subject: [PATCH] Allow unrecognized encoding names in locales, as long as
|
|
they're the same.
|
|
|
|
The buildfarm says commit 58274728fb8e087049df67c0eee903d9743fdeda doesn't
|
|
work so well on Windows. This is because the encoding part of Windows
|
|
locale names can be just a code page number, eg "1252", which we don't
|
|
consider to be a valid encoding name. Add a check to accept encoding
|
|
parts that are case-insensitively string equal; this at least ensures
|
|
that the new code doesn't reject any cases that the old code allowed.
|
|
---
|
|
contrib/pg_upgrade/check.c | 10 ++++++++--
|
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c
|
|
index 58c2d16..faeaff5 100644
|
|
--- a/contrib/pg_upgrade/check.c
|
|
+++ b/contrib/pg_upgrade/check.c
|
|
@@ -447,8 +447,14 @@ equivalent_locale(const char *loca, const char *locb)
|
|
if (!chara || !charb)
|
|
return (pg_strcasecmp(loca, locb) == 0);
|
|
|
|
- /* Compare the encoding parts. */
|
|
- if (!equivalent_encoding(chara + 1, charb + 1))
|
|
+ /*
|
|
+ * Compare the encoding parts. Windows tends to use code page numbers for
|
|
+ * the encoding part, which equivalent_encoding() won't like, so accept if
|
|
+ * the strings are case-insensitive equal; otherwise use
|
|
+ * equivalent_encoding() to compare.
|
|
+ */
|
|
+ if (pg_strcasecmp(chara + 1, charb + 1) != 0 &&
|
|
+ !equivalent_encoding(chara + 1, charb + 1))
|
|
return false;
|
|
|
|
/*
|
|
--
|
|
1.9.3
|
|
|