lc_time);
}
- if (!encoding && locale_provider == COLLPROVIDER_ICU)
- {
- encodingid = PG_UTF8;
- printf(_("The default database encoding has been set to \"%s\".\n"),
- pg_encoding_to_char(encodingid));
- }
- else if (!encoding)
+ if (!encoding)
{
int ctype_enc;
ctype_enc = pg_get_encoding_from_locale(lc_ctype, true);
+ /*
+ * If ctype_enc=SQL_ASCII, it's compatible with any encoding. ICU does
+ * not support SQL_ASCII, so select UTF-8 instead.
+ */
+ if (locale_provider == COLLPROVIDER_ICU && ctype_enc == PG_SQL_ASCII)
+ ctype_enc = PG_UTF8;
+
if (ctype_enc == -1)
{
/* Couldn't recognize the locale's codeset */
my $original_encoding = "6"; # UTF-8
my $original_provider = "c";
-my $original_collate = "C";
+my $original_locale = "C";
my $original_iculocale = "";
my $provider_field = "'c' AS datlocprovider";
my $iculocale_field = "NULL AS daticulocale";
my @initdb_params = @custom_opts;
push @initdb_params, ('--encoding', 'UTF-8');
-push @initdb_params, ('--lc-collate', $original_collate);
+push @initdb_params, ('--locale', $original_locale);
if ($original_provider eq "i")
{
push @initdb_params, ('--locale-provider', 'icu');
my $result;
$result = $oldnode->safe_psql(
- 'postgres', "SELECT encoding, $provider_field, datcollate, $iculocale_field
+ 'postgres', "SELECT encoding, $provider_field, datcollate, datctype, $iculocale_field
FROM pg_database WHERE datname='template0'");
-is($result, "$original_encoding|$original_provider|$original_collate|$original_iculocale",
+is($result, "$original_encoding|$original_provider|$original_locale|$original_locale|$original_iculocale",
"check locales in original cluster"
);
-# check ctype, which was acquired from environment by initdb
-my $original_ctype = $oldnode->safe_psql(
- 'postgres', q{SELECT datctype FROM pg_database WHERE datname='template0'});
-
# The default location of the source code is the root of this directory.
my $srcdir = abs_path("../../..");
# cluster.
push @initdb_params, ('--encoding', 'SQL_ASCII');
push @initdb_params, ('--locale-provider', 'libc');
-push @initdb_params, ('--lc-ctype', 'C');
$node_params{extra} = \@initdb_params;
$newnode->init(%node_params);
$result = $newnode->safe_psql(
'postgres', "SELECT encoding, $provider_field, datcollate, datctype, $iculocale_field
FROM pg_database WHERE datname='template0'");
-is($result, "$original_encoding|$original_provider|$original_collate|$original_ctype|$original_iculocale",
+is($result, "$original_encoding|$original_provider|$original_locale|$original_locale|$original_iculocale",
"check that locales in new cluster match original cluster"
);