2021-05-07 16:56:14 +02:00
|
|
|
|
2023-01-02 21:00:37 +01:00
|
|
|
# Copyright (c) 2021-2023, PostgreSQL Global Development Group
|
2021-05-07 16:56:14 +02:00
|
|
|
|
2016-08-04 20:44:23 +02:00
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
2021-10-24 16:28:19 +02:00
|
|
|
use PostgreSQL::Test::Cluster;
|
|
|
|
use PostgreSQL::Test::Utils;
|
2022-02-11 20:54:44 +01:00
|
|
|
use Test::More;
|
2016-08-04 20:44:23 +02:00
|
|
|
|
|
|
|
# Tests to check connection string handling in utilities
|
|
|
|
|
2019-05-12 19:33:05 +02:00
|
|
|
# We're going to use byte sequences that aren't valid UTF-8 strings. Use
|
|
|
|
# LATIN1, which accepts any byte and has a conversion from each byte to UTF-8.
|
2016-08-04 20:44:23 +02:00
|
|
|
$ENV{LC_ALL} = 'C';
|
|
|
|
$ENV{PGCLIENTENCODING} = 'LATIN1';
|
|
|
|
|
|
|
|
# Create database names covering the range of LATIN1 characters and
|
|
|
|
# run the utilities' --all options over them.
|
|
|
|
my $dbname1 = generate_ascii_string(1, 63); # contains '='
|
|
|
|
my $dbname2 =
|
|
|
|
generate_ascii_string(67, 129); # skip 64-66 to keep length to 62
|
|
|
|
my $dbname3 = generate_ascii_string(130, 192);
|
|
|
|
my $dbname4 = generate_ascii_string(193, 255);
|
|
|
|
|
2021-10-24 16:28:19 +02:00
|
|
|
my $node = PostgreSQL::Test::Cluster->new('main');
|
2016-08-04 20:44:23 +02:00
|
|
|
$node->init(extra => [ '--locale=C', '--encoding=LATIN1' ]);
|
|
|
|
$node->start;
|
|
|
|
|
|
|
|
foreach my $dbname ($dbname1, $dbname2, $dbname3, $dbname4, 'CamelCase')
|
|
|
|
{
|
|
|
|
$node->run_log([ 'createdb', $dbname ]);
|
|
|
|
}
|
|
|
|
|
|
|
|
$node->command_ok(
|
|
|
|
[qw(vacuumdb --all --echo --analyze-only)],
|
|
|
|
'vacuumdb --all with unusual database names');
|
|
|
|
$node->command_ok([qw(reindexdb --all --echo)],
|
|
|
|
'reindexdb --all with unusual database names');
|
|
|
|
$node->command_ok(
|
|
|
|
[qw(clusterdb --all --echo --verbose)],
|
|
|
|
'clusterdb --all with unusual database names');
|
2022-02-11 20:54:44 +01:00
|
|
|
|
|
|
|
done_testing();
|