2 # Copyright (c) 2021-2025, PostgreSQL Global Development Group
5 use warnings FATAL
=> 'all';
7 use PostgreSQL
::Test
::Cluster
;
10 my $node = PostgreSQL
::Test
::Cluster
->new('main');
14 $ENV{PGOPTIONS
} = '--client-min-messages=WARNING';
16 $node->safe_psql('postgres',
17 'CREATE TABLE test1 (a int); CREATE INDEX test1x ON test1 (a);');
18 $node->safe_psql('template1',
19 'CREATE TABLE test1 (a int); CREATE INDEX test1x ON test1 (a);');
20 $node->issues_sql_like(
21 [ 'reindexdb', '--all' ],
22 qr/statement: REINDEX.*statement: REINDEX/s,
23 'reindex all databases');
24 $node->issues_sql_like(
25 [ 'reindexdb', '--all', '--system' ],
26 qr/statement: REINDEX SYSTEM postgres/s,
27 'reindex system catalogs in all databases');
28 $node->issues_sql_like(
29 [ 'reindexdb', '--all', '--schema' => 'public' ],
30 qr/statement: REINDEX SCHEMA public/s,
31 'reindex schema in all databases');
32 $node->issues_sql_like(
33 [ 'reindexdb', '--all', '--index' => 'test1x' ],
34 qr/statement: REINDEX INDEX public\.test1x/s,
35 'reindex index in all databases');
36 $node->issues_sql_like(
37 [ 'reindexdb', '--all', '--table' => 'test1' ],
38 qr/statement: REINDEX TABLE public\.test1/s,
39 'reindex table in all databases');
43 CREATE DATABASE regression_invalid
;
44 UPDATE pg_database SET datconnlimit
= -2 WHERE datname
= 'regression_invalid';
46 $node->command_ok([ 'reindexdb', '--all' ],
47 'invalid database not targeted by reindexdb --all');
49 # Doesn't quite belong here, but don't want to waste time by creating an
50 # invalid database in 090_reindexdb.pl as well.
51 $node->command_fails_like(
52 [ 'reindexdb', '--dbname' => 'regression_invalid' ],
53 qr/FATAL: cannot connect to invalid database "regression_invalid"/,
54 'reindexdb cannot target invalid database');