Fix assertion failure in CREATE DATABASE
An assertion would fail when creating a database with libc locale provider from a template database with icu locale provider. Reported-by: Marina Polyakova <m.polyakova@postgrespro.ru> Reviewed-by: Julien Rouhaud <rjuju123@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/f385ba25e7f8be427b8c582e5cca7d79%40postgrespro.ru#515a31c5429d6d37ad1d5c9d66962a1e
This commit is contained in:
parent
e2fe0aedd0
commit
36f729e2bc
@ -1012,10 +1012,10 @@ createdb(ParseState *pstate, const CreatedbStmt *stmt)
|
|||||||
dbcollate = src_collate;
|
dbcollate = src_collate;
|
||||||
if (dbctype == NULL)
|
if (dbctype == NULL)
|
||||||
dbctype = src_ctype;
|
dbctype = src_ctype;
|
||||||
if (dbiculocale == NULL)
|
|
||||||
dbiculocale = src_iculocale;
|
|
||||||
if (dblocprovider == '\0')
|
if (dblocprovider == '\0')
|
||||||
dblocprovider = src_locprovider;
|
dblocprovider = src_locprovider;
|
||||||
|
if (dbiculocale == NULL && dblocprovider == COLLPROVIDER_ICU)
|
||||||
|
dbiculocale = src_iculocale;
|
||||||
|
|
||||||
/* Some encodings are client only */
|
/* Some encodings are client only */
|
||||||
if (!PG_VALID_BE_ENCODING(encoding))
|
if (!PG_VALID_BE_ENCODING(encoding))
|
||||||
|
@ -49,6 +49,15 @@ if ($ENV{with_icu} eq 'yes')
|
|||||||
'--icu-locale=@colNumeric=lower', 'foobarX'
|
'--icu-locale=@colNumeric=lower', 'foobarX'
|
||||||
],
|
],
|
||||||
'fails for invalid ICU locale');
|
'fails for invalid ICU locale');
|
||||||
|
|
||||||
|
# additional node, which uses the icu provider
|
||||||
|
my $node2 = PostgreSQL::Test::Cluster->new('icu');
|
||||||
|
$node2->init(extra => ['--locale-provider=icu', '--icu-locale=en']);
|
||||||
|
$node2->start;
|
||||||
|
|
||||||
|
$node2->command_ok(
|
||||||
|
[ 'createdb', '-T', 'template0', '--locale-provider=libc', 'foobar55' ],
|
||||||
|
'create database with libc provider from template database with icu provider');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user